UNIXファイル権限をすべてのプロセスに同時に適用できますか?

UNIXファイル権限をすべてのプロセスに同時に適用できますか?

ファイルの権限変更を使用すると、chmod既存のファイル記述子は以前の権限でファイルにアクセスできます。

権限の変更により、既存のファイル記述子がすぐに閉じたり、失敗したり、使用できなくなったりすることがありますか?

ベストアンサー1

カーネルはファイル記述に対する権限を確認しません。元のファイルにアクセスしたことがない他のプロセスにコピーすることもできます。FD転送

手動で試すことができる唯一の方法だと思います。プロセスを学ぶファイルディスクリプタを開き、トリッキーな方法で閉じます1。これらの「狡猾なトリック」の例は、デバッガ(gdb)を接続してそれを使用してfdを閉じることです。

これは非常に極端なことです。FDが突然終了した場合、プロセスがどのように機能するかを知る方法はありません。場合によっては、プロセスにメモリーにマップされたファイルがある可能性があるため、そのファイルを閉じてメモリー・マッピングを削除すると、プロセスが分割エラーによってクラッシュすることが予想されます。

はるかに良いファイルを使用しているプロセスを見つけて手動で終了します。少なくともこの方法では、他のデータを破損することなく正常に終了するように要求できます。


1 コメントで述べたように、これを行う最善の方法は、元のファイルの代わりにfdを指すように変更するdup2代わりに呼び出すことです。これは、コードが閉じられるとは思わず、fd(number)がリサイクルされたときに非常に奇妙で安全でないタスクを実行できるためです。close/dev/null

おすすめ記事