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 を使ってやってたときには何が悪かったのか、結局よくわからない。