Sou novo em trabalhar com SO e unix, estou tentando criar usuários separados para um aplicativo, nginx, etc... e para executar o processo em nome deles. No momento, estou depurando as seguintes maneiras de executar o comando, e não consigo descobrir exatamente o que está realmente acontecendo ao usar os comandos runuser -u username e su username.
ATUALIZAÇÃO (agradecimento a @Kusalananda)
Certo, o que há de errado com as permissões?
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/
ou agora estou tentando correr assim:
runuser --pty -u app -- bash "source /etc/app/secrets/env && /somehome/way/app &"
bash: source /etc/app/secrets/env && /somehome/way/app &: Permission denied
A primeira (pergunta original): O problema era $(), graças a @Kusalananda
Quero ressaltar que executo conscientemente, por exemplo, um aplicativo da web como um processo em segundo plano.
Vá direto ao ponto. Eu executo aplicações/comandos assim:
runuser -u someapp $(source /etc/someapp/secrets/env; /someapp)
su nginx source /etc/someapp/secrets/env && sleep 90s &
Eventualmente, eu verifico ps aux ou ps -A e vejo: app ou os comandos "sleep" estão sendo executados como root!? O que estou fazendo errado? Ou o que não entendi?
PS Mas executando este comando eu obtenho o que eu esperava:
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