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 sudoers
데비안에서는 또 다른 가능성이 언급되었습니다. 어떤 방식을 원하는지 확실하지 않지만 귀하의 질문은 선택을 원하는 것처럼 들립니다 env_reset
. /etc/sudoers
그 반대는 기본적으로 env_keep
목록입니다. 올바른 옵션을 설정하려면 이 옵션을 직접 사용 하거나 에서 다시 HOME
사용할 수 있습니다 .-H
sudo
sudoers
always_set_home
또는 다음을 env_file
지정할 수 있습니다.정밀한합격하고 싶은 환경. 하지만 모든 것을 제어할 수 있기 때문에 옵션 env_*
을 살펴보는 것이 가장 좋다고 생각합니다 .man sudoers
/etc/sudoers
env_reset
이것은 파일에서 사용하고 있는 컨텍스트의 일부입니다 sudoers
.
Defaults !lecture
Defaults env_reset
Defaults syslog=auth
Defaults log_year
답변3
언제스도환경 변수는 유지되지 않습니다.
내 경우에는여기 문서.
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
.