認証共有の設定
Debian 13.xのSambaで、
smbusersグループのSambaユーザーだけが読み書きできるprivate共有を構成する。
| 項目 | 値 |
|---|---|
| OS | Debian 13.x |
| サーバー名 | files.example.com |
| 共有名 | private |
| 共有パス | /srv/samba/private |
| 許可するLinuxグループ | smbusers |
| ユーザー | alice |
| 接続先 | \\files.example.com\private |
files.example.comがDNSまたはクライアントのhostsファイルでSambaサーバーのIPアドレスへ解決できるようにする。
1. Sambaをインストールする
Section titled “1. Sambaをインストールする”sudo apt updatesudo apt install samba smbclientsudo systemctl enable --now smbdsystemctl status smbd2. Linuxユーザーとグループを作成する
Section titled “2. Linuxユーザーとグループを作成する”SambaはパスワードをSambaユーザーデータベースで検証した後、対応するLinuxユーザーのUIDとグループで共有内のファイルを操作する。そのため、Sambaパスワードを登録する前にLinuxユーザーと共有用グループを用意する。
共有を許可するLinuxグループを作成する。
sudo groupadd --force smbusersLinuxユーザーaliceが存在しない場合は、対話ログインを許可しないローカルユーザーとして作成する。
getent passwd alice >/dev/null || \ sudo useradd --no-create-home --shell /usr/sbin/nologin alicealiceをsmbusersへ追加する。
sudo usermod --append --groups smbusers aliceid aliceidの出力にsmbusersが含まれることを確認する。
3. Sambaパスワードを登録する
Section titled “3. Sambaパスワードを登録する”sudo smbpasswd -a aliceSMBクライアントから使用するパスワードを2回入力する。既にSambaユーザーとして登録されていたアカウントが無効化されている場合だけ、任意で再有効化する。
sudo smbpasswd -e alicesudo pdbedit -L一覧にaliceが表示されることを確認する。
4. 共有ディレクトリを作成する
Section titled “4. 共有ディレクトリを作成する”sudo install -d -o root -g smbusers -m 2770 /srv/samba/privatels -ld /srv/samba/private所有者がroot、グループがsmbusers、モードがdrwxrws---であることを確認する。
5. 認証共有を設定する
Section titled “5. 認証共有を設定する”設定変更前のファイルを保存する。
sudo cp --archive /etc/samba/smb.conf /etc/samba/smb.conf.before-private/etc/samba/smb.confを編集する。
sudoedit /etc/samba/smb.conf既存の[global]セクションへ次のパラメーターを追加または変更する。[global]セクションを重複して作らない。
[global] server role = standalone security = userファイル末尾へ[private]セクションを追加する。
[private] path = /srv/samba/private browseable = yes guest ok = no read only = no valid users = @smbusers force group = smbusers create mask = 0660 directory mask = 0770valid usersによる接続許可とLinuxグループ権限の関係はSMB・Samba・共有権限の仕組みを参照する。
新規のstandalone file serverでは、server role = standaloneとsecurity = userは既定の実効動作を明示する任意設定である。browseable = yesとguest ok = noも既定値を明示しており、異なる既定値へ変更されていなければ省略できる。
6. 設定を検査して反映する
Section titled “6. 設定を検査して反映する”sudo testparm -sLoaded services file OK.と表示され、[private]に意図した設定が表示されることを確認する。
sudo systemctl reload smbdsystemctl status smbd7. 認証と読み書きを確認する
Section titled “7. 認証と読み書きを確認する”ユーザーaliceで共有一覧を取得する。
smbclient -L //localhost -U aliceプロンプトへSambaパスワードを入力し、privateがDiskとして表示されることを確認する。
privateへ接続し、ファイルをアップロードしてダウンロードする。
smbclient //localhost/private -U alice \ -c 'put /etc/hostname hostname.txt; ls; get hostname.txt /tmp/private-hostname.txt'cat /tmp/private-hostname.txtls -l /srv/samba/private/hostname.txtファイルのグループがsmbusersであり、otherに権限が付いていないことを確認する。
ゲスト接続が拒否されることを確認する。
smbclient //localhost/private -N -c lsNT_STATUS_ACCESS_DENIEDまたは認証を要求するエラーになることを確認する。
別のLinuxクライアントから接続する場合は、次を実行する。
smbclient //files.example.com/private -U aliceWindowsクライアントでは、エクスプローラーのアドレス欄へ次を入力し、ユーザー名aliceとSambaパスワードを指定する。
\\files.example.com\private確認コマンド
Section titled “確認コマンド”sudo testparm -ssudo pdbedit -Lsmbclient -L //localhost -U alicesmbstatussystemctl status smbdjournalctl -u smbd-
Samba smb.conf manual
valid users、force group、create mask、directory mask。 -
Samba smbpasswd manual ローカルSambaユーザーの追加と有効化。
-
Samba pdbedit manual Sambaユーザーデータベースの確認。