gpt4 book ai didi

shell - 如何从 POSIX shell 脚本中删除 root 权限?

转载 作者:行者123 更新时间:2023-12-04 18:45:03 24 4
gpt4 key购买 nike

确实存在哪些可移植选项来删除 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-linuxsetpriv , 可以通过以下方式使用:
    setpriv --reuid=user --regid=group --init-groups --inh-caps=-all yourcommand

  • @JdeBP 的优秀文章 Don't Abuse su For Dropping Privileges也值得一读。

    关于shell - 如何从 POSIX shell 脚本中删除 root 权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24251474/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com