信頼されていない当事者に代わってコードを受信して実行するサーバーを作成したいと考えています。
これをより安全にするために、このコードを実行するためだけに作成されてから削除されたユーザーとしてコードを実行したいと考えています。
root 以外のユーザーに、他のユーザーを作成、偽装、および削除する権限を付与するにはどうすればよいですか?
sudoおよび/etc/ sudoersを使用してroot以外のユーザーにアクセス許可を付与できる場合もありますが、この方法は安全ではなく、線形でもないようです。何が必要かわかりませんが、ユーザーを事前に作成して使用できるかもしれません。
これを実行できる唯一の方法は、ルートを setuid したプロキシ プログラム (つまり、chown root my-proxy-process; chmod 47nn my-proxy-process) を使用することです。この setuid プロキシ プログラムは、セキュリティの考慮事項を処理し、setuid を実行します。指定されたユーザーなどに
ただし、これに関するセキュリティ上の問題はかなり明確です。制限できる 1 つの方法は、特権のないプロセスが名前グループ内のユーザーで実行されるようにすることです。次に、root:myprivategroup を使用して t proxy コマンドを chown し、4710 として chown して、myprivategroup のメンバーであるユーザーのみが実行できるようにします。
これはおそらく可能な限り安全です。主なことは、適切なユーザーのみがグループ メンバーシップを介してプロキシ プロセスを実行できるように、プロキシ プロセスが適切で安全であり、ロックされていることを確認することです。
ユーザーが指定したプロセスに適用できることがわかっている制限が他にある場合、プロキシ プログラムは、プロセスがそれらの規則に準拠していることを検証できます。これは応急処置かもしれませんが、誰かがテストに合格する「悪い」プログラムを作成することは、技術の領域を超えるものではないことに注意してください。
セキュリティを強化するには (推奨)、mark4o で言及されているように、サンドボックスまたは chroot 監獄を使用します。
ターミナルなしでは su vie スクリプトを使用できないため、これは問題です (おそらくセキュリティ機能のため)。これをハッキングできると確信していますが、おそらく正当な理由で行われました。