나는 우리(루트가 아닌 사용자)가 사용자로서 명령을 실행할 수 있도록 허용하는 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 프로그램이 예상치 못한 일을 하거나 어떤 방식으로든 손상되는 것을 피하기 위해 극도의 주의를 기울여 작성해야 하는 이유입니다.