사용자 비밀번호와 달리 루트 비밀번호를 요청하려는 경우 입력 할 수있는 옵션이 있습니다 /etc/sudoers
. rootpw
특히 루트 암호를 요구하게됩니다. 이 runaspw
및 targetpw
뿐만 아니라; 자세한 내용은 sudoers (5) 맨 페이지를 참조하십시오.
그 외에 sudo는 PAM을 통해 다른 모든 것과 마찬가지로 인증을 수행합니다. PAM은 응용 프로그램 별 구성을 지원합니다. Sudo의 설정은 (적어도 내 데비안 시스템에서) /etc/pam.d/sudo
다음과 같습니다.
$ cat sudo
#%PAM-1.0
@include common-auth
@include common-account
@include common-session-noninteractive
즉, 기본적으로 시스템의 다른 모든 것과 마찬가지로 인증됩니다. 해당 @include common-auth
행을 변경하고 PAM (및 sudo)이 대체 암호 소스를 사용하도록 할 수 있습니다. common-auth의 주석 처리되지 않은 행은 다음과 같습니다 (기본적으로 LDAP를 사용하는 경우 달라집니다).
auth [success=1 default=ignore] pam_unix.so nullok_secure
auth requisite pam_deny.so
auth required pam_permit.so
pam_userdb.so
대신 , 예를 들어 pam_unix.so
Berkeley DB 데이터베이스에 대체 비밀번호를 저장할 수 있습니다.
예
디렉토리 /var/local/sudopass
, owner / group root:shadow
, mode를 만들었습니다 2750
. 그 안에, db5.1_load
Debian Wheezy에서 사용하는 Berkeley DB 버전 인 암호 데이터베이스 파일을 만들었습니다 .
# umask 0027
# db5.1_load -h / var / local / sudopass -t 해시 -T passwd.db
앤서니
WMAEFvCFEFplI
^D
해당 mkpasswd -m des
비밀번호는 비밀번호 "password"를 사용하여 로 생성되었습니다 . 매우 안전합니다! 불행히도 pam_userdb는 고대 crypt(3)
해싱 보다 더 나은 것을 지원하지 않는 것 같습니다 .
이제 행을 편집 /etc/pam.d/sudo
하고 제거 @include common-auth
하고 대신 다음을 수행하십시오.
auth [success=1 default=ignore] pam_userdb.so crypt=crypt db=/var/local/sudopass/passwd
auth requisite pam_deny.so
auth required pam_permit.so
pam_userdb는 .db
전달 된 데이터베이스에 확장을 추가 하므로 사용하지 않아야합니다 .db
.
코멘트 에서 dannysauer 에 따르면 동일한 편집을해야 할 수도 있습니다./etc/pam.d/sudo-i
이제 sudo를하려면 password
실제 로그인 비밀번호 대신 사용해야 합니다.
anthony @ sudotest : ~ $ sudo -K
anthony @ sudotest : ~ $ sudo echo -e '\ nit worked'
[sudo] Anthony의 비밀번호 : passwordRETURN
그것은 효과가 있었다