bashまたは同様のコマンドにパラメータを渡してコマンドを実行して、コマンドが特定のパスに書き込めないようにし、ユーザーの他の権限を無視できるようにしたいです。
たとえば、
root> /bin/bash -protect /folder/to/protect mycommand.sh
この例では、rootユーザーは自分が望むものを明確にすることができますが、作成中の新しいスクリプトをテストするときにそのユーザーだけが読み取ることができるようにフォルダを保護したいと思います。
新しいユーザーを追加し、それに応じてそのユーザーの権限を調整せずにこれを行う方法はありますか?ところで、bashにいる必要はありません。このアプローチは気に入らない。新しいユーザーを追加せずにフォルダを保護できる場合は大丈夫です!
答え1
Unixセキュリティは、ユーザーとグループの権限に基づいています。コマンドのディレクトリを読み取り専用にするには、そのディレクトリに書き込めないユーザーとしてそのコマンドを実行する必要があります。または、仮想マシンでコマンドを実行するより大胆な方法があります。
あなたは見つけることができますファイルシステムバインディング効果があるBindfsはスタックファイルシステムです。つまり、ディレクトリツリーの一部の代替ビューを作成します。特に、読み取り専用ビューまたは他の権限を持つビューを作成できます。 Bindfsはそれを読み取り専用にすることはできませんが、/folder/to/protect
ディレクトリの読み取り専用ビューを作成できます/read/only/view
。コマンドが `/folder/to/protect に書き込まれないようにするには、権限などの他の方法を見つける必要があります。
bindfs --perms=a-w /folder/to/protect /read/only/view
答え2
共有ライブラリを作成し、その周りにラッパーを実装して、open
必要な追加のセキュリティチェックを実行できます。これにより、作成したプログラムはLD_PRELOAD
それを使用して共有ライブラリをロードし、プログラムが呼び出されたときにシステムをオーバーライドできますopen
。
プログラムが望むことを達成するための他の方法がないように、他のシステムコールをオーバーライドする必要があるかもしれません。