【问题标题】:Switch between users in an upstart script在 upstart 脚本中切换用户
【发布时间】:2015-07-14 16:40:57
【问题描述】:

是否有可能有一个新贵脚本以 root 身份运行 pre-script 而其余的以normal_user 运行。我正在尝试类似:

setuid normal_user

pre-start exec su -c "echo I'm root" root

script
exec /bin/bash <<"EOT"
    echo "haha, I'm normal user"
EOT

是否需要删除setuid?

【问题讨论】:

    标签: bash ubuntu upstart


    【解决方案1】:

    我终于通过删除 setuid normal_user 并更改来让它工作

    exec /bin/bash <<"EOT"
    

    exec sudo -u normal_user /bin/bash <<"EOT"
    

    【讨论】:

      【解决方案2】:

      通常,您必须删除setuid 节,以便您的作业以root 身份运行。然后,您可以在 exec/script 节中删除权限。

      来自 Upstart Cookbook 的 Changing User 部分:

      Debian 和 Ubuntu 系统的推荐方法是使用辅助实用程序 start-stop-daemon(8),如下所示:
      exec start-stop-daemon --start -c myuser --exec command

      如果您想使用 su(1)... 为避免生成 shell 导致的 fork(2),您可以改为指定:
      exec su -s /bin/sh -c 'exec "$0" "$@"' $user -- /path/to/command --arg1=foo -b wibble

      使用 sudo(8) 的基本示例:
      exec sudo -u $user command

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-14
        • 1970-01-01
        • 1970-01-01
        • 2013-02-05
        • 2018-12-27
        • 1970-01-01
        • 1970-01-01
        • 2011-10-22
        相关资源
        最近更新 更多