본문 바로가기

일지/문제해결일지

[Ubuntu] passwd: Authentication token manipulation error

우분투 서버에 접속해 암호를 변경하고자 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 명령어에 실패했다.