CentOS 7とSambaでWindows用ファイルサーバーを設定する。古いサーバーの有効利用に最適
2019/07/12 CentOS, Linux, Samba, サーバー構築

今回の記事では以前の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.全体の構成図とホスト名の設定
本記事の構成図は以下のような形を想定しています。

この構成図を元に作業手順を進めていきます。
まずはシステム(OS)に対して、任意のホスト名を設定します。 ここで設定するホスト名はファイルサーバー名になりますので、運用を考えたホスト名を設定することをお勧めします。 ホスト名の設定には nmcliコマンドを以下のように実行します。ここではホスト名としてfsを設定します。(実際には、環境に合わせたホスト名を指定してください。)
| # nmcli general hostname fs |
エラーが出力されなければ、コマンドは正常に完了しています。設定パラメータの確認はhostnameコマンドを利用します。オプション無しで、コマンドを実行すると、設定値が表示されます。
設定値としてnmcliコマンドで設定したホスト名が表示されれば、ホスト名の設定確認は完了です。
2.sambaパッケージの確認
ファイルサーバーを構築するのに利用するアプリケーションは”samba”というパッケージ名になります。sambaパッケージをインストールする前にパッケージの詳細を確認します。
2-1.samba関連パッケージリストの確認
先ずはCentOSに含まれるsambaと名前の付くパッケージのリストを確認します。パッケージリストの確認はyum searchコマンドを実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | $ yum search samba 読み込んだプラグイン:fastestmirror Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jp =========================== N/S matched: samba ================================ kdenetwork-fileshare-samba.x86_64 : Share files via samba pcp-pmda-samba.x86_64 : Performance Co-Pilot (PCP) metrics for Samba samba-client.x86_64 : Samba client programs samba-client-libs.i686 : Samba client libraries samba-client-libs.x86_64 : Samba client libraries samba-common.noarch : Files used by both Samba servers and clients samba-common-libs.x86_64 : Libraries used by both Samba servers and clients samba-common-tools.x86_64 : Tools for Samba servers and clients samba-dc.x86_64 : Samba AD Domain Controller samba-dc-libs.x86_64 : Samba AD Domain Controller Libraries samba-devel.i686 : Developer tools for Samba libraries samba-devel.x86_64 : Developer tools for Samba libraries samba-krb5-printing.x86_64 : Samba CUPS backend for printing with Kerberos samba-libs.i686 : Samba libraries samba-libs.x86_64 : Samba libraries samba-python.x86_64 : Samba Python libraries samba-test.x86_64 : Testing tools for Samba servers and clients samba-test-libs.i686 : Libraries need by the testing tools for Samba servers and clients samba-test-libs.x86_64 : Libraries need by the testing tools for Samba servers and clients samba-vfs-glusterfs.x86_64 : Samba VFS module for GlusterFS samba-winbind.x86_64 : Samba winbind samba-winbind-clients.x86_64 : Samba winbind clients samba-winbind-krb5-locator.x86_64 : Samba winbind krb5 locator samba-winbind-modules.i686 : Samba winbind modules samba-winbind-modules.x86_64 : Samba winbind modules ctdb.x86_64 : A Clustered Database based on Samba's Trivial Database (TDB) python-smbc.x86_64 : Python bindings for libsmbclient API from Samba samba.x86_64 : Server and Client software to interoperate with Windows machines samba-pidl.noarch : Perl IDL compiler Name and summary matches only, use "search all" for everything. |
上記の出力結果からわかるように、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のパッケージ詳細を確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | $ yum info samba samba-common 読み込んだプラグイン:fastestmirror Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jp インストール済みパッケージ 名前 : samba アーキテクチャー : x86_64 バージョン : 4.6.2 リリース : 12.el7_4 容量 : 1.8 M リポジトリー : installed 提供元リポジトリー : updates 要約 : Server and Client software to interoperate with Windows machines URL : http://www.samba.org/ ライセンス : GPLv3+ and LGPLv3+ 説明 : Samba is the standard Windows interoperability suite of programs for Linux and Unix. 名前 : samba-common アーキテクチャー : noarch バージョン : 4.6.2 リリース : 12.el7_4 容量 : 124 k リポジトリー : installed 提供元リポジトリー : updates 要約 : Files used by both Samba servers and clients URL : http://www.samba.org/ ライセンス : GPLv3+ and LGPLv3+ 説明 : samba-common provides files necessary for both the server and client packages of Samba. |
表示された説明からこの2パッケージがsambaでのファイルサーバー構築に必要であることが確認できましたので、この2パッケージをインストールします。
Linuxの無料相談実施中! Linuxサーバーの導入や入れ替え、運用コストなどでお悩みの場合には、エンジニアにご相談頂いた方が問題が早く解決するかもしれません。
ご相談は無料ですのでお気軽にレムシステムまでお問い合わせください。
3.sambaパッケージのインストール
本章では項目2.で確認したSambaに関するパッケージをyumコマンドでインストールする手順を記載していきます。
3-1.yum installコマンドによるsambaのインストール
sambaパッケージは“yum install”コマンドでインストールすることができます。項目2-1.で必要な2つのパッケージが確認できましたので、以下のコマンドでインストールします。
| # yum -y install samba samba-common |
上記ではyumコマンドに-yオプションを付けることでインストール時の確認応答を省いています。パッケージを複数インストールする場合はスペースを入れてパッケージ名を列記します。コマンドを実行すると、以下のようにインストールが開始されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | 読み込んだプラグイン:fastestmirror base | 3.6 kB 00:00:00 extras | 3.4 kB 00:00:00 updates | 3.4 kB 00:00:00 Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jp 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ samba.x86_64 0:4.6.2-12.el7_4 を インストール (割愛) ---> パッケージ samba-common.noarch 0:4.6.2-12.el7_4 を インストール --> トランザクションの確認を実行しています。 ---> パッケージ libwbclient.x86_64 0:4.6.2-12.el7_4 を インストール ---> パッケージ samba-client-libs.x86_64 0:4.6.2-12.el7_4 を インストール ---> パッケージ samba-common-libs.x86_64 0:4.6.2-12.el7_4 を インストール ---> パッケージ samba-common-tools.x86_64 0:4.6.2-12.el7_4 を インストール ---> パッケージ samba-libs.x86_64 0:4.6.2-12.el7_4 を インストール --> 依存性解決を終了しました。 依存性を解決しました =========================================================================================== Package アーキテクチャー バージョン リポジトリー 容量 ========================================================================================== インストール中: samba x86_64 4.6.2-12.el7_4 updates 633 k samba-common noarch 4.6.2-12.el7_4 updates 197 k 依存性関連でのインストールをします: libwbclient x86_64 4.6.2-12.el7_4 updates 104 k samba-client-libs x86_64 4.6.2-12.el7_4 updates 4.7 M samba-common-libs x86_64 4.6.2-12.el7_4 updates 164 k samba-common-tools x86_64 4.6.2-12.el7_4 updates 456 k samba-libs x86_64 4.6.2-12.el7_4 updates 265 k トランザクションの要約 ========================================================================================== インストール 2 パッケージ (+5 個の依存関係のパッケージ) 総ダウンロード容量: 6.5 M インストール容量: 23 M Downloading packages: (1/7): libwbclient-4.6.2-12.el7_4.x86_64.rpm | 104 kB 00:00:00 (2/7): samba-4.6.2-12.el7_4.x86_64.rpm | 633 kB 00:00:00 (3/7): samba-common-tools-4.6.2-12.el7_4.x86_64.rpm | 456 kB 00:00:00 (4/7): samba-common-libs-4.6.2-12.el7_4.x86_64.rpm | 164 kB 00:00:00 (5/7): samba-libs-4.6.2-12.el7_4.x86_64.rpm | 265 kB 00:00:00 (6/7): samba-client-libs-4.6.2-12.el7_4.x86_64.rpm | 4.7 MB 00:00:00 (7/7): samba-common-4.6.2-12.el7_4.noarch.rpm | 197 kB 00:00:03 ------------------------------------------------------------------------------------------- 合計 2.0 MB/s | 6.5 MB 00:00:03 Running transaction check Running transaction test Transaction test succeeded Running transaction インストール中 : samba-common-4.6.2-12.el7_4.noarch 1/7 インストール中 : libwbclient-4.6.2-12.el7_4.x86_64 2/7 インストール中 : samba-client-libs-4.6.2-12.el7_4.x86_64 3/7 インストール中 : samba-common-libs-4.6.2-12.el7_4.x86_64 4/7 インストール中 : samba-libs-4.6.2-12.el7_4.x86_64 5/7 インストール中 : samba-common-tools-4.6.2-12.el7_4.x86_64 6/7 インストール中 : samba-4.6.2-12.el7_4.x86_64 7/7 検証中 : samba-common-libs-4.6.2-12.el7_4.x86_64 1/7 検証中 : samba-common-tools-4.6.2-12.el7_4.x86_64 2/7 検証中 : samba-common-4.6.2-12.el7_4.noarch 3/7 検証中 : libwbclient-4.6.2-12.el7_4.x86_64 4/7 検証中 : samba-libs-4.6.2-12.el7_4.x86_64 5/7 検証中 : samba-client-libs-4.6.2-12.el7_4.x86_64 6/7 検証中 : samba-4.6.2-12.el7_4.x86_64 7/7 インストール: samba.x86_64 0:4.6.2-12.el7_4 samba-common.noarch 0:4.6.2-12.el7_4 依存性関連をインストールしました: libwbclient.x86_64 0:4.6.2-12.el7_4 samba-client-libs.x86_64 0:4.6.2-12.el7_4 samba-common-libs.x86_64 0:4.6.2-12.el7_4 samba-common-tools.x86_64 0:4.6.2-12.el7_4 samba-libs.x86_64 0:4.6.2-12.el7_4 完了しました! |
エラーの出力がなく”完了しました!”と表示されればSambaは正常にインストールされています。
3-2.インストール後の確認
Sambaがインストールされたことを確認します。インストールされているパッケージはyum listコマンドで確認できます。以下のように実行することで、sambaパッケージがインストールされていることを確認します。
| $ yum list installed samba* |
出力結果は以下のようになります。
| 読み込んだプラグイン:fastestmirror Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jp インストール済みパッケージ samba.x86_64 4.6.2-12.el7_4 @updates samba-client-libs.x86_64 4.6.2-12.el7_4 @updates samba-common.noarch 4.6.2-12.el7_4 @updates samba-common-libs.x86_64 4.6.2-12.el7_4 @updates samba-common-tools.x86_64 4.6.2-12.el7_4 @updates samba-libs.x86_64 4.6.2-12.el7_4 @updates |
続いてsambaがインストールされた場所を確認します。インストールされた場所(パス)を確認するためにはwhichコマンドを利用します。
Sambaのプログラム本体はsmbdとnmbdという二つから構成されています。 以下のように実行することでインストールパスを確認できます。
| $ which smbd nmbd /usr/sbin/smbd /usr/sbin/nmbd |
この結果からsmbdとnmbdが/usr/sbin以下にインストールされたことが確認できます。これでSambaのインストールと確認が終了しました。
3-3.Samba起動の確認
ここまででSambaのインストールと確認が完了しましたので、続いてインストールしたSambaが起動することを確認します。 CentOSでは7系からsystemctlコマンドでサービスの起動・停止を行います。 Sambaは以下のように実行することで起動できます。
| # systemctl start smb nmb |
エラーが出力されなければ、Sambaは起動しています。
続いてサービスの状態を確認します。systemctl statusコマンドを実行することで、起動したサービスの状態について、詳細な情報を取得することができます。
以下が実行例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | $ systemctl status smb nmb ● smb.service - Samba SMB Daemon Loaded: loaded (/usr/lib/systemd/system/smb.service; disabled; vendor preset: disabled) Active: active (running) since 水 2018-05-09 16:23:56 JST; 57s ago Main PID: 12059 (smbd) Status: "smbd: ready to serve connections..." CGroup: /system.slice/smb.service tq12059 /usr/sbin/smbd tq12060 /usr/sbin/smbd tq12061 /usr/sbin/smbd mq12062 /usr/sbin/smbd (割愛) ● nmb.service - Samba NMB Daemon Loaded: loaded (/usr/lib/systemd/system/nmb.service; disabled; vendor preset: disabled) Active: active (running) since 水 2018-05-09 16:23:55 JST; 57s ago Main PID: 12057 (nmbd) Status: "nmbd: ready to serve connections..." CGroup: /system.slice/nmb.service mq12057 /usr/sbin/nmbd (割愛) Hint: Some lines were ellipsized, use -l to show in full. |
上記では分かり難いかもしれませんが、黒丸(●)の部分が正常な起動状態の場合、緑色で表示されます。smbd、nmbd共にActive項目に(running)と表示されていますので、起動されていることが確認できます。
また、稼働しているプロセスを表示するpsコマンドでもsmbdとnmbdが起動していることを確認できます。以下のように実行します。
smbdプロセス
| $ ps -aux | grep smbd root 1964 0.0 0.6 407664 6300 ? Ss 16:43 0:00 /usr/sbin/smbd root 1965 0.0 0.2 403376 2948 ? S 16:43 0:00 /usr/sbin/smbd root 1966 0.0 0.2 403368 2624 ? S 16:43 0:00 /usr/sbin/smbd root 1967 0.0 0.3 407664 3312 ? S 16:43 0:00 /usr/sbin/smbd |
nmbdプロセス
| $ ps -aux | grep nmbd root 2958 0.0 0.3 333788 3168 ? Ss 5月08 0:11 /usr/sbin/nmbd root 2959 0.0 0.1 333336 1972 ? S 5月08 0:00 /usr/sbin/nmbd |
以上の結果から、Sambaが正常に起動することが確認できました。
3-4.Samba自動起動の設定
サーバーの再起動や停止の復旧時にsambaが自動的に起動するように設定します。サービスの自動起動を設定するにもsystemctlコマンドを利用します。自動起動は以下のようにsystemctl enableコマンドを実行します。
| # systemctl enable smb nmb Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service. Created symlink from /etc/systemd/system/multi-user.target.wants/nmb.service to /usr/lib/systemd/system/nmb.service. |
エラーが出力されなければ、自動起動は設定が完了しています。
続いて自動起動が設定されたことを確認します。こちらもsystemctlコマンドから確認できます。以下のように実行します。
| systemctl is-enabled smb nmb enabled enabled |
実行結果として “enabled”と表示されれば自動起動の設定は完了です。
4.firewallの許可設定
本記事はSambaの導入環境として、記事
の項目6.で記載したfirewall設定(firewalldを利用した場合)を行っていることを前提としています。 このfirewall設定の場合、Sambaサービスへの接続許可がされていないため、WindowsPCでアクセスができません。 その為、以下のようにfirewall-cmdコマンドを利用してのSambaの接続許可を追加します。
4-1.現状のファイアウォール設定を確認
先ず、現状の設定(デフォルト)を確認していきます。 Samba接続は、全てのユーザーに開放するため、インターフェイスに適用されているゾーン”public”ゾーンの設定を確認します。
| # firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens33 sources: services: dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: |
上記のようにsshは許可されていますが、Sambaは許可されていません。
4-2.sambaサービスの接続許可を追加
項目4-1.で確認した”public”ゾーンの接続許可サービスにsambaを追加します。追加は以下のように行います。
| # firewall-cmd --add-service=samba --permanent success |
”success”と表示されれば設定は完了です。設定を反映するためにファイアウォールの設定を読み込みます。
| # firewall-cmd --reload success |
”success”と表示されれば設定の読み込みは完了です。
設定した内容が正常に反映されているかを確認します。確認は以下のように行います。
| # firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens33 sources: services: dhcpv6-client ssh samba ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: |
”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の設定変更前に、既存のファイルをバックアップしておきます。具体的には以下の手順でコピーを行います。
| # cd /etc/samba # ls lmhosts smb.conf smb.conf.example # cp -p smb.conf smb.conf.org |
バックアップの完了後、エディタで設定ファイルを開いて変更を行います。本環境ではOSの標準的なエディタである、viエディタを利用しています。
5-1-1.globalセクションの設定変更
設定ファイルに含まれるglobalセクションを変更します。globalセクションはSambaの挙動に関する基本的なパラメーターを指定するセクションになります。
デフォルトの設定は以下のようになっています。
| [global] workgroup = SAMBA security = user passdb backend = tdbsam printing = cups printcap name = cups load printers = yes cups options = raw |
このセクションを
| [global] workgroup = WORKGROUP server string = SAMBA SERVER Version %v netbios name = fs security = user passdb backend = tdbsam dos charset = CP932 wins support = yes # printing = cups # printcap name = cups load printers = no disable spoolss = yes # cups options = raw |
に変更します。変更したパラメーターは以下のような内容になります。
- 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セクションの下に以下の設定を追加しています。
| [Share] comment = Share Folder for All Users path = /home/share/ browsable = yes read only = no |
変更したパラメーターは以下のような内容になります。
- comment = Share Folder for All Users <=任意のコメント
- path = /home/share/ <=共有フォルダのパス
- browsable = yes <=フォルダを表示させる
- read only = no <=共有フォルダを読み取り専用にしない
実際には運用に合わせて変更してください。
5-1-3.printerセクションの設定変更
プリンタサーバ機能を利用する場合に設定するセクションですが、今回は該当機能を利用しないため、設定をコメントアウトします。以下のように変更しました。
| #[printers] # comment = All Printers # path = /var/tmp # printable = Yes # create mask = 0600 # browseable = No #[print$] # comment = Printer Drivers # path = /var/lib/samba/drivers # write list = root # create mask = 0664 # directory mask = 0775 |
これで設定の変更は完了です。全てのセクションを変更した後のsmb.confは以下のようになっています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | # See smb.conf.example for a more detailed config file or # read the smb.conf manpage. # Run 'testparm' to verify the config is correct after # you modified it. [global] workgroup = WORKGROUP server string = SAMBA SERVER Version %v netbios name = fs security = user passdb backend = tdbsam dos charset = CP932 unix charset = UTF-8 wins support = yes # printing = cups # printcap name = cups load printers = no disable spoolss = yes # cups options = raw [homes] comment = Home Directories valid users = %S, %D%w%S browseable = No read only = No inherit acls = Yes [Share] comment = Share Folder for All Users path = /home/share/ browsable = yes read only = no #[printers] # comment = All Printers # path = /var/tmp # printable = Yes # create mask = 0600 # browseable = No #[print$] # comment = Printer Drivers # path = /var/lib/samba/drivers # write list = root # create mask = 0664 # directory mask = 0775 |
これでsmb.confの設定は完了です。問題なければ変更したファイルを保存します。
5-2.設定ファイルの確認
smb.confに設定できる内容は多岐にわたるため、設定ファイル自体に間違いがないかを確認するコマンドtestparmが用意されています。testparmコマンドで設定ファイルをチェックします。以下、実行例になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | # testparm Load smb config files from /etc/samba/smb.conf rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) Processing section "[homes]" Processing section "[Share]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions # Global parameters [global] dos charset = CP932 server string = SAMBA SERVER Version %v disable spoolss = Yes load printers = No security = USER wins support = Yes idmap config * : backend = tdb [homes] comment = Home Directories browseable = No inherit acls = Yes read only = No valid users = %S %D%w%S [Share] comment = Share Folder for All Users path = /home/share/ read only = No |
エラーが出力されなければ、設定ファイルの確認は完了です。
6.共有用ディレクトリの作成
共有フォルダを指定したパスに 実際のディレクトリがないとアクセスできないため、事前に作成します。 ここでは[Share]セクションで指定した”path = /home/share/”にディレクトリを作成します。以下のように作成しました。
shareディレクトリの作成後に所有者の変更とパーミッションを設定します。以下のように実行します。
| # chmod -R 0777 share # chown -R nobody:nobody share |
設定変更後に、所有者とパーミッションを確認します。
| $ ll drwxrwxrwx 3 nobody nobody 18 5月 8 17:38 share |
上記のように777とnobodyが設定されていれば、共有用ディレクトリの作成は完了です。
7.Sambaアクセス用ユーザー追加
今回のファイルサーバーでは、ゲストアカウントはアクセスできないため、アクセス用にユーザーの作成が必要になります。ユーザーはLinux側で作成した後に、Sambaに用意されている“pdbedit”コマンドでファイルサーバー用に設定を行います。ここでは”rem-test01”というユーザーを作成してみます。
7-1.Linux側ユーザーの作成
通常のLinuxユーザー(POSIX)追加と同じくuseraddコマンドで作成後に、passwdコマンドでパスワードを設定します。
| # useradd rem-test01 # passwd rem-test01 ユーザー rem-test01 のパスワードを変更。 新しいパスワード: <=任意のパスワード 新しいパスワードを再入力してください: <=同じパスワードを入力 passwd: すべての認証トークンが正しく更新できました。 |
7-2.Windows側のユーザー属性追加
項目7-1.で作成したLinuxユーザー(rem-test01)にpdbeditコマンドでWindows属性を追加します。pdbeditは以下のように実行します。
| # pdbedit -a -u rem-test01 -f "test user01" new password: <=passwdコマンドで設定したものと同じパスワードを入力 retype new password: <=確認用に再入力 |
-aオプションは新規に追加する際に利用します。標準で指定が必要です。-uオプションはユーザー名を指定します。-fはフルネームを指定します。-fは任意のオプションです。パスワードについてはLinux側ユーザーに設定したものと同じものを指定します。実行すると、以下のようにWindowsへアクセスする際の属性が追加されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | Unix username: rem-test01 NT username: Account Flags: [U ] User SID: S-1-5-21-1031608201-977784266-3040135008-1003 Primary Group SID: S-1-5-21-1031608201-977784266-3040135008-513 Full Name: test user01 Home Directory: \\fs\rem-test01 HomeDir Drive: Logon Script: Profile Path: \\fs\rem-test01\profile Domain: FS Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: 木, 07 2月 2036 00:06:39 JST Kickoff time: 木, 07 2月 2036 00:06:39 JST Password last set: 水, 09 5月 2018 11:46:48 JST Password can change: 水, 09 5月 2018 11:46:48 JST Password must change: never Last bad password : 0 Bad password count : 0 Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF |
エラーの出力がなければ、ユーザーの作成は完了です。
作成したユーザーはpdbeditコマンドに-Lオプションを付けることで確認できます。以下が実行例です。
| # pdbedit -L rem-test01:1004:test user01 |
※-Lオプションと-vオプションを付けるとユーザーの詳細な情報が表示されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | [root@fs ~]# pdbedit -L -v rem-test01 Unix username: rem-test01 NT username: Account Flags: [U ] User SID: S-1-5-21-1031608201-977784266-3040135008-1003 Primary Group SID: S-1-5-21-1031608201-977784266-3040135008-513 Full Name: test user01 Home Directory: \\fs\rem-test01 HomeDir Drive: Logon Script: Profile Path: \\fs\rem-test01\profile Domain: FS Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: 木, 07 2月 2036 00:06:39 JST Kickoff time: 木, 07 2月 2036 00:06:39 JST Password last set: 水, 09 5月 2018 11:46:48 JST Password can change: 水, 09 5月 2018 11:46:48 JST Password must change: never Last bad password : 0 Bad password count : 0 Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF |
ハッシュされたパスワードとユーザー情報を表示するには、-Lと-wオプションを付けてコマンドを実行します。
| # pdbedit -L -w rem-test01:1004:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:699******************5929:[U ]:LCT-5AF26118: |
上記のように作成したユーザーの情報が表示されれば、ユーザーの確認は完了です。
8.Sambaの再起動
ここまででSambaの基本的な設定は完了しました。変更した設定を反映するためにsmbdとnmbdを再起動します。systemctlを以下のように実行します。
| # systemctl restart smb nmb |
エラーが出力されなければ、smbdとnmbdは正常に再起動しています。
再起動後にsmbdとnmbdのstatusを確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # systemctl status smb nmb ● smb.service - Samba SMB Daemon Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled; vendor preset: disabled) Active: active (running) since 木 2018-05-10 10:57:59 JST; 1min 18s ago Main PID: 5586 (smbd) Status: "smbd: ready to serve connections..." CGroup: /system.slice/smb.service tq5586 /usr/sbin/smbd tq5587 /usr/sbin/smbd mq5588 /usr/sbin/smbd (割愛) ● nmb.service - Samba NMB Daemon Loaded: loaded (/usr/lib/systemd/system/nmb.service; enabled; vendor preset: disabled) Active: active (running) since 木 2018-05-10 10:57:59 JST; 1min 18s ago Main PID: 5582 (nmbd) Status: "nmbd: ready to serve connections..." CGroup: /system.slice/nmb.service tq5582 /usr/sbin/nmbd mq5584 /usr/sbin/nmbd (割愛) |
上記の出力結果から、smbdとnmbdは正常に再起動していることが確認できます。これで設定の反映は完了です。引き続き、ファイルサーバーとしての動作確認を行います。
9.接続確認
ここまででSambaの基本的なセットアップが完了しましたので、本章では実際にWindowsのPCから接続テストを行います。テストを実行するWindowsPCのOSバージョンはWindows10 Professional(Build 1709)です。

