我是 OS 和 unix 的新手,我正在尝试为应用程序、nginx 等创建单独的用户...并代表他们运行该进程。我目前正在调试以下运行命令的方式,但无法弄清楚使用 runuser -u username 和 su username 命令时到底发生了什么。
更新(感谢@Kusalananda)
好的,权限有什么问题?
root@someuser:/somehome# runuser -u app "source /etc/app/secrets/env; /somehome/way/app &" &
[4] 479621
root@someuser:/somehome# runuser: failed to execute source /etc/app/secrets/env; /somehome/way/app &: Permission denied
^C
[4] Exit 1 runuser -u app "source /etc/app/secrets/env; /somehome/way/app &"
root@someuser:/somehome#
root@someuser:/somehome#
root@someuser:/somehome# ls -ld /etc/app/secrets/env
-r-------- 1 app nogroup 1126 Apr 1 15:15 /etc/app/secrets/env
root@someuser:/somehome# ls -ld /etc/app/secrets
drwx------ 2 app nogroup 4096 Apr 1 15:15 /etc/app/secrets
root@someuser:/somehome# ls -ld /somehome/way/app
-rwxrw-r-- 1 app someuser 348528086 Mar 31 22:23 /somehome/way/app
root@someuser:/somehome# ls -ld /somehome/way/
drwxr-xr-x 3 someuser someuser 4096 Apr 1 09:30 /somehome/way/
或者我现在尝试像这样运行:
runuser --pty -u app -- bash "source /etc/app/secrets/env && /somehome/way/app &"
bash: source /etc/app/secrets/env && /somehome/way/app &: Permission denied
第一个(原始问题):问题是$(),感谢@Kusalananda
我想指出的是,我有意识地将 Web 应用程序等作为后台进程运行。
直奔主题。我运行的应用程序/命令如下:
runuser -u someapp $(source /etc/someapp/secrets/env; /someapp)
su nginx source /etc/someapp/secrets/env && sleep 90s &
最后,我检查了 ps aux 或 ps -A,发现 app 或“sleep”命令正在以 root 身份运行!?我做错了什么?还是我不明白什么?
PS 但是运行这个命令我得到了我预期的结果:
runuser -u testappuser2 sleep 30s &
#ps output
root 462265 0.0 0.4 9376 4224 pts/1 S 18:20 0:00 runuser -u testappuser2 sleep 30s
testapp+ 462270 0.0 0.1 5684 1920 pts/1 S 18:20 0:00 sleep 30s