여러 사용자가 비밀번호 없이 다른 여러 사용자에게 "su"할 수 있도록 허용

여러 사용자가 비밀번호 없이 다른 여러 사용자에게 "su"할 수 있도록 허용

이는 이 질문과 유사합니다.

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" ]]

관련 정보