小编Jaz*_*azz的帖子

如何在 shell 脚本上使用 SetUID 以非 root 用户身份运行?

我们公司的服务器运行 Ubuntu 12.04 (Precise) 和 Apache 2。我们安装了一个自定义的内部 Web 应用程序。我有一个 bash 脚本,可以将该应用程序的任何更新从源代码管理拉到服务器。系统上只有一个用户(脚本文件的所有者)拥有连接到源代码管理所需的 SSH 密钥,但我希望系统上的任何用户都能够运行此脚本来更新应用程序。

我做了一些研究,看起来这正是设计 setuid 位的目的,以便系统上的任何用户都可以运行脚本,并且脚本将使用脚本所有者的用户 ID 运行. 然而,现代发行版似乎忽略了脚本的 setuid 位,因为如果执行由 root 拥有的脚本会带来安全风险。

我以为我可以通过将它变成一个 perl 脚本来解决这个问题,但是从 Precise 开始,也不再有 suid-perl 包了。看起来这已被弃用。

我发现一些网站建议通过将用户添加到 sudoers 文件来解决这个问题,但是我的脚本不需要 root 权限来运行,并且它不会对文件系统的任何部分进行任何更改,除了网站,所以我宁愿不授予任何人 sudoer 权限。该脚本只需要脚本所有者的权限才能正常运行。

那么,使用(不同的、非 root、非 sudo)用户的 UID 执行脚本的首选现代方法是什么?

scripting linux ubuntu setuid suid

5
推荐指数
1
解决办法
6077
查看次数

标签 统计

linux ×1

scripting ×1

setuid ×1

suid ×1

ubuntu ×1