【Samba】共有フォルダの中に特定のアカウントのみ変更可能なフォルダを作る

投稿者: | 2015年10月16日

こんにちは、Sayahamittです。

CentOS7 と Samba4 を利用して研究室用のファイルサーバーを作ったのですが、ちょっと変なアクセス制御をやったのでメモメモφ(..)

やりたかったこと

研究室のファイルサーバーに、メンバー各々の個別フォルダが欲しい

そのフォルダの内容は所有者のみが変更でき、かつ、全員がすべてのフォルダの中身を閲覧出来るようにしたい。

さらには、個々人のフォルダは各ユーザー自身や、他のユーザーによって消去されないようにしたいわけです。

 

研究室で共有するファイルサーバーに個々人のプライバシーが高いレベルで確保される領域を作りたくなかったので、このような構成を試そうと考えました。

 

フォルダ構成
Personal	
  +--Bob
  |    +--fileA
  |
  +--Alice
       +--fileB

具体的には、上の囲みの中に示したような共有フォルダが有ったときに、

BobはfileAを削除できますが、fileBや、フォルダAlice、フォルダBobを削除できない。

AliceはfileBを削除できますが、fileAや、フォルダBob、フォルダAliceを削除できない。

という状態にしたいのです。

やったこと

  • ファイルサーバーの利用者全員に、それぞれのLinuxユーザーアカウントとSambaアカウントを発行します。例では、アカウントBobとAliceを発行。

 

  • Personalディレクトリのパーミッションを755に、また所有者と所有グループはrootなど(個人フォルダをPersonalディレクトリ内に持たないユーザー)とする。

 

  • Personalディレクトリ内にそれぞれの個人ディレクトリを作成し、所有者をそれぞれのユーザーアカウントとして設定。

 

  • 個人ディレクトリのパーミッションは755とする。

 

  • smb.conf で、Personalディレクトリへの書き込みを許可。

 

まとめると、各フォルダのパーミッションはこんな感じ

ls -l /var/samba
drwxr-xr-x 2 root srvuser 4096 Jan 1 00:00 Personal
ls -l /var/samba/Personal
drwxr-xr-x 2 Bob srvuser 6 Jan 1 00:00 Bob
drwxr-xr-x 2 Alice srvuser 6 Jan 1 00:00 Alice

この例では全てのSambaユーザー(もといLinuxユーザー)が同じユーザーグループ srvuser に所属しているとしています。

 

smb.confの設定は以下のとおり

[Personal]
path =  /var/samba/Personal
writable = yes

これで、BobはディレクトリBob内を自由に変更でき、ディレクトリBobとディレクトリAliceを削除したり名前の変更をすることが出来ないようになるはずです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください