状況。特別なシェルに遅れをとる制限されたユーザーの環境をデバッグしています。これを行うには、次のようにsuを使用して、完全なコンテキストでそのユーザーとしてコマンドを実行する必要があります。
su - $user -c "echo hello world" --shell /bin/custom_shell
/ bin / custom_shellが実行するコマンドのコマンドとパラメーターを明らかに変更できますが、custom_shellが実行するパラメーターを追加するにはどうすればよいですか?「--debug」パラメーターを追加することと同等の例:
root->su - $user
$user->/bin/custom_shell --debug --command "echo hello world"
注:ログイン中に行われる多くのプロファイル変数と作業ディレクトリの変更があるため、sudoはこれに対して機能しません。したがって、suを使用している理由です。また、これは奇妙な断続的な問題であり、そうでなければスクリプトを実行して実行する必要があります。su-$ userとコマンドを手動で実行すると動作する場合があります。
しかし、これらすべてのカスタムプロファイル変数は、ユーザーのシェルによって読み込まれるのではありませんか?suの--shellによって呼び出され、別の方法では呼び出されないかどうかは本当に重要ですか?
—
-grawity
はい。重要です。sudo -u $ user echo 1は、su-$ user --command "echo 1"とはセキュリティおよび作業ディレクトリのコンテキストとは大きく異なります。
—
ラスティウェーバー
これは主に
—
grawity
-l
/ --login
オプションをsuに渡しているが、sudoには渡していないためだと思います。(とにかく--loginは何をしますか?-lオプションを指定してシェル自体を実行します。他にあまりありません。)