sudo 비밀번호 업그레이드 실패 - /etc/shadow 해시는 정상, 그룹은 정상, /etc/sudoers는 정상

sudo 비밀번호 업그레이드 실패 - /etc/shadow 해시는 정상, 그룹은 정상, /etc/sudoers는 정상

시스템 업데이트/업그레이드 후 올바른 비밀번호로 sudo를 사용하여 업그레이드할 수 없습니다.

user $ sudo -s
[sudo] password for user: ********************
Sorry, try again.
[sudo] password for user: ********************
Sorry, try again.

(이것은 VPS입니다. 로그인은 다음을 통해 이루어집니다.SSH비밀번호 없음 - 비밀번호만 필요함스도)

그룹 설정이 정확합니다.

$ groups user
user : user sudo docker

이 노선은/etc/sudoers:

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

구조 모드에서 비밀번호를 재설정하고 내용을 다시 확인하세요./etc/shadow독립 계획 반대:

mkpasswd --method=sha-512 --salt=GiHwtvMC
Password: ********************
$6$GiHwtvMC$pONfZo5...<omitted>...Vg5c0

출력은 표시된 해시와 정확히 일치합니다./etc/shadow. 아직스도업그레이드에 실패했습니다.

방지할 수 있는 다른 시스템 설정이 있습니까?스도올바른 비밀번호를 사용하여 업그레이드하시겠습니까?

(업그레이드에는 내가 허용하도록 설득하는 표적화되고 의도적인 해킹이 포함될 수 있다는 생각이 들었습니다.스도비밀번호 없이 업그레이드가 가능하지만 그럴 가능성은 거의 없습니다.)


콘텐츠/etc/sudoers, 댓글이 삭제되었습니다

Defaults        env_reset,timestamp_timeout=-1
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:"
root    ALL=(ALL:ALL) ALL
%admin ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL

/var/log/auth.log에서 발췌

Jan 31 10:46:48 izu sshd[1126]: Accepted publickey for username from 111.111.111.11 port 52768 ssh2: RSA SHA256:<omitted>
Jan 31 10:46:48 izu sshd[1126]: pam_unix(sshd:session): session opened for user username by (uid=0)
Jan 31 10:46:48 izu systemd-logind[679]: New session 1 of user username.
Jan 31 10:46:48 izu systemd: pam_unix(systemd-user:session): session opened for user username by (uid=0)
Jan 31 10:46:48 izu sshd[1126]: User child is on pid 1150
Jan 31 10:46:48 izu sshd[1150]: Starting session: shell on pts/0 for username from 111.111.111.11 port 52768 id 0
Jan 31 10:47:16 izu sudo: pam_unix(sudo:auth): authentication failure; logname=username uid=1000 euid=0 tty=/dev/pts/0 ruser=username rhost=  user=username

문제는 전작의 수정에 있다/etc/pam.d/common-auth로그 파일 발췌 내용을 이메일로 보낼 수 있습니다.

# here are the per-package modules (the "Primary" block)
auth    [success=1 default=ignore]  pam_unix.so nullok_secure

# ADDED HOOK NOW REMOVED
auth    optional  pam_exec.so seteuid /etc/local/lib/pam_auth_fail_notify.sh    

# here's the fallback if no module succeeds
auth    requisite           pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth    required            pam_permit.so
# and here are more per-package modules (the "Additional" block)
# end of pam-auth-update config

답변1

문제가 무엇인지에 대한 @steve 제안/etc/pam.d맞다.

문제는 로그 파일 발췌를 이메일로 보낼 수 있도록 허용한 /etc/pam.d/common-auth의 이전 수정에 있습니다.

# here are the per-package modules (the "Primary" block)
auth    [success=1 default=ignore]  pam_unix.so nullok_secure

# ADDED HOOK NOW REMOVED
auth    optional  pam_exec.so seteuid /etc/local/lib/pam_auth_fail_notify.sh    

# here's the fallback if no module succeeds
auth    requisite           pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth    required            pam_permit.so
# and here are more per-package modules (the "Additional" block)
# end of pam-auth-update config

AFIR, 이 문서 및 기타 문서/etc/pam.d반환 값을 스택에 푸시하는 순차적 지침이 포함되어 있습니다. 이해하기 쉽지 않고 깨지기 쉬우며 업데이트에 민감한 것으로 보입니다.

수정의 목적은 두 가지를 모두 포착하는 것입니다.스도그리고로그인(그리고SSH키 로그인? ) 어느 시점에서 실패합니다. 스택익스체인지 어디선가 본 내용인데... 이제 정통적인 방식으로 각 기능을 따로 구현해보겠습니다. 나쁜스도쉽습니다. 이 두 줄만 입력하면 됩니다./etc/sudoers

Defaults    mail_badpass
Defaults    mailerpath="/usr/local/sbin/sendmail"

내 경우에는 이이메일을 보내표준이 아닙니다. API를 통해 무료 이메일 서비스로 전송됩니다. 이 줄은 공식 메일 설정에는 필요하지 않습니다.

답변2

Pam 설정 문제는 Ubuntu가 pam을 빌드하는 새로운 방식([success=1 default=ignore])으로 인해 발생할 가능성이 높습니다.

pam_unix가 성공하면 한 줄을 건너뜁니다. pam_deny를 건너뛸 것으로 예상했지만 대신 pam_exec를 건너뛰고 pam_deny를 실행했습니다. pam_deny와 pam_succeed 사이에서 pam_exec를 이동하면 예상대로 작동할 수 있습니다.

관련 정보