시스템 업데이트/업그레이드 후 올바른 비밀번호로 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를 이동하면 예상대로 작동할 수 있습니다.