如何使用 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

相关内容