スクリプトがあるとしましょう。remove.sh
rm -r "$1"
このスクリプトを使用して、フォルダ内のコンテンツのみを削除し、他の場所では削除しないでください~/Desktop/A
。
したがって、実行すると./remove.sh ~/Desktop/A/file1
成功する必要がありますが、実行すると./remove.sh ~/.bashrc
失敗する必要があります。
この質問の目的は、任意のスクリプトが私のホームディレクトリから何かを削除するなど、危険なタスクを実行するのを防ぐことです。
ベストアンサー1
これは、UNIXファイル権限が機能する方法ではありません。権限は個々のプログラムではなくユーザー(またはユーザーグループ)に付与されます(そうでない場合は、制限ではなくプログラムを複製するだけでよいため、これは意味があります)。
したがって、プログラムを実行できるように新しいユーザーを作成することで、実行したい操作を回避できます。そのユーザーにフォルダに対する権限(既存のUNIX所有者/グループ権限またはACLを使用)を付与します(他の人は少ない)。 。
しかし正直に言って、逆に問題を解決しているのです。他のユーザーでスクリプトを起動しても、そのユーザーでスクリプトを起動しないことで禁止を再度回避できます。
特定のSELinuxコンテキストなしでリンク解除を無効にするためにSELinuxモジュールを作成できますが、上記と同じ理由で複雑で簡単にバイパスできます。
したがって、ユーザーがプログラムを起動すると、「...を無効にします。」は機能しません。持つ物を削除する権限です。解決しようとしている問題が何であれ、まったく異なるアーキテクチャを検討したいかもしれません!