9-1.コンピューター名へのpingテスト
コマンドプロンプトからSambaに設定したファイルサーバーのコンピューター名である”fs”に対してpingを実行し、応答があることを確認します。以下が実行例です。

応答が無い場合、sambaサーバー側のファイアウォール設定や、smbd、nmbdのサービスが起動しているか、設定ファイルのサーバー名パラメーターなどを見直して下さい。ここでは応答があったという前提で先へ進めます。
9-2.コンピューター名での接続テスト
pingの応答が確認できたら、次にコンピューター名を指定してSambaサーバーへ接続できることを確認します。[Windowsメニュー]を右クリックして、表示されたメニューから「ファイル名を指定して実行」を選択します。
表示されたダイアログの[名前]に”\\fs”と入力して[OK]をクリックします。

[ネットワーク資格情報の入力]ダイアログが開きます。ダイアログ中の入力項目には以下を入力します。

- ユーザー名:Sambaサーバー上で作成したユーザー名(rem-test01)
- パスワード:作成したユーザーのパスワード
を入力して、[OK]をクリックします。
入力した情報が正しい場合、エクスプローラーに設定した共有フォルダが表示されます。

Share共有フォルダにテスト用のフォルダを作成しました。正常に作成できます。

ユーザーのホームフォルダ(rem-test01共有)にも同じく書き込みができることを確認します。

