CentOS 7とSambaでWindows用ファイルサーバーを設定する。古いサーバーの有効利用に最適

2019/07/12 CentOS, Linux, Samba, サーバー構築

centos-samba-top2
今回の記事では以前のCentOSに関する記事

で構築したCentOSのサーバー環境に、オープンソースのファイル共有用ソフトウェアであるSambaをインストールしてWindows向けのファイルサーバーとして設定してみます。

スポンサーリンク

老朽化やリプレースで 利用しなくなったPC、サーバーなどがあればその有効利用としてsambaを使ったWindows向けファイルサーバーを作ってみては如何でしょうか。 高機能なサーバースペックが要求されるWindows Server系のOSとは違い(Server Coreという軽量なCLIベースの構成も可能ですが、余り利用されていないのが実情です)、 LinuxでSambaを動作させるには低スペックのPC(もしくはサーバー)で問題ありません。  本記事ではインストールと基本的な設定をメインに記載していますが、アクセス制御などを行いたい場合には別の記事

で詳しい設定を紹介しています。
既にWindowsドメインを運用されている環境では、SambaサーバーをActive Directoryに参加させる手順を紹介した記事

も併せて参考にしていただければ幸いです。
※注意 CentOSのベースレポジトリにあるSamba4のパッケージはドメインコントローラーになることができないなど、一部の機能が制限されています。 Windowsドメイン環境を利用したい場合は、Sambaをソースコードからインストールする、若しくはCentOSではないディストリビューション(例えばUbuntu Server)を利用することをお勧めします。 通常のファイル共有を利用する、ファイルサーバーやWindowsドメインのメンバーになるメンバーサーバー機能はCentOSでも利用に制限はありません。
Sambaをソースコードからコンパイル・インストールして、Windowsドメイン環境を構築する手順は

で紹介しています。Sambaでのドメイン環境構築に興味がある場合は、参考にしていただければ幸いです。

Sambaを利用したファイルサーバーを構築することで、Linuxだけでなく、Windowsのファイル共有についても挙動や仕組みの勉強になります。スモールビジネス向けにはクライアントアクセスライセンスも不要で、安価に運用できるメリットがあります。(しっかりとバックアップは取得してくださいね)
勿論、ユーザー数の多い環境でも、バックアップを行うことで、業務向けとして利用することもできます。また逆に既存サーバーのバックアップ用としてSambaのファイルサーバーを利用することも良いと思います。
 2019年6月現在でCentOSのベースレポジトリに含まれるSambaパッケージは4.8.3-4.el7になっていますが、同じ手順で構築ができることを確認しております。 

1.全体の構成図とホスト名の設定

本記事の構成図は以下のような形を想定しています。
centos-samba-map
この構成図を元に作業手順を進めていきます。
まずはシステム(OS)に対して、任意のホスト名を設定します。 ここで設定するホスト名はファイルサーバー名になりますので、運用を考えたホスト名を設定することをお勧めします。 ホスト名の設定には nmcliコマンドを以下のように実行します。ここではホスト名としてfsを設定します。(実際には、環境に合わせたホスト名を指定してください。)

エラーが出力されなければ、コマンドは正常に完了しています。設定パラメータの確認はhostnameコマンドを利用します。オプション無しで、コマンドを実行すると、設定値が表示されます。

設定値としてnmcliコマンドで設定したホスト名が表示されれば、ホスト名の設定確認は完了です。

2.sambaパッケージの確認

ファイルサーバーを構築するのに利用するアプリケーションは”samba”というパッケージ名になります。sambaパッケージをインストールする前にパッケージの詳細を確認します。

2-1.samba関連パッケージリストの確認

先ずはCentOSに含まれるsambaと名前の付くパッケージのリストを確認します。パッケージリストの確認はyum searchコマンドを実行します。

上記の出力結果からわかるように、sambaの名前の付くパッケージは複数あります。この中でファイルサーバー構築に、最低限インストールが必要になるパッケージは

  • samba.x86_64 : Server and Client software to interoperate with Windows machines
  • samba-common.noarch : Files used by both Samba servers and clients

になります。上記2つのパッケージについて詳細を確認します。

2-2.sambaパッケージ群の詳細を確認

インストール前にパッケージの内容に間違いないか、念のためにsambaのパッケージ詳細を確認します。

表示された説明からこの2パッケージがsambaでのファイルサーバー構築に必要であることが確認できましたので、この2パッケージをインストールします。

3.sambaパッケージのインストール

本章では項目2.で確認したSambaに関するパッケージをyumコマンドでインストールする手順を記載していきます。

