USB接続したストレージ(HDDやメモリー)を、Sambaで自動共有するための設定
検証環境
・Ubuntu 14.04.1 LTS
・Samba 4.1.6
脆弱性を少しでも減らすため、普段利用しているユーザ名ではなく、共有するときの専用ユーザ名(今回はsmb-shareという名前)のディレクトリ /media/smb-share
を共有する。
通常のパブリック・ディレクトリでは失敗
通常のパブリック・ディレクトリ(Guestアクセス可)では、/media 以下にマウントされるディレクトリのアクセス権限により、Windows共有で読み取ることができない。
その時の設定は、testparm で表示される主な項目だけを列挙すると、
/etc/samba/smb.conf
[global]
server string = %h server (Samba, Ubuntu)
server role = standalone server
map to guest = Bad User
obey pam restrictions = Yes
pam password change = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
unix password sync = Yes
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
dns proxy = No
usershare allow guests = Yes
panic action = /usr/share/samba/panic-action %d
idmap config * : backend = tdb
[public]
comment = public dir /media/smb-public (rw)
path = /media/smb-public
read only = No
create mask = 0666
directory mask = 0777
guest only = Yes
guest ok = Yes
browseable = Yes
[usb-media]
comment = mounted USB volume /media/smb-share (read only)
path = /media/smb-share
read only = Yes
guest only = Yes
guest ok = Yes
browseable = Yes
[global]セクションはデフォルトのままで、[public]と[usb-media]セクションだけを新規追加している。
自動マウントされたストレージが割り付けられる /media ディレクトリの状態は
$ ls -la /media
合計 28
drwxr-xr-x 7 root root 4096 11月 30 13:00 ./
drwxr-xr-x 22 root root 4096 11月 25 08:20 ../
drwxr-x---+ 2 root root 4096 9月 1 19:31 root/
drwxrwxrwx 2 root root 4096 11月 30 15:41 smb-public/
drwxrwxrwx+ 3 root root 4096 11月 30 16:09 smb-share/
USBストレージが自動マウントされる smb-share
の属性の後ろに「 + 」(その他のアクセス権)が付いている所が問題の原因。
基本的には、マウントしたときのユーザしかアクセスできないようだ。
問題回避方法 : ユーザ名の強制
force userの設定値を使って、USBストレージをマウントするユーザ名(今回は smb-share というユーザ)での接続を強制する。なお、guest ok = Yes を同時に指定することで、ゲスト接続時に自動的に「マウントするユーザ」と解釈されるようだ。
/etc/samba/smb.conf
[usb-media]
comment = mounted USB volume /media/smb-share (read only)
path = /media/smb-share
read only = Yes
force user = smb-share
guest ok = Yes
browseable = Yes