~/.foo_rc
インタラクティブモードを持つプログラミング言語を実装しており、インタラクティブモードがユーザーのホームディレクトリにあるいくつかのファイルを読み取るとします。このファイルには、特定の設定をカスタマイズするために使用できる言語コードが含まれています。このファイルを読み取ると、言語はサンドボックス化されません。ファイルは「何でも」できます。
ファイルの権限確認を実行する必要がありますか?良い:
$ foo -i
Not reading ~/.foo_rc because it is world-writable, you goof!
P.S. you don't even own it; someone else put it there.
> _
私はBashのソースコードを見ていますが、権限の確認には気にしません~/.bash_profile
(それが存在して読み取ることができる以外は何でもするための前提条件です)。
【書き直す】
thrigの答えを検討した後、次のようにファイルを調べました。
ファイルが呼び出し元の有効なユーザーIDに属していない場合、そのファイルは安全ではありません。
他の人がファイルに書き込めば安全ではありません。
ファイルが属するグループによって書き込み可能な場合、そのグループに呼び出し元以外のユーザーが含まれている場合、ファイルは安全ではありません。 (つまり、グループは空であるか、送信者が唯一のメンバーである必要があります)。
それ以外の場合は安全と見なされます。
グループ検査は、数値のユーザーIDとグループIDまたはその名前の間の一致を想定せず、検査に基づいています。名前ユーザーが唯一のメンバーとしてリストされます。
(このチェックを実行する関数のドキュメントに、スキャン時間と使用時間の競合条件が適用されることを示すメモが追加されました。スキャンが適用された後、無実のスーパーユーザーは追加のメンバーにグループを拡張する可能性があります。悪意のある可能性があるためファイルを変更するときは、ファイルにアクセスしてください)。
ベストアンサー1
どのファイルが失敗したのか、なぜ失敗したのかについて明確な警告がある場合は、合理的かつ慎重に行動して、ユーザーが権限の問題を解決できるようにします。bash
おそらく、より信頼性が高く、いたずらな日だったでしょう。サイトに各ユーザーがそのユーザーが属するグループにのみ入るようにするポリシーがある場合、ユーザーのファイルは合法的にグループ書き込みが可能ですが、そうでなければそうではありません。
(エラーをキャッチするために親ディレクトリを確認するのが賢明かもしれませんchmod 777 $HOME
。)