こんにちは、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を削除したり名前の変更をすることが出来ないようになるはずです。