実験環境:Ubuntu18.04 リモートサーバー + WSL 2 ローカル
評価説明#
[バージョン 1]
[バージョン 2]
-
-
⭐ファイル権限【特にファイルの特殊権限】の理解を評価
-
上記を理解すれば、上記の機能を実現するのは容易です
最終結果#
-
他のユーザーは Project ディレクトリに入れない
-
-
TestUser1 がファイル u1.txt を作成した
-
-
TestUser2 は u1.txt を編集できるが、削除はできない
-
-
- 逆も同様
実現プロセス#
準備作業#
- 新しいユーザーグループ TestGroup を作成し、groupadd コマンドを使用します。いくつかのオプションは man マニュアルで確認できます
groupadd TestGroup
- TestGroup グループに属する 2 つのユーザー TestUser1、TestUser2 を作成します
useradd -G TestGroup TestUser1
useradd -G TestGroup TestUser2
-
- グループが先に必要です
- パスワードを設定し、ユーザーにログインできるようにします。そうしないとログインできません
passwd TestUser1
--->パスワードを入力:xxx
passwd TestUser2
--->パスワードを入力:yyy
- /opt ディレクトリに Project ディレクトリを新しく作成し、プロジェクトディレクトリとします
cd /opt
mkdir Project
実現機能 1 アクセス権#
【TestUser1、TestUser2、root の 3 ユーザーのみがこのディレクトリに入れます】
- Project ディレクトリの所属グループを TestGroup に変更し、所属ユーザーはそのままにします
sudo chown :TestGroup Project
- 他のユーザーの実行権限を削除し、他のユーザーはディレクトリに入れなくなります
sudo chmod o-x Project
-
効果は以下の通りです:
-
実現機能 2 編集権限#
【TestUser1 が作成したファイルは TestUser2 が編集できます】
- まず、所属グループ TestGroup に書き込み権限を追加します。これにより、ユーザーはこのディレクトリ内にファイルを作成できるようになります
sudo chmod g+w Project
- set_gid を設定します。これにより、ユーザーがディレクトリに入った後の操作はディレクトリの所属グループの身分で行われます
sudo chmod g+s Project
[PS] そうしないと、ユーザーが作成したファイルの所属グループは自分と同名のグループになり、TestGroup にはなりません [そのため、2 人のユーザーを関連付けることができません]
-
権限は以下の通りです:
-
実現機能 3 削除権限#
【TestUser1 と TestUser2 は自分が作成したファイルのみを削除できます】
- sticky bit を設定します。これにより、このディレクトリ内では、ユーザーは自分が作成したコンテンツのみを削除できます
sudo chmod +t Project
-
権限は以下の通りです:
-
[PS] フォルダの色が変わりました。zsh が素晴らしい仕事をしました
考察点#
- あるシナリオ:特定のディレクトリに入るユーザーが特定のファイルに書き込み権限を持たないが、ファイルを削除できるのはなぜか?
-
- ファイルを削除する権限:ユーザーが入るディレクトリの権限に優先されます
-
- このユーザーは TestGroup に属し、書き込み権限があります
- 参考:鳥哥の私房菜 —— ディレクトリとファイルの権限の意義—— ディレクトリの権限の重要性:
-
- しかし、sticky bit [スティッキービット] に遭遇すると、状況は変わります
-
-
-
付録#
- ディレクトリの実行権限は、アクセス権を示します
参考資料#
- 『Linux 入門及び使用』ノートまとめ ——3 Linux 基礎知識 ——ユーザーとグループおよびファイル権限の変更
- 『Linux 入門及び使用』ノートまとめ ——8 ファイルとディレクトリ、AWK——ファイルの特殊権限
- 鳥哥の私房菜 —— ディレクトリとファイルの権限の意義