문제

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.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top