Sambaをマウントしてファイルサーバとして使っていたのですが、マウントしたディレクトリには書き込めるのに、その下位ディレクトリに書き込めず、少しハマりました。
解決策としては単純なのですが、いつか忘れそうなので書いておきます。
環境
- デスクトップ
- Mac OS X 10.9.5
- ファイルサーバ(FS)
- FreeBSD 9.2-RELEASE-p4
- Samba
- 4.1.6
状況
Sambaを使ってファイルサーバをマウントできるようにしました。
[public]
path = /mnt/public
writeable = yes
(中略)
inherit owner = no
inherit permissions = no
hide dot files = yes
guest ok = yes
このようにwritable = yes
なので書き込みOKで、guest ok = yes
なので認証なしでもいける!ようにしたつもりです。
ということでMacでマウントすると、/Volumes/public
というディレクトリができています。
なので、ここにディレクトリを作成してみます。
$ pwd
/Volumes/public
$ mkdir parent
$ ls
parent
作成できているようです。
では次に作成したparent
ディレクトリの下にディレクトリを作成してみます。
$ cd parent
$ mkdir child
mkdir: cannot create directory ‘child’: Permission denied
ここでなぜか怒られます。
Macで見た時のパーミッション的には問題無いので、なぜ書き込めないのか少し悩みました。
考えた結果、Sambaの方のパーミッションがおかしいのではないのかということで、再度smb4.conf
を確認します。
[public]
path = /mnt/public
writeable = yes
(中略)
inherit owner = no
inherit permissions = no
hide dot files = yes
guest ok = yes
やはりwritable = yes
になっているしなーと思って眺めていると、inherit permissions
という項目があることに気づきます。
inheritという言葉が今の状況に非常に合っているような気がして、inherit permissions = yes
にしてSambaを再起動してみます。
# /usr/local/etc/rc.d/samba_server restart
Performing sanity check on Samba configuration: OK
Waiting for PIDS: 3256.
Stopping smbd.
Waiting for PIDS: 3253.
Stopping nmbd.
Waiting for PIDS: 3250.
Performing sanity check on Samba configuration: OK
Starting nmbd.
Starting smbd.
Starting winbindd.
この状態で再度parent
を作りなおして、child
を作成してみます。
$ mkdir parent
$ cd parent
$ mkdir child
$ ls
child
ということでできるようになりました。
inherit acl
とinherit persmissions
の違いなどは
http://damedame.monyo.com/?date=20100901
などがわかりやすかったです。