スティッキービットによるルートユーザーのアクション制約

スティッキービットによるルートユーザーのアクション制約

AWS 上に Ubuntu 20.04.x インスタンスがあり、非常に予期しない動作を示しました。

次の場所にファイルがあります/tmp:

root@ip-10-0-1-145:/tmp# ls -l api_requests_2023-08-23.log
-rw-r--r-- 1 www-data www-data 47450 Aug 23 19:04 api_requests_2023-08-23.log

私はそれを切り詰めようとしたがrootFAILED!!!

root@ip-10-0-1-145:/tmp# truncate -s 0 api_requests_2023-08-23.log
truncate: cannot open 'api_requests_2023-08-23.log' for writing: Permission denied

どこで障害が発生したかを確認するために strace を試したところ、次の結果が得られました。

root@ip-10-0-1-145:/tmp# strace -e trace=file truncate -s 0 api_requests_2023-08-23.log
execve("/usr/bin/truncate", ["truncate", "-s", "0", "api_requests_2023-08-23.log"], 0x7ffcaa0ab958 /* 16 vars */) = 0
...
openat(AT_FDCWD, "api_requests_2023-08-23.log", O_WRONLY|O_CREAT|O_NONBLOCK, 0666) = -1 EACCES (Permission denied)
...
truncate: cannot open 'api_requests_2023-08-23.log' for writing: Permission denied
...
+++ exited with 1 +++

temp には通常どおりスティッキー ビットが設定されています。

root@ip-10-0-1-145:/tmp# ls -ld
drwxrwxrwt 4 root root 12288 Sep 12 09:11 .

ファイルの所有者を使用してファイルを切り捨てようとしました:

root@ip-10-0-1-145:/tmp# sudo -u www-data truncate -s 0 api_requests_2023-08-23.log
root@ip-10-0-1-145:/tmp# ls -lh api_requests_2023-08-23.log
-rw-r--r-- 1 www-data www-data 0 Sep 12 09:13 api_requests_2023-08-23.log

所有truncate者として機能しました!!! (したがって、これはファイルシステムの問題が原因ではありません。ファイルシステムはローカル、ディスク上、ext4、デフォルトでマウントされています)。

ディレクトリのスティッキービットのこの動作は定義された**'only owner or root'すべての操作に対して**として扱われます。

root書き込み用にファイルを開く際にどのような制約がありましたか(経由の切り捨て>api_requests_2023-08-23.logも失敗しました)?

関連情報