書き込み専用ぽいsamba共有を作る

書き込み専用の共有

sambaでデータの提出専用みたいな共有が作れないかと試してみました.

sambaサーバ の /etc/samba/smb.conf を編集して write-only という共有を作成.

[write-only]
  # 共有ファイルの保存先
  path = /export/data/write-only
  # 共有が見えるように
  browseable = yes
  # ゲストアクセス許可
  guest ok = yes
  guest only = yes
  # 書き込み可能
  writable = Yes
  # ゲストで書き込むと nobody アカウントで保存される
  guest account = nobody
  # umaskを 0333 に
  create mask = 0333
  directory mask = 0333
  # 読み込み権のないファイルを見えなくする
  hide unreadable = Yes

samba の設定を反映する

$ sudo service samba reload

クライアントPCから共有に接続して動作確認する

gvfs-mount で mount して,マウントポイントを確認.

$ gvfs-mount smb://192.168.1.102/write-only
$ mount|grep gvfs
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)
client$ $ ls -la /run/user/1000/gvfs/smb-share\:server\=192.168.1.102\,share\=write-only/
合計 0
drwx------ 1 mk mk 0  5月 25 19:13 .
dr-x------ 3 mk mk 0  5月 21 05:54 ..

書き込んでみる

$ echo hoge > /run/user/1000/gvfs/smb-share\:server\=192.168.1.102\,share\=write-only/hoge

書き込んだファイルは見えない

$ ls -la /run/user/1000/gvfs/smb-share\:server\=192.168.1.102\,share\=write-only/
合計 0
drwx------ 1 mk mk 0  5月 25 19:24 .
dr-x------ 3 mk mk 0  5月 21 05:54 ..
$ cat /run/user/1000/gvfs/smb-share\:server\=192.168.1.102\,share\=write-only/hoge
$ cat: '/run/user/1000/gvfs/smb-share:server=192.168.1.102,share=write-only/hoge': 許可がありません

serverではこんな感じで見える

$ ls -lA /export/data/write-only
合計 4
--wx-w---- 1 nobody nogroup 5  5月 25 19:24 hoge
$ sudo cat /export/data/write-only/hoge
hoge

クライアントから同名のファイル名で上書きするとエラーもなく書き込める

$ echo fuga > /run/user/1000/gvfs/smb-share\:server\=192.168.1.102\,share\=write-only/hoge

サーバで書き換わっているのを確認

$ sudo cat /export/data/write-only/hoge
fuga