正常に書き込みができました。
このフォルダはログインしたユーザーのホームディレクトリ名になりますので、例えばrem-test02ユーザーでSambaサーバーへログインした場合は、rem-test02共有フォルダが表示されます。
これで接続テストまで完了しました。
10.まとめ
Sambaサーバーは設定方法を紹介した単純なファイルサーバーとしての設定以外に、Active Directory同等の機能をもつ認証機能や、ACLを利用したアクセス制御など、高度な機能があります。
そのトレードオフとして、複数に渡る設定があり、しっかり利用することを考えるとWindowsとLinuxにかなり精通している必要があります。まずは本記事で紹介した基本的なファイルサーバーを設定して、もっと突っ込んだ利用をしたいと思ったときに、更に詳細な機能を調べて、少しづつ実装していくことをお勧めします。運用を進めるとファイル共有でアクセス制御を行いたいという要望が出てくるかと思います。
そのような場合にはアクセス制御を設定する手順をまとめた記事
を参照下さい。
またWindowsドメインを運用されている環境があれば、SambaサーバーをActive Directoryに参加させる手順を紹介した記事
も併せて参考にしていただければ幸いです。
弊社では3000アカウントのSambaサーバーを構築した実績もあります。それだけのポテンシャルがsambaというソフトウェアにはあると思います。是非、設定してみて下さい。