이는 이 질문과 유사합니다.
user1이 비밀번호 없이 "su - user2"를 수행하도록 허용
그러나 이 솔루션은 여러 사용자가 한 사용자에게 "su" 액세스하는 경우에만 작동합니다.
#works fine :) 2 or more users accessing 1 user
auth [success=ignore default=1] pam_succeed_if.so user = user1
auth sufficient pam_succeed_if.so use_uid user = user2
auth sufficient pam_succeed_if.so use_uid user = user3
n명의 사용자를 n명의 사용자에게 이전하려고 하면 다음과 같습니다.
#dont work :(
auth [success=ignore default=1] pam_succeed_if.so user = user1
auth sufficient pam_succeed_if.so use_uid user = user2
auth sufficient pam_succeed_if.so use_uid user = user3
auth [success=ignore default=1] pam_succeed_if.so user = user4
auth sufficient pam_succeed_if.so use_uid user = user2
auth sufficient pam_succeed_if.so use_uid user = user3
PAM 오류가 발생하거나 비밀번호를 요청합니다.
답변1
[success=ignore default=1]
내가 이해한 바로는, 모듈이 성공 이외의 결과를 반환하면 코드는 1개의 모듈을 건너뛰는 것을 의미합니다. 다음 단계로 이동하려면 2단계를 건너뛰어야 할까요 pam_succeed_if
?
답변2
인증 순서를 다음과 같이 변경해야 합니다.
auth [success=1 default=ignore] pam_succeed_if.so user = user1
auth [success=ignore default=1] pam_succeed_if.so user = user4
auth sufficient pam_succeed_if.so use_uid user in user2:user3
답변3
pam_exec.so
마무리는 안하고 사용하고 있어요 pam_succeedif.so
.
직후 /etc/pam.d/su
:pam_rootok.so
auth sufficient pam_exec.so quiet /etc/pam.d/check_user.sh
존재하다 /etc/pam.d/check_user.sh
:
#!/bin/bash
[[ -z $PAM_RUSER ]] && PAM_RUSER=$PAM_USER # under some circumstances pam_exec.so does not pass PAM_RUSER to the script
[[ "$PAM_TYPE" == "auth" ]] || exit 1
case "$PAM_RUSER" in
user1) USERS="user1 user2" ; ;;
user3) USERS="user3 user4" ; ;;
*) exit 1 ; ;;
esac
[[ "$USERS" =~ "$PAM_USER" ]]