3-1.yum installコマンドによるsambaのインストール

sambaパッケージは“yum install”コマンドでインストールすることができます。項目2-1.で必要な2つのパッケージが確認できましたので、以下のコマンドでインストールします。

上記ではyumコマンドに-yオプションを付けることでインストール時の確認応答を省いています。パッケージを複数インストールする場合はスペースを入れてパッケージ名を列記します。コマンドを実行すると、以下のようにインストールが開始されます。

エラーの出力がなく”完了しました!”と表示されればSambaは正常にインストールされています。

3-2.インストール後の確認

Sambaがインストールされたことを確認します。インストールされているパッケージはyum listコマンドで確認できます。以下のように実行することで、sambaパッケージがインストールされていることを確認します。

出力結果は以下のようになります。

続いてsambaがインストールされた場所を確認します。インストールされた場所(パス)を確認するためにはwhichコマンドを利用します。
 Sambaのプログラム本体はsmbdnmbdという二つから構成されています。 以下のように実行することでインストールパスを確認できます。

この結果からsmbdとnmbdが/usr/sbin以下にインストールされたことが確認できます。これでSambaのインストールと確認が終了しました。

3-3.Samba起動の確認

ここまででSambaのインストールと確認が完了しましたので、続いてインストールしたSambaが起動することを確認します。 CentOSでは7系からsystemctlコマンドでサービスの起動・停止を行います。 Sambaは以下のように実行することで起動できます。

エラーが出力されなければ、Sambaは起動しています。
続いてサービスの状態を確認します。systemctl statusコマンドを実行することで、起動したサービスの状態について、詳細な情報を取得することができます。
以下が実行例です。

上記では分かり難いかもしれませんが、黒丸(●)の部分が正常な起動状態の場合、緑色で表示されます。smbd、nmbd共にActive項目に(running)と表示されていますので、起動されていることが確認できます。
また、稼働しているプロセスを表示するpsコマンドでもsmbdとnmbdが起動していることを確認できます。以下のように実行します。
smbdプロセス

nmbdプロセス

以上の結果から、Sambaが正常に起動することが確認できました。

3-4.Samba自動起動の設定

サーバーの再起動や停止の復旧時にsambaが自動的に起動するように設定します。サービスの自動起動を設定するにもsystemctlコマンドを利用します。自動起動は以下のようにsystemctl enableコマンドを実行します。

エラーが出力されなければ、自動起動は設定が完了しています。
続いて自動起動が設定されたことを確認します。こちらもsystemctlコマンドから確認できます。以下のように実行します。

実行結果として “enabled”と表示されれば自動起動の設定は完了です。

4.firewallの許可設定

本記事はSambaの導入環境として、記事

の項目6.で記載したfirewall設定(firewalldを利用した場合)を行っていることを前提としています。 このfirewall設定の場合、Sambaサービスへの接続許可がされていないため、WindowsPCでアクセスができません。 その為、以下のようにfirewall-cmdコマンドを利用してのSambaの接続許可を追加します。

4-1.現状のファイアウォール設定を確認

先ず、現状の設定(デフォルト)を確認していきます。 Samba接続は、全てのユーザーに開放するため、インターフェイスに適用されているゾーン”public”ゾーンの設定を確認します。 

上記のようにsshは許可されていますが、Sambaは許可されていません。

4-2.sambaサービスの接続許可を追加

項目4-1.で確認した”public”ゾーンの接続許可サービスにsambaを追加します。追加は以下のように行います。

”success”と表示されれば設定は完了です。設定を反映するためにファイアウォールの設定を読み込みます。

”success”と表示されれば設定の読み込みは完了です。

設定した内容が正常に反映されているかを確認します。確認は以下のように行います。

”services”の項目にsambaが追加されていることが確認できれば、確認は完了です。
ここまででファイアウォールの接続許可は完了しました。

5.Sambaの基本的な設定

項目4.の手順までで、sambaパッケージの導入とfirewallの設定までが完了しました。 samba自体はデフォルト設定のままで、このままだと利用ができません。本記事では運用するにあたって最低限、必要になる設定を行います。 設定の前提は以下の通りです。

  • Active Directoryは利用せず、WORKGROUPで動作させる(ワークグループ名:WORKGROUP)
  • 各ユーザー毎のホームディレクトリ[homes]と、全てのユーザーがアクセスできる[share]共有フォルダを設定
  • プリンタサーバー機能は利用しない
  • ファイルサーバー名は”fs”
  • パスワード形式はtdbsamとし、サーバーに情報を保存(Sambaが管理する認証情報でユーザ単位に認証)
  • Sambaサーバー上に作成したユーザーのみ共有フォルダへアクセスできる。(ゲスト接続NG)

