Sudo와 함께 실행할 때 쉘 스크립트 내부에 $ 사용자를 얻습니까?
-
06-07-2019 - |
문제
sudo로 쉘 스크립트를 실행하면 올바른 $ 사용자를 어떻게 얻습니까?
MAC 설치 패키지에서 Postinstall 스크립트로 실행하여 자동으로 Sudo-ED가 발생하지만 사용자 이름으로 작업을 수행해야합니다.
하지만 집은 맞습니다. 우연한 방법은 가정 경로에서 이름을 추출하는 것이지만,이를 수행하는 자연스러운 방법이 있는지 궁금합니다.
설치 프로그램 내부의 자동 호출이므로 스크립트가 호출되는 방식에 영향을 줄 수 없습니다.
해결책
내 시스템에서 변수 $SUDO_USER
발신자의 사용자 이름으로 설정됩니다.
에서 사용자 이름을 추출해서는 안됩니다 ${HOME}
직접 변수. 구성되고 계산되지 않습니다. 사용자 이름을 추출하려면 조사 할 수 있습니다. /etc/passwd
파일이지만 이것은 매우 시스템 의존적입니다. 예를 들어 때때로 LDAP 디렉토리를 살펴 봐야하거나 항목이 NIS를 통해 전파됩니다 ...
다른 팁
당신이 사용할 수있는 $(logname)
, 현재 Sudoing 중에도 로그인 이름을 반환합니다.
변수를 검사하십시오 sudo_user.
http://www.gratisoft.us/sudo/man/sudo.html#environment
사용자를 얻는 또 다른 방법은 누구 명령. 사용자가 sudo'd인지 아닌지 신경 쓰지 않을 때 때때로 유용합니다.
who -m | awk '{print $1;}'
SUDO_USER
휴대용이 아닙니다. Fedora 17에서는 설정이 없습니다.
그만큼 $USER
그리고 $UID
Sudo를 호출 할 때 변수는 예측할 수 없습니다. 일부 배포판은 Sudoer를보고하고 다른 배포판은 루트 사용자를보고합니다.
결코 완벽하지는 않지만 사용할 수 있습니다. test -w ~root && echo I have write access to ~root
.