SSH 키와 사용자 adm을 사용하여 서버에 로그인하고 있는데 로그인하는 것과 동일한 사용자의 비밀번호를 재설정해야 합니다. 그러나 passwd 명령을 입력하면 실제 비밀번호를 입력하라는 메시지가 표시됩니다. 그 사용자에 대해서는 잘 모르겠습니다. 재설정할 때마다 실제 비밀번호를 제공하도록 요구하는 비밀번호 정책을 제거하려면 어떻게 해야 합니까?
답변1
설계상 Linux에서는 원래 비밀번호를 제공하지 않으면 비밀번호를 변경할 수 없습니다. 이는 (부분적으로) 귀하 자신과 귀하가 실행하는 프로그램으로부터 귀하를 보호하기 위한 것입니다(즉, 귀하가 실행하는 프로그램은 현재 비밀번호를 모르면 비밀번호를 변경할 수 없습니다).
그러나 수퍼유저 루트는 이러한 일상적인 문제에 영향을 받지 않습니다. 따라서 직접( 에 의해 su
) 또는 간접적으로( 에 의해 ) 슈퍼유저 액세스 권한이 있는 경우 sudo
해당 권한을 사용하여 현재 비밀번호가 무엇인지 알지 못한 채 슈퍼유저가 비밀번호를 재설정하도록 할 수 있습니다.
곧장:
username@host $ su -
Password: [enter root's password]
root@host # passwd username
간접적인:
username@host $ sudo passwd username
Password: [enter username's password]
현재 비밀번호를 모르기 때문에 직접 경로를 이용해야 합니다.
답변2
일반 사용자로 실행하면 이 passwd
명령은 변경하기 전에 항상 현재 비밀번호를 묻습니다. 이는 귀하의 컴퓨터에 물리적으로 접근하는 사람이 귀하의 계정을 잠그는 것을 방지하는 보안 기능입니다.
루트로 실행하면(또는 sudo 등을 사용하여) passwd
사용자 모르게 모든 사용자의 비밀번호를 변경할 수 있습니다.
여전히 sudo가 필요하거나 루트 계정에 액세스해야 하는 또 다른 방법은 루트 계정에서 해시된 비밀번호를 제거하는 것입니다 /etc/shadow
. 이는 비밀번호를 빈 비밀번호로 효과적으로 대체합니다.