일반 사용자로 명령을 실행하기 위해 sudo에 setuid 비트를 할당할 수 있습니까?
사용자 테스트를 수행한 후 다음을 수행한다고 가정해 보겠습니다.
test@test$ apt-get update
하지만 sudo를 사용하거나 sudoers 파일을 수정하고 싶지 않습니다. setuid 비트만 사용해도 되나요?
답변1
귀하의 계정에 권한이 있으면 sudo
suid 비트를 망칠 필요가 없습니다. 다음에서는 Bash를 대화형 셸로 가정하므로 사용하는 항목에 따라 2단계와 3단계를 수정해야 할 수도 있습니다.
/etc/sudoers 끝에 추가하세요.
USERNAME HOST_NAME = (root) NOPASSWD: /usr/bin/apt-get USERNAME HOST_NAME = (root) NOPASSWD: /usr/bin/shutdown
~/.bashrc에 추가하세요.
alias shutdown='sudo shutdown' alias apt-get='sudo apt-get'
현재 세션의 시작 구성을 다시 로드합니다.
$ source ~/.bashrc
이제 root/sudo 비밀번호를 묻는 메시지가 표시되지 않고 일반 사용자로 명령을 실행할 수 있습니다(따라서 비밀번호를 전혀 알 필요가 없습니다).
$ apt-get update $ apt-get upgrade $ shutdown -h now
답변2
짧은 대답: 당신할 수 없다관리 명령을 실행하지 않고 관리 명령을 실행합니다.
- 스도 또는
- 루트입니다.
NOPASSWD
긴 답변: 루트로 로그인 했거나 /etc/sudoers
로그인되어 있어야 합니다 . 바라보다https://askubuntu.com/questions/147241/execute-sudo-without-password.
visudo
그런 다음 한 줄을 추가하십시오.
username ALL=(ALL) NOPASSWD: ALL
요청한 대로 특정 프로그램을 실행하려는 경우바이너리당신이 사용할 수 있는 파일
chown root:wheel /usr/binary
chmod u+s /usr/binary
그러나 sudo 없이 루트로 실행하려는 프로그램이 셸(또는 Python, awk, Perl)인 경우에는 실행할 수 없습니다.
함정을 조심하십시오. 내 기본 우분투에는 /usr/bin/shutdown
함정이 있습니다 /sbin/systemctl
.
위의 chmod/chown을 적용하기 전에 후자를 전자에 복사해야 합니다.