우분투 서버에 접속해 암호를 변경하고자 passwd 명령어를 실행했고
나는 다음과 같은 에러를 접했다.
You must wait longer to change your password
passwd: Authentication token maipulation error
passwd: password unchanged
처음에는 패스워드를 잘못쳤나 두 세번 확인도 해보고
ssh로 서버에 접속을 다시 연결해보았다.
하지만 문제는 해결되지 않았다.
다음으로 나는 현재 사용자가 아닌 root 계정으로 비밀번호를 바꾸는 것을 시도했다.
먼저, sudo -i 명령어를 통해 root 계정으로 변경했다.
이후, passwd {사용자} 명령어를 통해 다른 계정의 명령어를 바꾸는 것을 시도했고 성공했다.
sudo -i
passwd {사용자 명}
결과는 성공.
왜 다음과 같은 현상이 일어났을까?
비밀번호를 바꾸고자 하는 사용자가 passwd 명령어를 실행할 수 있는 권한이 없었을 거라고 추측했다.
그러면 passwd 명령어를 실행하고자 하는 계정은 어떤 권한이 필요할까?
리눅스에서 passwd 명령어를 실행하면 어떤 식으로 이루어질까?
이 질문에 대한 해답으로 나는 passwd에 대해 구글링했고 리눅스에서는 /etc/passwd 파일에 계정정보를 저장한다는 것을 알게 되었다.
아! 그러면 아까 그 계정은 /etc/passwd 파일에 대한 변경 권한이 없기 때문에 passwd 명령어를 실행할 수 없었겠구나?
근데 왠걸
cat passwd
계정에 대한 정보는 볼 수 있었지만 그 어디에도 계정에 대한 암호는 적혀있지 않았다.
좀 더 찾아본 결과
계정의 암호는 /etc/shadow 에 저장된다는 것을 알게 되었다.
내 추측과 공부한 결과가 맞다면
root 계정으로 다른 계정의 암호를 변경하지 않더라도
passwd 명령을 수행하고 싶은 계정에
/etc/passwd와 /etc/shadow 파일에 대한 권한을 부여하고 passwd 명령을 실행하면 성공적으로 실행될 것이다.
요약
1. passwd: Authentication token manipulation error 에러를 만났다.
2. root 계정으로 우회해서 실행하였다.
3. 리눅스는 /etc/passwd 파일과 /etc/shadow 파일에 사용자에 대한 정보를 저장한다.
4. 해당 파일에 대한 수정 권한이 없기 때문에 passwd 명령어에 실패했다.
'일지 > 문제해결일지' 카테고리의 다른 글
[Shell] 한 줄로 포트 번호에 해당하는 프로세스 죽이기 (0) | 2022.01.05 |
---|