ユーザーenvを使用するには、sudo -u $ userを取得するにはどうすればよいですか?


19

ときに思えるsudo使用していることをダウンINGのsudo -u $user根の環境がまだ使用されていること。sudoユーザー環境を使用するにはどうすればよいですか?特別な注意として、これを使用するすべてのユーザーがログインシェルを持っているわけではありません。


「環境」を定義します。 # whoami => root # sudo -u user whoami => user
アレックス

1
@alex Iの図sudo -u usersu user、使用する必要があるsuのenvを切り替えるのに似ていますsu - user
-xenoterracide

しかし、ユーザーがログインシェルを持っていない場合、「ユーザーの環境」とはどういう意味ですか?
トーマスセメル

@Thomasユーザーは、シェルインできない場合でもプログラムを実行できます... -uグループも無視すると思います...ルートから何かを試してみました(sudo -u downを使用) ..だから、そこにあるすべての制限と環境問題を持つような方法でコマンドを実行していることを確認する必要があります。
ゼノテラサイド

回答:


21

試して sudo -i -u $user

gerald@book:~$ env |grep HOME
HOME=/home/gerald
gerald@book:~$ sudo -u ubuntu env |grep HOME
HOME=/home/gerald
gerald@book:~$ sudo -i -u ubuntu env |grep HOME
HOME=/home/ubuntu

彼らは、シェル内を持っていない場合は、残念ながら仕事はしていません/etc/passwd:(それは私が推測やる...
xenoterracide

マニュアルページを見ると、-E環境を保存しているように見えます。つまり、すべての環境変数などがそこにありますが、まだ設定されておらず、呼び出し元のユーザーに設定さPATHLD_LIBRARY_PATHています。
シャーバズ

1
$SUDO_USER使用することができます
ラーフルパティル

4

man sudoersDebianでは別の可能性に言及しています。どちらの方法がいいのかわからないが、あなたの質問はあなたがenv_resetオプションを持ちたいと思うように聞こえる/etc/sudoers-反対は基本的にenv_keepリストです。適切な値を設定HOMEするには、-Hオプションをsudo直接使用するか、オプションで使用sudoersalways_set_homeます。

あるいは、使用env_fileする正確な環境を指定するために使用できます。しかし、私はあなたがチェックアウトする場合、それが最善だと思うenv_*からオプションをman sudoersので、/etc/sudoersコントロールそれはすべて、それを有効にするポイントです。

ファイルenv_reset内で使用するコンテキストの一部を次に示しsudoersます。

Defaults        !lecture
Defaults        env_reset
Defaults        syslog=auth
Defaults        log_year

1

sudo ing環境変数が保存されない場合。

私の場合、here-documentを使用しています

my_script.shこちらのドキュメント内などのアクションを配置します。

su -u some_user <<EOF
./my_script.sh
EOF

変数は現在のユーザーから解釈されるため、ここに変数を直接配置しないでください。

su -u some_user <<EOF
./my_script.sh $MY_VAR
EOF

$MY_VARスクリプトを実行しているユーザーにが設定されていない場合、設定されません。

変数はスクリプト内で呼び出すか、でエスケープする必要があります\

例えば。

su -u some_user <<EOF
./my_script.sh \$MY_VAR
EOF

ここで$MY_VARは、some_userコンテキスト値があります。


いい答えです。1つの小さな修正:のsu - some_user代わりになりsu -u some_userます。
rudolfbyker
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.