この条件に合わせて設定を行っていきます。

5-1.smb.confの変更

Sambaの設定は/etc/samba/以下にあるsmb.confで行います。 smb.confは設定項目が複数のセクションに分割されています。 各セクションの設定内容は以下の通りです。

スポンサーリンク

  • [global] sambaの挙動に関する基本的なパラメーター設定
  • [homes] ユーザのホームディレクトリの共有設定
  • [printers] サーバに接続されたプリンタの設定
  • [共有名] 個別の共有設定

globalセクションに設定した内容はSamba全体に適用されます。ファイル共有にも同じ設定が適用されます。
globalセクションの設定、適用範囲
smb.conf_global
ファイル共有セクションに設定した内容は、設定したファイル共有のみに適用されます。
ファイル共有セクションの設定、適用範囲
smb.conf_share
上記セクションについて、設定を行います。
smb.confの設定変更前に、既存のファイルをバックアップしておきます。具体的には以下の手順でコピーを行います。

バックアップの完了後、エディタで設定ファイルを開いて変更を行います。本環境ではOSの標準的なエディタである、viエディタを利用しています。

5-1-1.globalセクションの設定変更

設定ファイルに含まれるglobalセクションを変更します。globalセクションはSambaの挙動に関する基本的なパラメーターを指定するセクションになります。
デフォルトの設定は以下のようになっています。

このセクションを

に変更します。変更したパラメーターは以下のような内容になります。

  • workgroup = WORKGROUP <=任意のワークグループ名
  • server string = SAMBA SERVER Version %v <=ネットワークコンピュータ一で詳細表示した時、表示される
  • netbios name = fs <=ファイルサーバー名
  • dos charset = CP932 <=WINDOWS側の文字コード
  • wins support = yes <=WINSサポート、任意
  • load printers = no <=プリンタ共有機能の無効化
  • disable spoolss = yes <=プリンタ共有機能の無効化

※実際には運用に合わせて変更してください。

5-1-2.shareセクションの設定変更

デフォルトの設定ファイルに含まれない[share]セクションを追加します。このセクションは共有フォルダの設定になります。share共有フォルダ以外にも共有フォルダを作成するときには、このセクションを別名で作成することになります。ここではhomesセクションの下に以下の設定を追加しています。

変更したパラメーターは以下のような内容になります。

  • comment = Share Folder for All Users <=任意のコメント
  • path = /home/share/ <=共有フォルダのパス
  • browsable = yes <=フォルダを表示させる
  • read only = no <=共有フォルダを読み取り専用にしない

実際には運用に合わせて変更してください。

5-1-3.printerセクションの設定変更

プリンタサーバ機能を利用する場合に設定するセクションですが、今回は該当機能を利用しないため、設定をコメントアウトします。以下のように変更しました。

これで設定の変更は完了です。全てのセクションを変更した後のsmb.confは以下のようになっています。

これでsmb.confの設定は完了です。問題なければ変更したファイルを保存します。

5-2.設定ファイルの確認

smb.confに設定できる内容は多岐にわたるため、設定ファイル自体に間違いがないかを確認するコマンドtestparmが用意されています。testparmコマンドで設定ファイルをチェックします。以下、実行例になります。

エラーが出力されなければ、設定ファイルの確認は完了です。

6.共有用ディレクトリの作成

共有フォルダを指定したパスに 実際のディレクトリがないとアクセスできないため、事前に作成します。 ここでは[Share]セクションで指定した”path = /home/share/”にディレクトリを作成します。以下のように作成しました。

shareディレクトリの作成後に所有者の変更とパーミッションを設定します。以下のように実行します。

設定変更後に、所有者とパーミッションを確認します。

上記のように777とnobodyが設定されていれば、共有用ディレクトリの作成は完了です。

7.Sambaアクセス用ユーザー追加

今回のファイルサーバーでは、ゲストアカウントはアクセスできないため、アクセス用にユーザーの作成が必要になります。ユーザーはLinux側で作成した後に、Sambaに用意されている“pdbedit”コマンドでファイルサーバー用に設定を行います。ここでは”rem-test01”というユーザーを作成してみます。

7-1.Linux側ユーザーの作成

通常のLinuxユーザー(POSIX)追加と同じくuseraddコマンドで作成後に、passwdコマンドでパスワードを設定します。

7-2.Windows側のユーザー属性追加

