Bo2SS

Bo2SS

ファイルの特殊権限の一般的なシナリオ

実験環境: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 が素晴らしい仕事をしました


考察点#

  • あるシナリオ:特定のディレクトリに入るユーザーが特定のファイルに書き込み権限を持たないが、ファイルを削除できるのはなぜか?
    • 画像
    • ファイルを削除する権限:ユーザーが入るディレクトリの権限に優先されます

付録#

  • ディレクトリの実行権限は、アクセス権を示します

参考資料#

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。