目的:ルートにフォルダを作成し、グループにchownし、ユーザーをグループに追加します。しかし、ユーザーはあまりにも広い権限を取得します。
以下を考慮してください。
# as root
# we need a user group
groupadd team1
# we need a shared folder
mkdir /project1
chown root:team1 /project1
chmod 770 /project1
# we need users - and they get set pw elsewhere :)
for i in bob tina jim joy; do useradd $i; done
# we add them to the project group 'team1' that gives access to the shared folder
usermod -aG team1 [username]
不思議なことに、ユーザーはjim
vimからファイルを作成し/project1
、ユーザーはjoy
vimでそのファイルを開いたり、変更したり、保存したり、ファイルを削除したりすることができます。
質問:これは正しい行動と見なされますか?権限はフォルダ自体に制限されてはいけませんがchmod 770 /project1
、見えるようにそのフォルダ内のファイルで繰り返すべきではありませんか?
答え1
これは通常の動作です。
ディレクトリに対する770権限を使用すると、ディレクトリ所有者とディレクトリグループのすべてのメンバーがディレクトリを読み取り、書き込み、検索できます。これは、グループのすべてのメンバーがファイル自体の権限と所有権に関係なく、ディレクトリ内のファイルを削除して新しいファイルを作成できることを意味します。これは、jim
ファイルにどの権限が設定されていても、ファイルを削除してjoy
別のファイルに置き換えることができるということですvim
。
標準の Unix 権限モデル内でディレクトリに対する追加権限を設定できます。
ここで最初の有用な点は、削除を制限する固定ビットです。ファイルは所有者、ディレクトリ所有者、またはroot
。
chmod g+t /project1
この設定が完了すると、ファイルをjoy
削除できませんjim
。
2番目の有用な権限はsgid
ビットです。この権限により、ディレクトリ内のグループがディレクトリに新しく作成されたファイルに適用されるようになります。
chmod g+s /project1
2つを組み合わせるには、次のようにします。
chmod 3770 /project1
バラよりUNIXの権限とファイルタイプの理解もっと学ぶ。