"pam_succeed_if.so"가 "service" 사용자를 식별하도록 하려면 어떻게 해야 합니까?

"pam_succeed_if.so"가 "service" 사용자를 식별하도록 하려면 어떻게 해야 합니까?

나는 사용자 이름을 일치시키기 위해 service이 모듈을 사용하고 있는 Linux 시스템을 가지고 있습니다 . pam_succeed_if.so예를 들어:

auth      required      pam_succeed_if.so user = service

그러나 이는 사용자 이름과 일치하지 않습니다 service. 이는 허용되는 필드이기 때문인 것 같습니다 pam_succeed_if.so. 매뉴얼 페이지에서 (강조를 위해 편집됨):

사용 가능한 필드는 user, uid, gid, shell, home, ruser, rhost, tty 및제공하다

필드 이름과 일치하는 값을 이스케이프 처리하는 방법은 무엇입니까?

추가 문제 해결:

debug옵션이 켜져 있고 pam_succeed_if.so사용자 이름이 다음 service으로 변환됩니다 login.

login: pam_succeed_if(login:auth): 'user' resolves to 'login'

이는 로그인에 사용되는 PAM 구성입니다 /etc/pam.d/login.

답변1

pam_succeed_if.so값이 존재하는 경우 전달된 값을 user값으로 변환합니다. field예를 들어 사용자를 사용하면 다음과 같습니다 shell.

login: pam_succeed_if(login:auth): 'user' resolves to '/bin/bash'

나는 이것이 명백히 인기가 없는 결정을 내리는 것을 어떻게 막을 수 있는지 모르겠습니다. 그러나 거의 모든 사람에게 적용되는 솔루션이 있습니다.

실제 값이 아닌 구문 분석된 값을 확인하세요.

servicePAM 구성 에서 사용자를 일치시키려면 다음을 수행하십시오 login.

auth      required      pam_succeed_if.so user = login

servicePAM 구성 에서 사용자를 일치시키려면 다음을 수행하십시오 sshd.

auth      required      pam_succeed_if.so user = sshd

shell사용자를 일치시키기 위해 구성된 쉘은 다음과 같습니다 /bin/bash.

auth      required      pam_succeed_if.so user = /bin/bash

관련 정보