ここでは、Redhat互換のLinux(AlmaLinux9.4)で、Sambaを使ってWindowsからアクセスできる共有フォルダーを作成する基本的な手順を紹介します。
目次
Sambaとは
Sambaは、LinuxをWindowsネットワーク上のサーバやクライアントとして動作させることができるオープンソースのソフトウェアで、Sambaを使ってLinux上にWindows向けの共有フォルダーを作成することもできます。
市販されているネットワークストレージ(NAS)の中にも、内部でSambaが稼働している製品は少なくありません。
Sambaのインストール
SELinuxの無効化
事前設定として、SELinuxを無効化します。(SElinuxを無効化したくない場合は、Sambaで作成した共有フォルダーへのアクセスに問題が出ないようSELinuxを適切に設定する必要があります。)
# grubby --update-kernel ALL --args selinux=0
# reboot
Sambaのインストール
以下のコマンドでLinuxにSambaをインストールします。
# dnf install samba
ディレクトリの作成
次に、共有フォルダーとして公開するディレクトリを作成します。以下では例として「/mnt/share_folder」というディレクトリを作成しています。
# mkdir /mnt/share_folder
認証が必要な共有フォルダーを作成するときは
たとえば、新たに作成するグループ「smb-group」に属するユーザーだけが読み書きできる共有フォルダーを作成するときは、以下のようにアクセス権を設定します。
# groupadd smb-group
# chgrp smb-group /mnt/share_folder
# chmod 770 /mnt/share_folder
次に、共有フォルダーにアクセスするときに使用するユーザー「smb-user」を追加します。
# adduser smb-user
# usermod -aG smb-group smb-user
# pdbedit -a smb-user
認証が不要な共有フォルダーを作成するときは
認証不要で誰もが読み書きできる共有フォルダーを作成するときは、以下のようにアクセス権を設定します。
# chmod 777 /mnt/share_folder
Sambaの設定
次に、作成する共有フォルダーの設定をSambaの設定ファイル「smb.conf」に記述します。
認証が必要な共有フォルダーを作成するときは
「smb-group」グループに属するユーザーだけが読み書きできる共有フォルダー(共有名が「share」)を作成するときは、以下の内容を追記します。
# vi /etc/samba/smb.conf
[share]
path = /mnt/share_folder
browsable = yes
writable = yes
valid users = @smb-group
force group = smb-group
force create mode = 0660
force directory mode = 0770
認証が不要な共有フォルダーを作成するときは
認証不要で誰もが読み書きできる共有フォルダーを作成するときは、以下の内容を追記します。
# vi /etc/samba/smb.conf
[global]
map to guest = Bad User ←この行はglobalセクションに追記します。
[share]
path = /mnt/share_folder
writable = yes
public = yes
guest only = yes
guest ok = yes
ログの設定
ログの設定は必須ではありませんが、ログを記録するよう設定しておけば、トラブル時の調査がやりやすくなるでしょう。
# vi /etc/samba/smb.conf
[global]
log level = 2
log file = /var/log/samba/log.%m
max log size = 1024
設定ファイルのチェック
設定ファイルを編集した後は、以下のコマンドで設定ファイルの記述方法の問題がないかをチェックし「Loaded services file OK.」と表示されればOKです。
# testparm
Sambaの起動
Sambaの起動
ここまでの設定が済んだら、以下のコマンドでSambaを起動します。
# systemctl start smb
Sambaには、smbとnmbという2つのサービスで構成されており、nmbサービスはブラウズ機能やNetBIOSによる名前解決を担当していますが、一般的なTCP/IPネットワークでは、NetBIOS名での名前解決は動作が遅くなるため、ここではDNSで名前解決させるかIPアドレスでアクセスするものとして、nmbサービスは起動しません。
Linuxの起動時にSambaを自動起動させたいときは、以下のコマンドを実行します。
# systemctl enable smb
ファイアウォールの設定
次に、リモートからSambaの共有フォルダーへのアクセスできるようファイアウォール設定を追加します。
# firewall-cmd --permanent --zone=public --add-service=samba
# firewall-cmd --reload
設定を追加したら、以下のコマンドでファイアウォールの許可設定にSambaが追加されたことを確認します。
# firewall-cmd --list-all
以上で設定完了です。
動作確認
Sambaを稼働させたら、動作確認としてWindowsマシンのエクスプローラーなどから作成した共有フォルダーにアクセスしてみます。
アクセスするときは、Smbaサーバーを稼働させているLinuxマシンのホスト名と共有名を指定してアクセスします。たとえば、Linuxマシンのホスト名が「file-server」で共有名が「share」なら、以下のように指定します。
なお、ローカルネットワーク上にDNSサーバーがなく、Linuxマシンの名前解決ができない場合は、ホスト名をIPアドレスに置き換えてアクセスします。
\\file-server\share
認証を経て正常に接続できたら、共有フォルダーにファイルやフォルダーを作成できるか・ファイルを編集できるか・削除できるか・作成したファイルが文字化けしないかなどを確認しておくと安心です。
なお、認証不要の共有フォルダーへアクセスするときは、ユーザーとして「nobody」を指定してアクセスします。