martin
사용자 martin-test
가 비밀번호없이 사용자 로 전환 할 수 있도록해야 합니다
su - martin-test
나는 이것이에서 구성 될 수 있다고 생각한다 /etc/pam.d/su
. 주석 처리를 해제 할 수있는 파일이 이미 해당 파일에 있습니다. 그러나 martin
그룹에 사용자 를 추가하는 아이디어가 마음에 들지 않습니다 wheel
. martin
로 전환 할 수있는 것보다 더 많은 권한 을 부여하고 싶지 않습니다 martin-test
. 또한 사용하고 싶지 않습니다 sudo
.
사용자의 권한을 martin
최소화 하면서 최선의 방법은 무엇입니까 ?
답변
의 줄 바로 아래에 다음 줄을 추가 pam_rootok.so
하십시오 /etc/pam.d/su
.
auth [success=ignore default=1] pam_succeed_if.so user = martin-test
auth sufficient pam_succeed_if.so use_uid user = martin
이 라인은 pam_succeed_if.so
모듈을 사용하여 점검을 수행합니다 . 라인 에 대한 자세한 내용은 Linux-PAM 구성 파일 구문 을 참조하십시오 auth
.
- 첫 번째 줄은 대상 사용자 가 있는지 확인합니다
martin-test
. 만약 그렇다면 아무 일도 일어나지 않으며 (success=ignore
) 다음 줄에서 계속해서 현재 사용자 를 확인합니다 . 그렇지 않은 경우 다음 줄은 건너 뛰고 (default=1
) 일반적인 인증 단계로 다음 줄을 계속합니다. - 두 번째 줄은 현재 사용자인지 확인합니다
martin
. 일치하면 시스템은 인증 프로세스를 성공한 것으로 간주하고 (sufficient
)를 반환합니다 . 그렇지 않은 경우 아무 일도 일어나지 않으며 일반적인 인증 단계로 다음 줄을 계속 진행합니다.
su
그룹으로 제한 할 수도 있습니다 . 여기에서 그룹 allowedpeople
은 su
비밀번호없이 할 수 있습니다 .
auth sufficient pam_succeed_if.so use_uid user ingroup allowedpeople
답변
그룹을 변경 sudo
하거나을 사용하지 않으려면 pam_exec
pam 단계에서 외부 스크립트를 실행하기 위해 호출되는 pam 모듈을 사용하십시오 .
줄 /etc/pam.d/su
뒤에 줄을 추가하십시오 pam_rootok.so
.
auth sufficient pam_exec.so quiet /path/to/script
/path/to/script
권한 755 (rwxr-xr-x) 및 다음 내용이 있습니다.
#!/bin/bash
if [ "$PAM_TYPE" == "auth" ] && \
[ "$PAM_USER" == "martin-test" ] && \
[ "$PAM_RUSER" == "martin" ]; then
exit 0
else
exit 1
fi
따라서이 스크립트는 다음과 같은 경우에 성공합니다 su
.
- 인증의 맥락에서 호출됩니다.
- 호출 사용자가
martin
와 - 인증 할 사용자는
martin-test
입니다.
보다:
martin@host:~$ su - martin-test
martin-test@host:~$ exit
martin@host:~$ su - otheruser
Password: ****
otheruser@host:~$
답변
루트 계정에 액세스 할 수 없지만 명령을 실행하는 데 사용하려는 사용자의 비밀번호가있는 경우 다음을 수행 할 수 있습니다.
- 이것은 당신에게 토토의 암호를 물을 것입니다 : su-toto -c whoami
- 이것은하지 않습니다 : ssh toto @ localhost whoami
toto의 authorized_keys에 공개 키를 설치하십시오.
답변
내 간단한 해결책은 다음과 같습니다.
sudo login -f martin-test
모든 비용으로 sudo를 피하고 싶다면 이것을 스크립트에 넣는 것이 가능해야한다고 생각합니다.
- 루트 및 루트 권한이있는 소유 ( setuid 플래그 사용)
- 모든 사람에 의해 실행 가능하며 sudo가 없습니다.
그러나 실제로 작동하게하기 위해 chown root
및 chmod +s ToTest.sh
비트를 알 수는 없습니다 .
#!/usr/bin/env bash
echo howdy, I am $(whoami)
sudo login -f martin-test
에코가 알려주는 것처럼 여전히 일반 사용자로 실행됩니다. 그리고 여전히 sudo 비밀번호가 필요합니다. 루트로 실행 중이 sudo
면 마지막 줄에서를 제거 할 수 있습니다 …