내 Ubuntu 22.04 시스템에는 Alice와 Sally라는 두 명의 사용자가 있습니다. Alice는 .profile 파일에 환경 변수를 구성했으며 해당 변수는 올바르게 작동하고 있습니다. 그러나 Alice가 sudo -s -u sally 명령을 사용하여 사용자 Sally로 전환하면 Alice의 .profile에 있는 환경 설정이 Sally에 반영되지 않습니다.
alice@dev7 192 0 % echo $appuser
alice
alice@dev7 193 0 % env | grep appuser
appuser=alice
alice@dev7 194 0 % sudo -s -u sally
sally@dev7 196 0 % echo $appuser
sally@dev7 197 0 %
.profile 파일이 Sally의 홈 디렉터리에 있고 필요한 구성이 있는지 확인했습니다. Alice가 sudo -s -u sally를 사용하여 사용자로 전환할 때 Sally에 환경 변수가 적용되지 않는 이유를 알고 싶습니다. 이러한 방식으로 사용자를 전환할 때 환경 설정이 그대로 유지되도록 하려면 추가 단계나 구성이 필요합니까?
답변1
~/.profile
은(는) 사용자 로그인에서 제공됩니다. 따라서 "대상 사용자의 비밀번호 데이터베이스 항목에 지정된 쉘을 로그인 쉘로 실행"하려면 다음과 같이 sudo -u user
를 사용해야 합니다 .-i, --login
sudo -i -u sally
알아채다-i
: 및 옵션을 모두 지정할 수는 없습니다 -s
.
그러나 현재 사용자가 선택한 쉘을 유지하려면 sudo su ...
다음과 같이 사용할 수 있습니다.
sudo su - sally --shell "$SHELL"
또는 다음과 같이 쉘 선택을 지정하십시오 /bin/bash
.
sudo su - sally --shell /bin/bash
대상 사용자의 비밀번호 데이터베이스 항목에 지정된 쉘에 관계없이.