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 없이 sync 및 pm-suspens-hybrid를 실행합니다.

관련 정보