SUID를 사용하여 루트가 아닌 사용자로부터 루트 명령 스크립트를 실행하는 방법은 무엇입니까?

SUID를 사용하여 루트가 아닌 사용자로부터 루트 명령 스크립트를 실행하는 방법은 무엇입니까?

sudo를 사용하지 않고 루트가 아닌 계정에서 루트가 필요한 스크립트 포함 명령을 실행하고 싶습니다.

/usr/local/bin/dodo

#!/bin/bash
/bin/sync && /usr/sbin/pm-suspend-hybrid

내가 한 일은 루트로 만들고 SUID 비트를 설정한 것뿐입니다.

chown root:root /usr/local/bin/dodo
chmod a+xrs /usr/local/bin/dodo

하지만 실행하려고 하면 결과는 다음과 같습니다.

$ /usr/local/bin/dodo
This utility may only be run by the root user.

또한 파일을 추가하여 sudoer 솔루션을 시도했습니다 /etc/sudoers.d/dodo.

%family ALL = (root) NOPASSWD: /usr/local/bin/dodo

내 기억이 맞다면 그룹 패밀리의 사용자는 비밀번호 없이 루트로 dodo를 실행할 수 있는 권한을 받아야 합니다. 그러나 결과는 같습니다.

내가 무엇을 놓치고 있는지 말해주세요. 저는 데비안을 사용하고 있습니다 Jessie

편집: 마지막 경우에는 sudo dodo비밀번호 없이 작동합니다.

답변1

AlexP의 링크와 다른 답변으로 판단하면 다음과 같이 작동합니다.

cat /usr/local/bin/dodo
#!/bin/bash
/bin/sync
exec sudo /usr/sbin/pm-suspend-hybrid

_

ls -l /usr/local/bin/dodo
-rwxr-xr-x 1 laurent family 60 déc.  18 17:47 /usr/local/bin/dodo

_

cat /etc/sudoers.d/dodo 
%family ALL = (root) NOPASSWD: /usr/sbin/pm-suspend-hybrid

그런 다음 홈 그룹의 모든 사람에 대해 다음을 수행하십시오.

dodo

비밀번호나 sudo 없이 동기화 및 pm-suspens-hybrid를 수행할 수 있습니다.

관련 정보