Linux上にWindows向けの共有フォルダーを作成する方法(Samba)

Linux上にWindows向けの共有フォルダーを作成する方法(Samba)

ここでは、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

Linux上にWindows向けの共有フォルダーを作成する方法(Samba)

以上で設定完了です。

動作確認

Sambaを稼働させたら、動作確認としてWindowsマシンのエクスプローラーなどから作成した共有フォルダーにアクセスしてみます。

アクセスするときは、Smbaサーバーを稼働させているLinuxマシンのホスト名と共有名を指定してアクセスします。たとえば、Linuxマシンのホスト名が「file-server」で共有名が「share」なら、以下のように指定します。

なお、ローカルネットワーク上にDNSサーバーがなく、Linuxマシンの名前解決ができない場合は、ホスト名をIPアドレスに置き換えてアクセスします。

\\file-server\share

認証を経て正常に接続できたら、共有フォルダーにファイルやフォルダーを作成できるか・ファイルを編集できるか・削除できるか・作成したファイルが文字化けしないかなどを確認しておくと安心です。

Linux上にWindows向けの共有フォルダーを作成する方法(Samba)

なお、認証不要の共有フォルダーへアクセスするときは、ユーザーとして「nobody」を指定してアクセスします。