加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 03:00:59 所属栏目:Linux 来源:网络整理
导读:我们公司的服务器运行的是Ubuntu 12.04(Precise)和Apache 2.我们安装了一个自定义的内部Web应用程序.我有一个bash脚本,它将该应用程序的任何更新从源代码控制提取到服务器.系统上只有一个用户(脚本文件的所有者)具有连接源控件所需的SSH密钥,但我希望系统上
我们公司的服务器运行的是Ubuntu 12.04(Precise)和Apache 2.我们安装了一个自定义的内部Web应用程序.我有一个bash脚本,它将该应用程序的任何更新从源代码控制提取到服务器.系统上只有一个用户(脚本文件的所有者)具有连接源控件所需的SSH密钥,但我希望系统上的任何用户都能够运行此脚本来更新应用程序.

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

我认为我可以通过制作perl脚本来解决这个问题,但是从Precise开始,也没有suid-perl包.看起来这已经被弃用了.

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

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

解决方法

您可以配置sudo以允许人们作为特定的无root用户运行命令,例如在sudoers
user1   (ALL) = (appuser) /path/to/yourapp

允许用户user1以appuser身份运行您的应用

sudo -u appuser /path/to/yourapp

同样

%somegroup    (ALL) = (appuser) /path/to/yourapp

在sudoers中允许组somegroup中的用户以appuser身份运行app

sudo -u appuser /path/to/yourapp

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读