Linuxでファイル記述子権限を確認するには?

Linuxでファイル記述子権限を確認するには?

プロセスがfdを正常に使用すると、open(flags=O_RDWR)fdが閉じられない限り(ローカルファイルシステムの通常のファイル)、他のプロセスがchmodを使用してそのプロセスの読み取り/書き込み権限を取り消しても、ファイルを読み書きできます。ユーザー。Linuxカーネルはinodeでファイル権限を確認したり、ファイルの説明を開くことができますか?しかし、プロセスが を使用してファイルを実行しようとすると、execveatカーネルはxビットとsuidビットの権限を確認するためにディスクを読み込みますか?開かれたファイルの説明にはどのような権限が文書化されていますか?他のすべての操作(execveatなど)fchdirfchmodディスク情報を確認できるように、ACL全体または単純な読み書きビットが含まれていますか?

ディスクファイルシステム情報に基づいて、fsuidにファイルの読み取り/書き込み/実行ビットがない他のプロセスにこのfdを送信すると、受信プロセスはfdを介してファイルを読み書き/実行/実行できますか?

ベストアンサー1

execveatによって処理されたdo_open_execat、これは、次のことができるようにしたいことを指定します。ターゲットファイルを開く実行のため。ファイルオープナー処理渡す do_filp_openそしてpath_openat、記録された道の歩行プロセスが含まれていますそれぞれ。プロセスがどのように始まるかにかかわらず、これらすべての結果はstruct fileそして関連struct inodeファイルのモードとACLが指す項目(関連する場合)を保存します。 inode データ構造は、同じ inode を参照するすべてのファイル記述で共有されます。

カーネルは、検索時にメモリ内のinode情報が最新であることを確認します。場合によっては(特にローカルファイルシステム、ext4、ext3、XFS、およびbtrfs)、これはdentryキャッシュとinodeキャッシュで維持できますが、他の場合は一部のI / O(特にネットワーク経由)が含まれます。

権限確認自体は後で実行されます。bprm_fill_uid;これは、inodeに対する現在の権限と呼び出しユーザーの現在の権限を考慮します。

議論前に、権限は、ファイルを読み書きするときではなく、ファイルが開かれたりマッピングされたり、メタデータが変更されたときにのみ確認されます。したがって、ファイル記述子は、新しい権限の確認なしにプロセス間で渡すことができます。

おすすめ記事