![루트가 아닌 사용자는 루트로 passwd 명령을 실행할 수 있는데 루트 비밀번호를 변경할 수 없는 이유는 무엇입니까? [복사]](https://linux55.com/image/82769/%EB%A3%A8%ED%8A%B8%EA%B0%80%20%EC%95%84%EB%8B%8C%20%EC%82%AC%EC%9A%A9%EC%9E%90%EB%8A%94%20%EB%A3%A8%ED%8A%B8%EB%A1%9C%20passwd%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%8B%A4%ED%96%89%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%8A%94%EB%8D%B0%20%EB%A3%A8%ED%8A%B8%20%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8%EB%A5%BC%20%EB%B3%80%EA%B2%BD%ED%95%A0%20%EC%88%98%20%EC%97%86%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
나는 우리(루트가 아닌 사용자)가 사용자로서 명령을 실행할 수 있도록 허용하는 setuid
비트가 파일에 있다는 것을 알고 있습니다 . 명령을 실행하려면 파일의 권한을 변경 해야 합니다./bin/passwd
root
passwd
root
/etc/shadow
내 질문은 명령을 실행하는 경우 passwd
명령을 실행하는 동안 비밀번호를 변경할 수 없는 이유는 무엇입니까 root
?root
root
edward@ArchLinux:~$ passwd root
passwd: You may not view or modify password information for root.
passwd
루트가 아닌 사용자가 비밀번호를 변경하는 것을 허용하지 않는 명령이 있습니까 ? passwd
사용자의 비밀번호를 변경하기 위해 setuid 비트를 사용하여 악의적인 명령을 작성할 수 있습니까 ?
(논리적으로 나는 이것이 재앙이 될 것이라는 것을 알고 있지만 내부적으로 어떻게 작동하는지 알고 싶습니다.)
답변1
passwd(1)
호출한 사람의 자격 증명을 확인하고, 그렇지 않은 경우 root
다른 사용자가 관련 항목을 변경할 수 없도록 합니다.
당신이 설명하는 시나리오는 SUID/SGID 프로그램이 예상치 못한 일을 하거나 어떤 방식으로든 손상되는 것을 피하기 위해 극도의 주의를 기울여 작성해야 하는 이유입니다.