CentOS 7のSamba4でライセンス不要 Windows向けファイルサーバーを構築

centos7-samba4-top

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

CentOS
centos76-install-top3
CentOS 7.6をインストール Linuxのインストールは難しくありません

こんにちは、ITエンジニアの小村(@system_kom)です。 Windowsをインストールした経験のある人は多いと思いますが、Linuxをインストール経験がある人は少ないのではないでしょうか。 Linuxのインストールはサーバー構築の基 ...

CentOS
CentOS 7のインストール後におこなうLinuxの基本設定 13ポイント

CentOS 7(バージョン7.0~7.6)のインストール完了後に、設定する最低限のポイントを13点纏めてみました。(2019年6月に追加)本記事で紹介した手順は一例で、これ以外にもサーバーを構築するためには複数の手順が必要になります。まず ...

2019年9月にリリースされたCentOS 8でのSamba環境構築手順については、以下の記事で紹介しています。CentOS 8を利用している場合にはこの記事をお勧めします。

Open Source
centos8-samba-install-top
CentOS 8のSamba 4でライセンス不要のファイルサーバーを構築

今回の記事では、以前のCentOS 8に関する2つの記事で構築したCentOS 8のサーバーに、オープンソースのファイル共有用ソフトウェアである「Samba」をインストールしてWindows向けのファイルサーバーとして設定してみます。 高機 ...

老朽化やリプレースで利用しなくなったPC、サーバーなどがあればその利用先としてSambaを使ったWindows向けファイルサーバーを作ってみては如何でしょうか。
高機能なサーバースペックが要求されるWindows Server系のOSとは違い、LinuxでSambaを動作させるには低スペックのPCやサーバーで問題ありません。

Windows ServerではServer Coreという軽量なCLIベースの構成も可能ですが、余り利用されていないのが実情です。

Sambaを利用したファイルサーバーを構築することでLinuxだけでなく、Windowsのファイル共有についても挙動や仕組みの勉強になります。スモールビジネス向けにはクライアントアクセスライセンスも不要で、安価に運用できるメリットがあります。(しっかりとバックアップは取得してくださいね)

ユーザー数の多い環境でも、バックアップを行うことで業務向けとして利用することもできます。また逆に既存サーバーのバックアップ用としてSambaのファイルサーバーを利用することも良いと思います。

注意

CentOSのベースレポジトリにあるSamba4のパッケージはドメインコントローラーになることができないなど、一部の機能が制限されています。

Windowsドメイン環境を利用したい場合は、Sambaをソースコードからインストールする、若しくはCentOSではないディストリビューション(例えばUbuntu Server)を利用することをお勧めします。通常のファイル共有を利用する、ファイルサーバーやWindowsドメインのメンバーになるメンバーサーバー機能はCentOSでも利用に制限はありません。

参考 Sambaをソースコードからコンパイル・インストールして、Windowsドメイン環境を構築する手順は、以下の記事で紹介しています。

Open Source
samba410-ad-setup-top
CentOSとSamba4.10系でWindowsと同等のActive Directoryを作成

前回の記事でSamba4.9系でのActive Directory構築手順を紹介しました。そのSambaですが、2019年4月現在、Sambaの最新バージョンが4.9系から4.10系にバージョンアップされています。Samba4.10では以前 ...

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

本記事の構成図は以下のような形を想定しています。

centos7_samba_image_2

CentOS 7 Samba環境の想定構成図

この構成図を元に作業手順を進めていきます。

本記事では一般ユーザーでの実行が可能なコマンドについてはプロンプトとして"$"、rootユーザーでの実行が必要なコマンドについては"#"を記載しています。

まずはシステム(OS)に対して、任意のホスト名を設定します。ここで設定するホスト名はファイルサーバー名になりますので、運用を考えたホスト名を設定することをお勧めします。ホスト名の設定には nmcliコマンドを以下のように実行します。ここではホスト名としてfsを設定します。(実際には、環境に合わせたホスト名を指定してください。)

 command
# nmcli general hostname fs

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

 command
$ hostname
fs

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

2. sambaパッケージの確認

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

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

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

 command
$ yum search samba
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* extras: ftp.iij.ad.jp
* updates: ftp.iij.ad.jpkdenetwork-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 compilerName and summary matches only, use "search all" for everything.

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

ファイルサーバーに必要なパッケージ

  • 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のパッケージ詳細を確認します。

 command
$ 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パッケージをインストールします。

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

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

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

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

 command
# yum -y install samba samba-common

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

 log
読み込んだプラグイン:fastestmirror
base | 3.6 kB 00:00:00
extras | 3.4 kB 00:00:00
updates | 3.4 kB 00:00:00
【略】
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.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パッケージがインストールされていることを確認します。

 command
$ yum list installed samba*

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

 log
読み込んだプラグイン: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のプログラム本体はsmbdnmbdという二つから構成されています。以下のように実行することでインストールパスを確認できます。

 command
$ which smbd nmbd
/usr/sbin/smbd
/usr/sbin/nmbd

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

3-3. Samba起動の確認

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

 command
# systemctl start smb nmb

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

 command
$ 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

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

 command
$ 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プロセス

 command
$ 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コマンドを実行します。

 command
# 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コマンドから確認できます。以下のように実行します。

 command
$ systemctl is-enabled smb nmb
enabled
enabled

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

4. firewallの許可設定

本記事はSambaの導入環境として以下の記事、項目6.で記載したfirewall設定(firewalldを利用した場合)を行っていることを前提としています。

CentOS
CentOS 7のインストール後におこなうLinuxの基本設定 13ポイント

