我们想使用 Upstart 来管理 Java 进程,并使用 sudo 以非 root 身份运行它。我们使用的是 RHEL 6,这意味着 Upstart 太旧了,不允许我们明确指定用户,因此使用 sudo。
但是,Sudo配置文件指定了,Defaults requiretty
这意味着我们无法sudo -u
以非root用户身份运行该命令。我们收到以下错误
sudo: sorry, you must have a tty to run sudo
有没有办法让 Upstart 分配一个伪 TTY,以便 sudo 允许我们启动此过程?sudoers 文件是根据公司政策设置的,我们无法更改它。
答案1
你不需要 - 也不应该 - 使用sudo
来更改用户在初始化脚本中。请使用su
或 better runuser
。该runuser
命令应从 RHEL 5 开始可用,并将根据 SELinux 上下文等执行正确的操作。
runuser -u username -g groupname command arguments