当我以“sudo”身份运行脚本时,是否需要设置 SUID?

当我以“sudo”身份运行脚本时,是否需要设置 SUID?

我需要运行脚本作为root。链接中给出的说明说我应该:

  • 设置脚本上的 SETUID 位(即chmod 4755)。
  • 以 sudo 运行脚本(即sudo /path/to/thescript.sh

从我正在阅读的有关 SETUID 位的文档中,我的理解是,通过设置它,运行脚本的任何人都将获得所有者的特权。因此,如果脚本的所有者是root,那么任何在 SETUID 位打开的情况下运行该脚本的人都将以 root 权限运行该脚本。

sudo如果是这样的话,如果设置了 SETUID 位,为什么我需要在运行脚本之前执行 a操作?

如果我需要使用sudo来运行脚本,为什么还要设置 SETUID 位呢?就像一个实验一样,我只是使用运行了我的脚本sudo,它能够完成我需要做的事情(脚本递归地更改一堆文件的权限)。

答案1

好吧,简短的回答,SETUID root永远不要设定剧本。事实上,它似乎不起作用。

长答案:永远,永远,永远,设定脚本SETUID root,永远!

既然这太脑残了,我现在就到此为止。

那家伙说这种方法可能会造成严重的安全漏洞!噢噢!那你为什么这么回答呢?

您只SETUID root信任能够完成特定任务的二进制程序,即使如此,也要非常非常谨慎!

话虽这么说,你想实现什么目标?

如果您希望普通用户能够以root特权运行脚本,请确保该脚本对所有人来说都是只读的,root并且向您的文件中添加一个条目/etc/sudoers,以允许您的用户执行该脚本并且仅执行该脚本。

请参阅man sudoers获取更多信息。

如果您有用户所属组的名称和脚本的完整路径,我可以/etc/sudoers为您编写一条规则。

相关内容