Jaz*_*azz 5 scripting linux ubuntu setuid suid
我们公司的服务器运行 Ubuntu 12.04 (Precise) 和 Apache 2。我们安装了一个自定义的内部 Web 应用程序。我有一个 bash 脚本,可以将该应用程序的任何更新从源代码管理拉到服务器。系统上只有一个用户(脚本文件的所有者)拥有连接到源代码管理所需的 SSH 密钥,但我希望系统上的任何用户都能够运行此脚本来更新应用程序。
我做了一些研究,看起来这正是设计 setuid 位的目的,以便系统上的任何用户都可以运行脚本,并且脚本将使用脚本所有者的用户 ID 运行. 然而,现代发行版似乎忽略了脚本的 setuid 位,因为如果执行由 root 拥有的脚本会带来安全风险。
我以为我可以通过将它变成一个 perl 脚本来解决这个问题,但是从 Precise 开始,也不再有 suid-perl 包了。看起来这已被弃用。
我发现一些网站建议通过将用户添加到 sudoers 文件来解决这个问题,但是我的脚本不需要 root 权限来运行,并且它不会对文件系统的任何部分进行任何更改,除了网站,所以我宁愿不授予任何人 sudoer 权限。该脚本只需要脚本所有者的权限才能正常运行。
那么,使用(不同的、非 root、非 sudo)用户的 UID 执行脚本的首选现代方法是什么?
您可以配置 sudo 以允许人们以特定的无 root 用户身份运行命令,例如在 sudoers 中
user1 (ALL) = (appuser) /path/to/yourapp
Run Code Online (Sandbox Code Playgroud)
将允许用户 user1 以 appuser 身份运行您的应用程序
sudo -u appuser /path/to/yourapp
Run Code Online (Sandbox Code Playgroud)
相似地
%somegroup (ALL) = (appuser) /path/to/yourapp
Run Code Online (Sandbox Code Playgroud)
在 sudoers 中将允许组 somegroup 中的用户以 appuser 的身份运行您的应用程序
sudo -u appuser /path/to/yourapp
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6077 次 |
最近记录: |