sudo -u $userにユーザーエクスペリエンスを使用させるにはどうすればよいですか?

sudo -u $userにユーザーエクスペリエンスを使用させるにはどうすればよいですか?

sudoダウン時にもsudo -u $userまだルート環境を使用しているようです。sudoユーザーエクスペリエンスを活用するには?特に注目すべき点は、この機能を使用するすべてのユーザーがログインシェルを持っているわけではないということです。

答え1

努力する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

答え2

man sudoersDebian ではもう一つの可能​​性が言及されています。どのような方法が欲しいのかわかりませんが、あなたの質問は選択したいと思われますenv_reset/etc/sudoersその逆は基本的にenv_keepリストです。正しいオプションを設定するには、このオプションを直接使用するか、から再HOME利用できます。-Hsudosudoersalways_set_home

または、以下をenv_file指定できます。精密合格したい環境。しかし、すべてを制御できるので、オプションを見てみるのがenv_*最善だと思います。man sudoers/etc/sudoers

env_resetこれはファイルで使用されているコンテキストの一部ですsudoers

Defaults        !lecture
Defaults        env_reset
Defaults        syslog=auth
Defaults        log_year

答え3

いつSudo環境変数は保持されません。

私の場合ここのドキュメント

my_script.shあなたの行動をHEREドキュメントに入れてください:

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

関連情報