
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を実行する