如何使用 SUID 從非 root 使用者執行 root 指令腳本?

如何使用 SUID 從非 root 使用者執行 root 指令腳本?

我想執行一個腳本嵌入命令,需要來自我的非 root 帳戶的 root 用戶,而無需 sudoing:

/usr/local/bin/dodo

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

我所做的就是讓它成為 root 並設定 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 即可執行同步和 pm-suspend-hybrid

相關內容