SUID を使用して、root 以外のユーザーから root コマンド スクリプトを実行するにはどうすればよいでしょうか?

SUID を使用して、root 以外のユーザーから root コマンド スクリプトを実行するにはどうすればよいでしょうか?

sudo を使用せずに、root 以外のアカウントから root ユーザーを必要とするコマンドを埋め込んだスクリプトを実行したい:

/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

これは、私が間違っていなければ、グループ ファミリのユーザーがパスワードなしで root として dodo を実行できるようにすることを想定しています。しかし、結果は同じです。

何が欠けているのでしょうか?私はDebian 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-suspend-hybridを実行する

関連情報