![질문](https://linux55.com/image/135273/%EC%A7%88%EB%AC%B8.png)
질문
사용자가 (또는 다른 방법으로) 로그인했을 때 루트로 스크립트를 어떻게 실행합니까 pam_exec.so
? 스크립트를 실행하려면 사용자에 대한 정보가 필요합니다.
문제와 환경
/path/script.sh
사용자가 로그인할 때마다 루트로 스크립트를 실행 하고 싶습니다 . 또한 로그인한 사용자(예: 스크립트에 대한 환경 변수 또는 매개변수)를 알아야 합니다. 최신 버전의 CentOS 7을 사용하고 있습니다.
현재 /etc/pam.d/system-auth
다음 줄을 편집하고 추가하고 있습니다.
session optional pam_exec.so /path/script.sh
이것은 내가 사용자일 때 제대로 작동 sudo su
하지만 다른 방법으로 사용자를 인증하면 작동하지 않습니다(스크립트는 루트로 실행해야 함). 다시 말해서,
$ su - robot7
Password:
/path/script.sh failed: exit code 1
-bash-4.2$
동시에 실패
$ sudo su - robot7
Last login: Thu Jun 14 09:33:56 MDT 2018 on pts/5
-bash-4.2$
예상대로 작동하고 스크립트를 실행하지만 주의할 점이 있습니다. 사용자가 연결을 끊을 때도 스크립트가 실행됩니다. $PAM_USER
두 번째 경우의 변수는 올바른 사용자 이름(root가 아닌robot7)입니다.
이 스크립트는 프로덕션 환경에서 사용되며 사용자는 이를 비활성화할 수 없으며 다른 셸이 있을 수 있습니다. 유사한 스크립트 .bashrc
나 다른 스크립트를 사용하여 실행할 수 없습니다.
대신 /etc/pam.d/system-auth
실행되도록 명령을 설정하면 (비슷한 질문에서 제안한 대로)auth
session
안 돼요달리다.
편집하다
seteuid
명령 에 추가하면 pam_exec.so
사용자가 인증( )할 때 스크립트를 실행할 수 있지만 su - robot7
SSH(사용자의 기본 로그인 방법)를 통해서는 실행할 수 없습니다.
답변1
보안 컨텍스트로 인해 스크립트가 실행되지 않습니다. 로그는 systemd
모든 사용자가 스크립트를 실행할 수 있음에도 불구하고 스크립트를 실행할 수 없음을 나타냅니다. 일부 보안 정책은 스크립트 경로를 좋아하지 않습니다.
스크립트를 으로 옮겼 /bin
더니 오류가 즉시 해결되었습니다.