ゲスト共有の設定
Debian 13.xのSambaで、パスワードなしで読み書きできる
public共有を構成する。
| 項目 | 値 |
|---|---|
| OS | Debian 13.x |
| サーバー名 | files.example.com |
| 共有名 | public |
| 共有パス | /srv/samba/public |
| ゲストアカウント | nobody |
| 接続先 | \\files.example.com\public |
files.example.comがDNSまたはクライアントのhostsファイルでSambaサーバーのIPアドレスへ解決できるようにする。
この共有へ接続できるクライアントは、nobodyの権限でファイルを作成・変更できる。共有するネットワークの境界とTCP 445への到達範囲を制限する。
1. Sambaをインストールする
Section titled “1. Sambaをインストールする”sudo apt updatesudo apt install samba smbclientsudo systemctl enable --now smbdsystemctl status smbd2. 共有ディレクトリを作成する
Section titled “2. 共有ディレクトリを作成する”sudo install -d -o nobody -g nogroup -m 2775 /srv/samba/publicls -ld /srv/samba/public所有者がnobody、グループがnogroup、モードがdrwxrwsr-xであることを確認する。
3. ゲスト共有を設定する
Section titled “3. ゲスト共有を設定する”設定変更前のファイルを保存する。
sudo cp --archive /etc/samba/smb.conf /etc/samba/smb.conf.before-public/etc/samba/smb.confを編集する。
sudoedit /etc/samba/smb.conf既存の[global]セクションへ次のパラメーターを追加または変更する。[global]セクションを重複して作らない。
[global] server role = standalone security = user map to guest = Bad User guest account = nobodyファイル末尾へ[public]セクションを追加する。
[public] path = /srv/samba/public browseable = yes guest ok = yes guest only = yes read only = no create mask = 0664 directory mask = 0775各パラメーターとLinux権限の関係はSMB・Samba・共有権限の仕組みを参照する。
新規のstandalone file serverでは、server role = standaloneとsecurity = userは既定の実効動作を明示する任意設定である。guest account = nobodyとbrowseable = yesも一般的な既定値を明示しており、異なる既定値へ変更されていなければ省略できる。
4. 設定を検査して反映する
Section titled “4. 設定を検査して反映する”sudo testparm -sLoaded services file OK.と表示され、[public]に意図した設定が表示されることを確認する。
sudo systemctl reload smbdsystemctl status smbd5. ゲスト接続を確認する
Section titled “5. ゲスト接続を確認する”サーバー自身から認証なしで共有一覧を取得する。map to guest = Bad Userの動作を確認するため、サーバーに存在しないユーザー名smbguest-testを指定する。
getent passwd smbguest-test何も表示されないことを確認する。
smbclient -L //localhost -N -U smbguest-testpublicがDiskとして表示されることを確認する。
認証なしでファイルをアップロードし、一覧表示とダウンロードを行う。
smbclient //localhost/public -N -U smbguest-test \ -c 'put /etc/hostname hostname.txt; ls; get hostname.txt /tmp/hostname-from-samba.txt'cat /tmp/hostname-from-samba.txtls -l /srv/samba/public/hostname.txt共有内のファイルを読み取れ、作成されたファイルの所有者がnobodyであることを確認する。
別のLinuxクライアントから確認する場合は、次を実行する。
smbclient //files.example.com/public -N -U smbguest-testWindowsクライアントでは、エクスプローラーのアドレス欄へ次を入力する。
\\files.example.com\publicWindows側で認証なしのSMBゲスト接続が禁止されている場合は、Sambaの設定が成立していても接続できない。クライアントのinsecure guest logonとSMB signingのポリシーを確認する。ゲストログオンを許可すると、接続先サーバーの真正性を保証しにくくなるため、変更する範囲を限定する。
確認コマンド
Section titled “確認コマンド”sudo testparm -ssmbclient -L //localhost -N -U smbguest-testsmbstatussystemctl status smbdjournalctl -u smbd-
Samba smb.conf manual
map to guest、guest account、guest ok、guest only。 -
Samba smbclient manual 共有一覧、接続、ファイル転送の確認。