루트가 아닌 사용자는 루트로 passwd 명령을 실행할 수 있는데 루트 비밀번호를 변경할 수 없는 이유는 무엇입니까? [복사]

루트가 아닌 사용자는 루트로 passwd 명령을 실행할 수 있는데 루트 비밀번호를 변경할 수 없는 이유는 무엇입니까? [복사]

나는 우리(루트가 아닌 사용자)가 사용자로서 명령을 실행할 수 있도록 허용하는 setuid비트가 파일에 있다는 것을 알고 있습니다 . 명령을 실행하려면 파일의 권한을 변경 해야 합니다./bin/passwdrootpasswdroot/etc/shadow

내 질문은 명령을 실행하는 경우 passwd명령을 실행하는 동안 비밀번호를 변경할 수 없는 이유는 무엇입니까 root?rootroot

edward@ArchLinux:~$ passwd root
passwd: You may not view or modify password information for root.

passwd루트가 아닌 사용자가 비밀번호를 변경하는 것을 허용하지 않는 명령이 있습니까 ? passwd사용자의 비밀번호를 변경하기 위해 setuid 비트를 사용하여 악의적인 명령을 작성할 수 있습니까 ?

(논리적으로 나는 이것이 재앙이 될 것이라는 것을 알고 있지만 내부적으로 어떻게 작동하는지 알고 싶습니다.)

답변1

passwd(1)호출한 사람의 자격 증명을 확인하고, 그렇지 않은 경우 root다른 사용자가 관련 항목을 변경할 수 없도록 합니다.

당신이 설명하는 시나리오는 SUID/SGID 프로그램이 예상치 못한 일을 하거나 어떤 방식으로든 손상되는 것을 피하기 위해 극도의 주의를 기울여 작성해야 하는 이유입니다.

관련 정보