
ファイルを変更すると、以前に設定したファイル機能が失われます。これが予想される動作ですか?
まずファイル機能を設定しました。
$ setcap CAP_NET_RAW+ep ./test.txt
$ getcap ./test.txt
./test.txt = cap_net_raw+ep
期待どおりにファイル機能が設定されていることを確認しました。
次にファイルを修正します。
$ echo hello >> ./test.txt
今、ファイル機能をチェックしても何も見つかりません。
$ getcap ./test.txt
答え1
はい、これは予想される動作です。そんなファイルはありませんが、そのファイルで見ることができます今回のパッチ2007年から
posix機能を持つファイルを上書きした場合は、ファイル機能(setuidビットなど)を削除する必要があります。
このパッチには security_inode_killpriv() が導入されました。現在は機能用にのみ定義されており、inodeが変更されたときにそのinodeに接続されているすべての権限を消去したい場合があることをセキュリティモジュールに通知するために呼び出されます。汎用モジュールは、inode用に定義されたファイル関数があることを確認し、そうであればその関数を消去します。
security_inode_killpriv
今日もまだカーネルにあります。
notify_change
「応答の書き込みまたは切り捨て」でinodeが変更された場合:参照dentry_needs_remove_privs
/* Return mask of changes for notify_change() that need to be done as a
* response to write or truncate... */
int dentry_needs_remove_privs(struct dentry *dentry)