【发布时间】:2014-06-16 20:15:20
【问题描述】:
确实存在哪些可移植选项来删除 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。
【问题讨论】:
-
关于第 1 点的第一部分,这是另一个 systemd f-up 吗?我喜欢听听这些。