insecurecommand
私はUnixユーザーがファイルに保存された制御された引数のリストを使用してのみ特定のコマンドを実行できるようにしたいと思います。
これまで私が見つけた唯一の解決策は次のとおりです。
- 名前付きの新しいセキュリティグループを作成します。
cmdxg
コマンドの実行をこのグループに制限します。
chown root:cmdxg /.../insecurecommand chmod 750 /.../insecurecommand
次のコマンドを実行する setgid ラッパーを作成します。
ls -al /.../mywrapper -rwxr-sr-x 1 root cmdxg /.../mywrapper
唯一の問題は、insecurecommand
ユーザーの実際の gidgid=cmdxd
ではなく、ユーザーの実際の gid として実行されることです。しかし、insecurecommand
setgidコマンドを実行したくありません。
ラッパーコードでseteuid()を使用して実際のgidを返すと、プロセスは権限を失ったinsecurecommand
ため実行できなくなります。cmdxg
特権的なgid権限が必要ですが、実際のgidを持つコマンドを実行する方法はありますか?
たぶんプログラムの実行を中止する必要がありますか?
-> 特権有効な gid を使用して最初にバイナリファイルをロードする -> 実際の gid を返す -> プログラムを実行する
しかし、どうすればいいですか?
どんなアイデアがありますか?