我正在编辑一个 init.d 脚本。init.d 脚本运行一个实用程序脚本,然后运行一个进程。从任一 bash 脚本中,我如何让它以特定用户和组的身份启动主进程?
ckk*_*ckk 12
最简单的方法是使用 su(1) 命令,它有一个选项允许您通过用户的 shell 运行命令,例如:
su foo -c ls
Run Code Online (Sandbox Code Playgroud)
这将切换到用户foo并运行 ls 命令。如果您要使用的用户没有有效的 shell(即它不在 /etc/shells 中,例如 /bin/false 或 /sbin/nologin),您还必须在命令行上指定一个 shell。输出示例:
# su nobody -s /bin/bash -c id
uid=99(nobody) gid=99(nobody) groups=99(nobody) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Run Code Online (Sandbox Code Playgroud)