CentOS 7(バージョン7.0~7.6)のインストール完了後に、設定する最低限のポイントを13点纏めてみました。(2019年6月に追加)本記事で紹介した手順は一例で、これ以外にもサーバーを構築するためには複数の手順が必要になります。まず ...

このfirewall設定の場合、Sambaサービスへの接続許可がされていないため、WindowsPCでアクセスができません。その為、以下のようにfirewall-cmdコマンドを利用してのSambaの接続許可を追加します。

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

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

 command
# 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を追加します。追加は以下のように行います。

 command
# firewall-cmd --add-service=samba --permanent
success

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

 command
# firewall-cmd --reload
success

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

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

 command
# 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自体はデフォルト設定のままで、このままだと利用ができません。本記事では運用するにあたって最低限、必要になる設定を行います。設定の前提は以下の通りです。

Sambaを設定する前提条件

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

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

5-1. smb.confの変更

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

[global] Sambaの挙動に関する基本的なパラメーター設定
[homes] ユーザ個別のホームディレクトリ共有設定
[printers] Sambaをプリンタサーバーとして利用するための設定
[共有フォルダ名] 共有フォルダ毎の設定

globalセクションに設定した内容はSamba全体に適用されます。ファイル共有にも同じ設定が適用されます。

smb.conf_global _3

globalセクションの設定 適用範囲

ファイル共有セクションに設定した内容は、設定したファイル共有のみに適用されます。

smb.conf_share _2

ファイル共有セクションの設定 適用範囲

上記セクションについて、設定を行います。
smb.confの設定変更前に、既存のファイルをバックアップしておきます。具体的には以下の手順でコピーを行います。

 command
# cd /etc/samba
# ls
lmhosts smb.conf smb.conf.example
# cp -p smb.conf smb.conf.org

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

 command
# vi smb.conf

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

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

 code
[global]
workgroup = SAMBA
security = userpassdb backend = tdbsamprinting = cups
printcap name = cups
load printers = yes
cups options = raw

このセクションを

 code
[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 Windowsで利用するワークグループ名
server string = SAMBA SERVER Version %v ネットワークコンピュータ一に表示される情報
netbios name = fs ファイルサーバー名の設定
dos charset = CP932 WINDOWS側の文字コード設定
wins support = yes WINSサポート用パラメータ、WINS利用時に有効
load printers = no プリンタ共有機能の設定パラメータ、noで無効
disable spoolss = yes プリンタ共有機能の設定パラメータ、yesで無効

運用する環境に合わせてパラメータを変更してください。

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

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

 code
[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セクションの設定変更

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

 code
#[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は以下のようになっています。

 code
# 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コマンドで設定ファイルをチェックします。以下、実行例になります。

 command
# 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_STANDALONEPress 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/”にディレクトリを作成します。以下のように作成しました。

 command
# cd /home/
# mkdir share

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

 command
# chmod -R 0777 share
# chown -R nobody:nobody share

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

 command
$ 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コマンドでパスワードを設定します。

 command
# useradd rem-test01
# passwd rem-test01
ユーザー rem-test01 のパスワードを変更。
新しいパスワード:     任意のパスワード
新しいパスワードを再入力してください:     同じパスワードを入力
passwd: すべての認証トークンが正しく更新できました。

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

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

 command
# pdbedit -a -u rem-test01 -f "test user01"
new password:     passwdコマンドで設定したものと同じパスワードを入力
retype new password:     確認用にパスワードを再入力

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

 log
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オプションを付けることで確認できます。以下が実行例です。

 command
# pdbedit -L
rem-test01:1004:test user01

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

 command
# 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オプションを付けてコマンドを実行します。

 command
# pdbedit -L -w
rem-test01:1004:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:699******************5929:[U ]:LCT-5AF26118:

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

8. Sambaの再起動

ここまででSambaの基本的な設定は完了しました。変更した設定を反映するためにsmbdとnmbdを再起動します。systemctl restartコマンドを実行します。

 command
# systemctl restart smb nmb

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

 command
# 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)です。

cent-samba-9

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

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

cent-samba-9-1

上記のようにpingの応答があれば確認は完了です。

ポイント

応答が無い場合には、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にかなり精通している必要があります。まずは本記事で紹介した基本的なファイルサーバーを設定して、もっと踏み込んだ利用をしたいと思ったときに、更に詳細な機能を調べて、少しづつ実装していくことをお勧めします。運用を進めるとファイル共有でアクセス制御を行いたいという要望が出てくるかと思います。
そのような場合にはアクセス制御を設定する手順をまとめた以下の記事をおすすめします。

Open Source
samba-access-setting-01-top
CentOS のSambaでファイル共有にアクセス権を設定する3つの方法

CentOSでWindows向けのファイル共有を実装するためのアプリケーション"Samba"について、以前の記事でインストール方法と基本的な設定を紹介しました。この記事ではSambaのインストールに関する部分を中心に記載しており、Samba ...

またWindowsドメインを運用されている環境があれば、SambaサーバーをActive Directoryに参加させる手順を紹介した記事も併せて参考にしていただければ幸いです。

Open Source
samba410-ad-setup-top
CentOSとSamba4.10系でWindowsと同等のActive Directoryを作成

前回の記事でSamba4.9系でのActive Directory構築手順を紹介しました。そのSambaですが、2019年4月現在、Sambaの最新バージョンが4.9系から4.10系にバージョンアップされています。Samba4.10では以前 ...

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

[st_af id="9037"]

  • この記事を書いた人
rem-profile-photo

レムシステム

レムシステムはPC・サーバー・ネットワークでの業務効率化を主な業務としている会社です。全国に対応しています。

-CentOS, Samba