sudo 비밀번호를 로그인 비밀번호와 다르게 설정하세요.

sudo 비밀번호를 로그인 비밀번호와 다르게 설정하세요.

sudo권한이 있는 사용자로서 로그인할 때 사용하는 다른 비밀번호로 비밀번호를 설정해 보았습니다 .

몇 가지 조사를 해보았으나 답을 찾지 못했습니다. sudo이러한 구성이 지원됩니까?

비밀번호를 잊어버리면 모든 것을 잃게 됩니다. 누군가가 root동일한 비밀번호로 로그인하여 자신을 홍보할 수 있습니다.

sudoroot발신자의 비밀번호( ) 대신 비밀번호를 물어보는 옵션이 있지만 rootpw, root비밀번호를 공유하는 것은 절대 옵션이 아니기 때문에 설정해 놓았습니다 sudo.

과거에 해본 적이 config 2FA있어서 잘 작동했지만 자동화라는 목표를 달성하지 못했습니다. 예를 들어 스크립트를 사용하여 12개의 서버에서 권한 있는 명령을 실행하려는 경우 expectadd를 사용하면 2FA이를 수행할 수 없습니다.

sudo내가 찾은 가장 가까운 해결책은 SSH 개인 키만 허용하고 (로그인) 비밀번호와 다른 키로 비밀번호를 설정하는 것입니다. 그래도 긴급상황에 해당 키가 없으면 컴퓨터로 로그인을 할 수 없기 때문에 별로 편하지는 않습니다.

답변1

사용자 비밀번호 대신 루트 비밀번호를 묻는 메시지를 표시하려면 에 몇 가지 옵션을 입력하면 됩니다 /etc/sudoers. rootpw특히 루트 비밀번호를 입력하라는 메시지가 표시됩니다. 예 runaspw, targetpw그렇습니다. 자세한 내용은 sudoers(5) 맨페이지를 참조하세요.

그렇지 않으면 sudo는 다른 모든 것과 마찬가지로 PAM을 통해 인증합니다. PAM은 애플리케이션별 구성을 지원합니다. Sudo의 구성은 (적어도 내 Debian 시스템에서는) /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.soBerkeley DB 데이터베이스에 대체 비밀번호를 저장할 수 있습니다 .

나는 디렉토리 /var/local/sudopass, 소유자/그룹 root:shadow, 스키마를 만들었습니다 2750. 그 안에 비밀번호 데이터베이스 파일을 만들었습니다 db5.1_load(Debian Wheezy에서 사용되는 Berkeley DB 버전입니다).

#마스크 0027
# db5.1_load -h /var/local/sudopass -t hash -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.

~에 따르면데니사우어존재하다코멘트/etc/pam.d/sudo-i, 동일한 수정 작업을 수행해야 할 수도 있습니다.

password이제 sudo의 경우 실제 로그인 비밀번호 대신 다음을 사용해야 합니다 .

앤서니 @sudotest:~$ sudo -K
anthony@sudotest:~$ sudo echo -e '\nit 작업'
[sudo] Anthony의 비밀번호:passwordRETURN

효율적인

답변2

Redhat/Centos의 경우 이 요구 사항은 다음 단계를 통해 달성할 수 있습니다.

맞춤 사용자를 생성하고 다음을 전달합니다.

# db_load -t hash -T /usr/local/etc/passwd.db
user
pass
^d

sudo pam.d 파일을 다음과 같이 편집합니다.

$ cat /etc/pam.d/sudo

auth            required        pam_userdb.so db=/usr/local/etc/passwd
account         required        pam_userdb.so db=/usr/local/etc/passwd
password        include         system-auth

session         optional        pam_keyinit.so revoke
session         required        pam_limits.so

특정 사용자/그룹만 이 사용자 지정 방법을 통해 인증해야 하고 다른 사용자/그룹은 여전히 ​​일반 시스템 인증 방법을 통해 인증할 수 있도록 구성하는 방법을 찾고 있습니다. 누구든지 나에게 조언을 해줄 수 있습니까?

답변3

나는 sudo가 그러한 설정을 지원하지 않는다고 생각합니다. sudo 비밀번호 프롬프트의 목적은 sudo 명령을 실행하는 사람이 로그인한 사람과 동일한지 확인하는 것이며, 가장 간단한 방법은 현재 로그인한 사용자에게 재인증을 요구하는 것입니다.

즉, sudo 비밀번호 프롬프트의 목적은 다음과 같습니다.아니요설립하다권한즉, 확립하다신원. 설정된 ID와 sudo 구성을 기반으로 해당 사용자에게 필요한 권한이나 액세스 권한이 있는지 여부를 판단할 수 있습니다.

답변4

이를 테스트하고 세부 사항을 해결할 수 있는 시스템에 즉시 액세스할 수는 없지만 다음과 같은 아이디어가 있습니다.

  • (일반 로그인 계정은 이라고 가정합니다 shau.)
  • 두 번째 계정 만들기: shau2. (당신이 와 동일한 UID를 갖기를 원하는지는 잘 모르겠습니다 shau.)
  • shau2sudo 권한을 가지려면 NOPASSWD로 구성하세요 .
  • 작업을 수행하려면 별칭이나 쉘 스크립트를 설정하십시오 su shau2 -c sudo "$@". shau2비밀번호를 요청해야 합니다 . 올바르게 입력하면 실행됩니다 sudo( shau2 비밀번호 필요 없음).
  • sudo 권한을 제거했습니다 shau.

안타깝게도 sudo 권한이 있는 각 사용자에 대해 이 작업을 반복해야 합니다.

관련 정보