linux - 如何在初始化脚本中以特定用户身份运行命令?

标签 linux bash centos init rhel

我正在编写一个初始化脚本,它应该以不同于 root 的用户身份执行单个命令。这就是我目前的做法:
sudo -u 用户名命令

这通常在 Ubuntu/Debian 上按预期工作,但在 RHEL 上,作为 command 执行的脚本挂起。
是否有另一种方法可以以其他用户身份运行命令?
(请注意,我不能使用 lsb init 函数,因为它们在 RHEL/Centos 5.x 上不可用。)

最佳答案

在 RHEL 系统上,/etc/rc.d/init.d/functions 脚本旨在提供与您想要的类似的功能。如果您在初始化脚本的顶部获取它,则它的所有功能都可用。

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

daemon --user=username command

如果这对您的需要来说过于笨拙,则可以使用 runuser(请参阅 man runuser 了解完整信息;某些版本可能需要 -u 在用户名之前):

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

关于linux - 如何在初始化脚本中以特定用户身份运行命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17956151/

相关文章:

linux - 如何读取输出屏幕中的 linux 时间戳?

linux - 通过 bash 脚本运行时 psql 列名不存在

linux - 如何从 "parent"bash 文件调用变量?

c++ - 我如何在 Jenkins 中使用 GoogleMock?

docker - 如何减小 RHEL/Centos/Fedora Docker 镜像的大小

linux - ct : not yet implemented

linux - 如何使 Poky (Yokto) Dizzy 发行版中的 udhcpc 更改永久化

linux - 我需要一个 grep 命令,它将仅从 linux 中的/etc/passwd 文件中提取用户名

linux - 从 fstab 的输出中跳过/数据和/分区

linux - PATH变量设置为空,如何修复