実験環境: Ubuntu18.04 リモートサーバー + WSL 2 ローカル
評価の説明#
[バージョン 1]
[バージョン 2]
-
⭐ファイルの権限【特に特殊権限】の理解を評価します
- ファイルの権限:参考《Linux 入門と使用》ノートのまとめ ——3 Linux の基礎知識 ——ユーザーとグループおよびファイルの権限の変更
- 特殊権限:参考《Linux 入門と使用》ノートのまとめ ——8 ファイルとディレクトリ、AWK——ファイルの特殊権限
-
上記を理解したら、上記の機能を簡単に実装できます
最終的な効果#
-
他のユーザーは Project ディレクトリにアクセスできません
-
TestUser1 が u1.txt というファイルを作成しました
-
TestUser2 は u1.txt を編集することはできますが、削除することはできません
-
- 逆も同様です
実装手順#
準備作業#
- TestGroup というグループを作成し、groupadd コマンドを使用して作成します。いくつかのオプションは man ページで確認できます
groupadd TestGroup
- TestGroup グループに属する TestUser1 と TestUser2 という 2 つのユーザーを作成します
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——ファイルの特殊権限
- 鳥哥の私房菜 —— ディレクトリとファイルの権限の意味