I'm writing an init script which is supposed to execute a single command as a user different than root. This is how I'm doing it currently:
sudo -u username command

这通常在Ubuntu/Debian上正常工作,但在RHEL上,作为command执行的脚本挂起

推荐答案

在RHEL系统上,/etc/rc.d/init.d/functions脚本旨在提供类似于您所需的内容.如果在init脚本的顶部找到它,那么它的所有函数都将可用.

为此提供的具体功能是daemon.如果您打算用它来启动一个类似守护进程的程序,一个简单的用法是:

daemon --user=username command

如果这对您的需求来说太过苛刻,则有runuser个(完整信息请参见man runuser;某些版本可能需要在用户名前加-u):

/sbin/runuser username -s /bin/bash -c "command(s) to run as user username"

Linux相关问答推荐

有没有方法在Linux中连接两个程序输出/输入?

如何注释掉SLURM中的延迟调度命令?

我想显示包含一个方括号的行,方括号可以是开括号,也可以是闭括号.

如何将参数传递给Bash函数

Git - 打印以不同编码混合的文件

我可以在不调用 shell 的情况下使用 popen() 吗?在 C++ 中

使用 sed 或 awk 格式化文本

使用正则表达式捕获特定字符串

在服务器目录之外启动 DolphinDB 服务器时出错

有没有办法定义自定义隐式 GNU Make 规则?

问题:Virtio rpmsg 总线 virtio0:收到的 msg 没有收件人 - 在 Yocto Hardknott - imx7d-pico

在 puppet 中管理 linux 的用户密码

通过 Linux FrameBuffer 将像素绘制到屏幕上

如何分析内存使用情况?

Linux 配置/制作,--prefix?

Mac OS X 中的 ldconfig 等效项?

判断 VT-x 是否已激活而无需在 Linux 中重新启动?

如何对 /dev/random 或 /dev/urandom 进行 base64 编码?

docker compose:加载共享库时出错:libz.so.1:无法从共享对象映射段:不允许操作

如何编写 Mono 守护程序