存在哪些便携式选项可以放弃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。
经过一番研究,以下是几个不可行的选项:
- `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。