1

私はしばしば別のユーザーとして仕事で走る必要があります。私はいつも次のようなことをしました

$ echo "$PWD/batchToRun -parameters" | sudo su - otheruser -c "at now"

batchToRunまた、 otheruserのcrontabを介して実行するようにスケジュールされています。これは、を実行しているユーザーの環境から渡されるLANG(誰かを並べ替える?)batchToRunなどの環境変数の設定の微妙な副作用に応じて開始するまでうまく機能します。sudo

私は通常、 otheruserとしてログインしたくありません。これは半特権のアカウントであり、関連するアクティビティの「紙の証跡」を作成して、戻って、誰が、いつ、何をしたかなどを正確に確認できるようにしたいと思います。

そのような設定から独立しているという明らかな書き直しbatchToRunに加えて、sudoerの環境がターゲット環境を汚染しないようにするための良い方法は何ですか?

注:これはFC7(sudoバージョン1.6.8p12)およびその他の古いディストリビューションにあるため、//の光沢のある新機能sudo(特にsuatに引数を渡す機能-isudoは私の理解の範囲外です。

更新:これsu - otheruserは実際にはユーザー間の十分なファイアウォールであり、私の汚染はインタラクティブな起動シーケンスの何かから来ていることがわかりました。しかし、私はまだenv編集機能が好きです。

4

2 に答える 2

1

実行する前に環境を削除できますat

echo "command ..." | env - PATH="$PATH" sudo su - otheruser -c "at now"

sudoオプションを設定することで、これを行うように手配することもできenv_resetます。たとえば、自分のユーザー アクセス権を他のユーザーatとして直接 (ルートにしてから別のユーザーにではなく)実行できるようにしてから、そのユーザーまたはそのコマンドsudoのコマンドで env_reset を設定できます (sudoers のマニュアル ページを参照)。Defaults

しかし、上記はおそらく、今日の一般的なやり方を変えることなく、最も簡単な解決策です。

于 2013-03-22T22:33:08.900 に答える
0

の環境の「汚染」は、コマンドの環境otheruserに限定する必要があります。at実際に実行するときは、通常のデフォルト環境を使用してbatchToRun実行されます。otheruserつまりat now、コマンドによって生成されたシェルでのみ実行されsu sudoます。

于 2013-03-22T16:58:13.350 に答える