Docker で Samba サーバをたてるのは諦めた。Ubuntu の上で直接 Samba サーバを動かすことにする。
まずはお決まりの apt update
から。
takatoh@wplj:~$ sudo apt update
Samba サーバのインストール。
takatoh@wplj:~$ sudo apt install -y samba
設定ファイルを編集(バックアップをとってから)。
takatoh@wplj:~$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.orig takatoh@wplj:~$ sudo vim /etc/samba/smb.conf
ワークグループの名前を変更したほか、ユーザー認証なしでアクセスできる public
と takatoh のみアクセスできる restricted
の2つの共有フォルダを作った。
もとの設定ファイルとの差分:
takatoh@wplj:~$ diff /etc/samba/smb.conf.orig /etc/samba/smb.conf 29c29 < workgroup = WORKGROUP --- > workgroup = PANICBLANKET 241a242,257 > > [public] > path = /mnt/data/samba > writable = yes > force create mode = 0644 > force directory mode = 0755 > guest ok = yes > guest only = yes > > [restricted] > path = /mnt/data/samba_takatoh > writable = yes > force create mode = 0644 > force directory mode = 0755 > valid users = takatoh > force user = takatoh
コメントを除く全体はこう:
[global] workgroup = PANICBLANKET server string = %h server (Samba, Ubuntu) log file = /var/log/samba/log.%m max log size = 1000 logging = file panic action = /usr/share/samba/panic-action %d server role = standalone server obey pam restrictions = yes unix password sync = yes passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . pam password change = yes map to guest = bad user usershare allow guests = yes [printers] comment = All Printers browseable = no path = /var/spool/samba printable = yes guest ok = no read only = yes create mask = 0700 [print$] comment = Printer Drivers path = /var/lib/samba/printers browseable = yes read only = yes guest ok = no [public] path = /mnt/data/samba writable = yes force create mode = 0644 force directory mode = 0755 guest ok = yes guest only = yes [restricted] path = /mnt/data/samba_takatoh writable = yes force create mode = 0644 force directory mode = 0755 valid users = takatoh force user = takatoh
で、共有用のディレクトリを作る。
takatoh@wplj:~$ sudo mkdir -p /mnt/data/samba takatoh@wplj:~$ sudo chown nobody:nogroup /mnt/data/samba takatoh@wplj:~$ sudo mkdir -p /mnt/data/samba_takatoh takatoh@wplj:~$ sudo chown takatoh:takatoh /mnt/data/samba_takatoh
結果としてこうなった。
takatoh@wplj:~$ ls -l /mnt/data total 8 drwxr-xr-x 2 nobody nogroup 4096 May 6 18:13 samba drwxr-xr-x 3 takatoh takatoh 4096 May 6 18:13 samba_takatoh
そして、smbd をリスタート。
takatoh@wplj:~$ sudo systemctl restart smbd
Samba にユーザーを作る。pdbedit
コマンド。
takatoh@wplj:~$ sudo pdbedit -a takatoh new password: retype new password: Unix username: takatoh NT username: Account Flags: [U ] User SID: S-1-5-21-3828460484-3255695466-1925772709-1000 Primary Group SID: S-1-5-21-3828460484-3255695466-1925772709-513 Full Name: takatoh Home Directory: \\WPLJ\takatoh HomeDir Drive: Logon Script: Profile Path: \\WPLJ\takatoh\profile Domain: WPLJ Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: Thu, 07 Feb 2036 00:06:39 JST Kickoff time: Thu, 07 Feb 2036 00:06:39 JST Password last set: Fri, 06 May 2022 18:12:32 JST Password can change: Fri, 06 May 2022 18:12:32 JST Password must change: never Last bad password : 0 Bad password count : 0 Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
これでOK。Windows マシンからアクセスしてみると、ちゃんと \\wplj\public
には認証無しで読み書きできる。\\wplj\restricted
にはユーザー名とパスワードを要求され、正しく入力すれば読み書きできる。
無事完了。
[追記]
Samba のインストールと設定に際して、ファイアウォール関連は何もしていない。設定は次のようになっている。
takatoh@wplj:~$ sudo ufw status Status: active To Action From -- ------ ---- 22/tcp ALLOW Anywhere 137 ALLOW Anywhere 138 ALLOW Anywhere 139 ALLOW Anywhere 445 ALLOW Anywhere 22/tcp (v6) ALLOW Anywhere (v6) 137 (v6) ALLOW Anywhere (v6) 138 (v6) ALLOW Anywhere (v6) 139 (v6) ALLOW Anywhere (v6) 445 (v6) ALLOW Anywhere (v6)
Docker を使ってやってたときには何が悪かったのか、結局よくわからない。