Ubuntu Server 22.04にSambaサーバをたてる(Dockerなしで)
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 を使ってやってたときには何が悪かったのか、結局よくわからない。
