SSH 로그인 전에 스크립트를 실행하세요. 하지만 한 번만 실행하세요.

SSH 로그인 전에 스크립트를 실행하세요. 하지만 한 번만 실행하세요.

누군가가 이 문제에 대한 통찰력을 제공할 수 있기를 바랍니다. SSH 로그인 전에 스크립트를 실행하는 솔루션을 찾았습니다. 이는 /etc/pam.d/sshd에 다음 줄을 배치하고 /etc/ssh/sshd_config에서 pam 인증을 허용함으로써 수행됩니다.

session    required pam_exec.so /home/pc/myScript.sh

잘 작동합니다. 제가 발견한 문제는 SSH 세션을 종료한 후 스크립트가 다시 실행된다는 것입니다. 이 특정 동작은 내 스크립트의 목적을 완전히 무너뜨립니다. 이 문제를 해결할 수 있는 방법이 있습니까? 실행 시간이라면 파일에서 쓰거나 읽을 수 있을 것 같은데, 더 좋은 방법이 있는지 궁금합니다.

추가 정보

  • 운영 체제는 Fedora Server ARM 29입니다.
  • wall쉘 스크립트를 실행하여 스크립트가 두 번 실행되었음을 확인했습니다.
  • 이것은 내 /etc/pam.d/shhd입니다

.

#%PAM-1.0
auth       substack     password-auth
auth       include      postlogin
account    required     pam_sepermit.so
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so

### My script
session    required pam_exec.so /home/pc/aScriptThatShouldOnlyRunOncePriorToLogin.sh
###
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    optional     pam_motd.so
session    include      password-auth
session    include      postlogin

답변1

예를 들어 PAM에서 제공되는 환경 변수를 사용할 수 있습니다.$PAM_TYPE

#!/bin/sh
if [ "$PAM_TYPE" != "open_session" ]
    then exit 0
else
    Your script here

편집: 참조:http://www.linux-pam.org/Linux-PAM-html/sag-pam_exec.html

관련 정보