項目7-1.で作成したLinuxユーザー(rem-test01)にpdbeditコマンドでWindows属性を追加します。pdbeditは以下のように実行します。

-aオプションは新規に追加する際に利用します。標準で指定が必要です。-uオプションはユーザー名を指定します。-fはフルネームを指定します。-fは任意のオプションです。パスワードについてはLinux側ユーザーに設定したものと同じものを指定します。実行すると、以下のようにWindowsへアクセスする際の属性が追加されます。

エラーの出力がなければ、ユーザーの作成は完了です。
作成したユーザーはpdbeditコマンドに-Lオプションを付けることで確認できます。以下が実行例です。

※-Lオプションと-vオプションを付けるとユーザーの詳細な情報が表示されます。

ハッシュされたパスワードとユーザー情報を表示するには、-Lと-wオプションを付けてコマンドを実行します。

上記のように作成したユーザーの情報が表示されれば、ユーザーの確認は完了です。

8.Sambaの再起動

ここまででSambaの基本的な設定は完了しました。変更した設定を反映するためにsmbdとnmbdを再起動します。systemctlを以下のように実行します。

エラーが出力されなければ、smbdとnmbdは正常に再起動しています。
再起動後にsmbdとnmbdのstatusを確認します。

上記の出力結果から、smbdとnmbdは正常に再起動していることが確認できます。これで設定の反映は完了です。引き続き、ファイルサーバーとしての動作確認を行います。

9.接続確認

ここまででSambaの基本的なセットアップが完了しましたので、本章では実際にWindowsのPCから接続テストを行います。テストを実行するWindowsPCのOSバージョンはWindows10 Professional(Build 1709)です。
cent-samba-9

9-1.コンピューター名へのpingテスト

コマンドプロンプトからSambaに設定したファイルサーバーのコンピューター名である”fs”に対してpingを実行し、応答があることを確認します。以下が実行例です。
cent-samba-9-1
応答が無い場合、sambaサーバー側のファイアウォール設定や、smbd、nmbdのサービスが起動しているか、設定ファイルのサーバー名パラメーターなどを見直して下さい。ここでは応答があったという前提で先へ進めます。

9-2.コンピューター名での接続テスト

pingの応答が確認できたら、次にコンピューター名を指定してSambaサーバーへ接続できることを確認します。[Windowsメニュー]を右クリックして、表示されたメニューから「ファイル名を指定して実行」を選択します。
表示されたダイアログの[名前]に”\\fs”と入力して[OK]をクリックします。
cent-samba-9-2
[ネットワーク資格情報の入力]ダイアログが開きます。ダイアログ中の入力項目には以下を入力します。
cent-samba-9-2-2

  • ユーザー名:Sambaサーバー上で作成したユーザー名(rem-test01)
  • パスワード:作成したユーザーのパスワード

を入力して、[OK]をクリックします。

入力した情報が正しい場合、エクスプローラーに設定した共有フォルダが表示されます。
cent-samba-9-2-3
Share共有フォルダにテスト用のフォルダを作成しました。正常に作成できます。
cent-samba-9-2-4
ユーザーのホームフォルダ(rem-test01共有)にも同じく書き込みができることを確認します。
cent-samba-9-2-5-2
正常に書き込みができました。
このフォルダはログインしたユーザーのホームディレクトリ名になりますので、例えばrem-test02ユーザーでSambaサーバーへログインした場合は、rem-test02共有フォルダが表示されます。
これで接続テストまで完了しました。

10.まとめ

Sambaサーバーは設定方法を紹介した単純なファイルサーバーとしての設定以外に、Active Directory同等の機能をもつ認証機能や、ACLを利用したアクセス制御など、高度な機能があります。
そのトレードオフとして、複数に渡る設定があり、しっかり利用することを考えるとWindowsとLinuxにかなり精通している必要があります。まずは本記事で紹介した基本的なファイルサーバーを設定して、もっと突っ込んだ利用をしたいと思ったときに、更に詳細な機能を調べて、少しづつ実装していくことをお勧めします。運用を進めるとファイル共有でアクセス制御を行いたいという要望が出てくるかと思います。
そのような場合にはアクセス制御を設定する手順をまとめた記事

を参照下さい。
またWindowsドメインを運用されている環境があれば、SambaサーバーをActive Directoryに参加させる手順を紹介した記事

も併せて参考にしていただければ幸いです。
弊社では3000アカウントのSambaサーバーを構築した実績もあります。それだけのポテンシャルがsambaというソフトウェアにはあると思います。是非、設定してみて下さい。

関連する記事


Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  • スポンサーリンク