setuid를 사용하여 루트의 비밀번호를 변경할 수 있습니까?
루트 소유 프로그램 을 호출하고 setuid 비트를 설정하는 간단한 프로그램을 작성해 보았지만 system("passwd root")
작동하지 않습니다. 출력은 다음과 같습니다You may not view or modify password information for root.
답변1
프로그램에서 실제 uid와 유효한 uid를 동일한 값으로 설정하는 것을 무시했을 수 있습니다. Gid는 루트의 gid와도 일치해야 합니다. 이 같은:
setuid(geteuid());
setgid(getegid());
예시 보기sue
(간단한 setuid/setgid 래퍼).
답변2
Thomas Dickey는 절대적으로 옳았습니다. 하지만 이러지 마세요. 대신 사용하십시오 sudo
.
만들다/etc/sudoers.d/change_root_pass
YOURUSERNAME ALL = (ALL) passwd root
(사용자 이름을 변경하세요).