私は私のためにいくつかのクリーンアップを実行するbashスクリプトを書いています(現在のディレクトリにあるすべてのRailsプロジェクトのログファイルを消去します)。私は実行可能にしていますが、「グループ」と「その他」のファイル権限設定のベストプラクティスが何であるかわかりません。権限を700に設定する必要があります(所有者のみがrwx可能)。
私が混乱させる部分は、ファイルがあるシステムから別のシステムにコピーされたときに「所有権」がどのように決定されるかです。私のUIDが509でmy_file.sh
ファイル権限を700に設定した場合は、UIDをファイルに保存してファイルの所有権が決まると思います。私が共有しmy_file.sh
て誰かが自分のシステムにダウンロードした場合、UIDは自分のUIDと一致するように変更されますか?ファイル転送方式(scp、git、httpなど)によって異なりますか?
答え1
「グループ」と「その他」のファイル権限を設定する最良の方法は何であるかわかりません。
一般的な方法は755なので、グループやその他のグループには読み取り実行権限があります。 (eg)のほぼすべてが/usr/bin
このように設定されます。
my_file.shを共有し、誰かがそれを自分のシステムにダウンロードすると、UIDは自分のものと一致するように変更されますか?ファイル転送方式(scp、git、httpなど)によって異なりますか?
ほぼ確実にUIDに設定されていますが、元の値を保持する方法があります。たとえば、tar
ファイルを開いてどこかでルートとして開くと、元の数値UIDが得られます。
ただし、これは特定のUIDがある場所にファイルを配布する特別な理由がない限り、通常は意味がありません。スクリプトを読み取って修正する能力が問題であれば、どのUIDや方法を使用してもこれを防ぐ方法はありません。ルートアクセス権を持つ他のシステムにファイルを転送する人は、そのファイルに何でもすることができます。ただし、ソースファイルへの書き込み権限がないと、ソースファイルを置き換えたり変更したりすることはできません。
ローカルシステムでは、読み取り実行権限を持つファイルをコピーでき(読み取り可能なため)、コピーにはコピーを作成したユーザーのUIDが含まれます。ファイルを実行可能にすることはできますが読み取れないようにすることはできますが、ファイルを実行可能にする必要はありません。そして実行のために読むことができます。つまり、誰もがスクリプトを使用できるようにするには、次のものが必要です。最小限にworld には、これに対する読み取りおよび実行権限があります。