作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
确实存在哪些可移植选项来删除 root 权限并以与 shell 脚本不同的用户身份执行给定命令?
在做了一些研究之后,这里有一些非选项:
su $USER -c "$COMMAND"
使用 PAM 堆栈并创建一个新的 cgroup(在 systemd 下运行时)。它在用户命名空间中也失败了,因为审计调用在旧版本的 Linux 上返回 -EPERM。 sudo -u $USER $COMMAND
在许多系统上默认不安装。 start-stop-daemon --pidfile /dev/null --start --chuid $USER --startas /bin/sh -- -c "$COMMAND"
很难使用,仅在 Debian 系统上可用。 chpst -u $USER $COMMAND
许多系统都缺少。 runuser -u $USER -- $COMMAND
工作地点su
没有,但需要最近的 util-linux。 最佳答案
对于在“POSIX shell 脚本”的相关含义是“POSIX sh 脚本,在任意 Linux 系统上运行”而不是“sh 脚本,在保证只有工具的系统上运行”的上下文中阅读本文的人由 POSIX 保证”,还有更多可用选项。
借用 UNIX & Linux 的出色答案问题 How do I drop root privileges in shell scripts :
util-linux
有 setpriv
, 可以通过以下方式使用:setpriv --reuid=user --regid=group --init-groups --inh-caps=-all yourcommand
su
For Dropping Privileges也值得一读。
关于shell - 如何从 POSIX shell 脚本中删除 root 权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24251474/
我是一名优秀的程序员,十分优秀!