/ tmpでは、rootに対するグループ権限は機能しません。

/ tmpでは、rootに対するグループ権限は機能しません。

/ tmpディレクトリで奇妙な動作が発生します。ユーザーはファイルの読み取り/書き込み権限を持つグループに属していますが、それを行うことはできません。

この例では、/tmp/test.txtuserで新しいファイルを作成しますmax。 777権限を付与し、ファイルをグループに属させましたが、rootユーザーはrootまだ編集できません。

su max
touch /tmp/test.txt
chmod 777 /tmp/test.txt

su root
chown max:root /tmp/test.txt

# ls -l /tmp/test.txt 
-rwxrwxrwx 1 max root 0 26. Feb 12:08 test.txt

# echo "foobar" > /tmp/test.txt
bash: /tmp/test.txt: Permission denied

test.txt別のディレクトリに移動すると、すべてが期待どおりに機能します。

/tmptmpfsは、次のオプションを使用してfstabを介してインストールされました。

tmpfs       /tmp    tmpfs   nodev,nosuid,size=5G    0 0

を実行すると、ls -l /tmpフォルダは次のようになります。

drwxrwxrwt  20 root root   640 26. Feb 12:01 tmp/

私はArch Linuxの派生バージョンであるManjaroを実行しています。

tmpfsをマウントするときに私は何か間違っていましたか?

ベストアンサー1

あなたが示す動作は、次のようにfs.protected_regular決定されるLinuxカーネルパラメータによって異なります。fs.protected_fifos今回提出してください(私の考えではバージョン4.19に集約されています)セキュリティの脆弱性を修正します。

送信メッセージからの抜粋(強調):

namei: FIFO および一般ファイルに対して制限された O_CREAT を許可する

FIFOを開くことができません。所有者がディレクトリと同じであるか、ファイルがO_CREATフラグなしで開かれている場合を除き、ユーザーが所有していない固定ディレクトリの世界書き込み可能な汎用ファイル。目的は、データスプーフィング攻撃をさらに困難にすることです。 ...

同じコミットメッセージは、関連する共通Vulnerability and Exposures(CVE)番号のリストも報告します。

したがって、書き込みアクセス権がにuserX付与されているか、root他の方法で付与され、/tmp/fileこの/tmpディレクトリが固定ビットが設定されたグローバル書き込み可能ディレクトリである場合は、次の場合にのみ書き込み用にfile開くことができます。

  • userXはい、所有者fileまたは
  • fileディレクトリはすべて/tmp同じユーザーに属します。

テストではroot書き込み権限がありますが、ファイルの所有者ではなく、(それぞれ)と同じ所有者も/tmp/test.txtありません。/tmp/test.txt/tmpmaxroot

/tmpこの問題はインストール方法とまったく関係がないようです。

関連文書は次の場所にあります。ドキュメント/sysctl/fs.txt:

保護されたFIFO:

この保護の目的は、プログラムが通常のファイルを生成すると予想される攻撃者が制御するFIFOへの不注意な書き込みを防ぐことです。

...

protected_general:

この保護はprotected_fifosに似ていますが、プログラムがファイルを生成すると予想される一般的な攻撃者が制御するファイルに書き込むのを防ぎます。

「0」に設定すると、通常ファイルへの書き込みは制限されません。

"1"に設定すると、O_CREATはディレクトリ所有者が所有しない限り、所有していない誰でも書き込むことができる固定ディレクトリの一般ファイルを開くことができません。

「2」に設定すると、グループ書き込み可能な固定ディレクトリでも機能します。

つまり、次のコマンドを使用して上記の保護を無効にできます。

sysctl fs.protected_regular=0

私たちの仮説を裏付けるいくつかのテスト:

$ su - root
# sysctl fs.protected_regular
fs.protected_regular = 1
# cd /
# mkdir test
# chmod 1777 test
# su - otheruser
$ echo hello >/test/somefile
$ exit
logout
# cat /test/somefile
hello
# ls -lah test/somefile
-rw-r--r-- 1 otheruser otheruser 6 Feb 26 17:21 test/somefile
# echo root >>test/somefile
-bash: test/somefile: Permission denied
# sysctl fs.protected_regular=0
fs.protected_regular = 0
# echo root >>test/somefile
# cat /test/somefile
hello
root
# sysctl fs.protected_regular=1
fs.protected_regular = 1
# echo root >>test/somefile
-bash: test/somefile: Permission denied
# chmod 0777 /test/
# echo root >>test/somefile
# cat test/somefile 
hello
root
root

fs.protected_hardlinksとは異なり、fs.protected_symlinksデフォルトではカーネルコードでは有効になりませんfs.protected_regular。これを有効にすることは、以前のバージョンと互換性のない変更です。fs.protected_fifos
このコメント指摘)、私が知っている限り、systemdバージョン241で行われました。この最新コミット

感謝の言葉:ありがとうジェイドBP正しい方向を指すために使用されます。コメントこの質問に。

おすすめ記事