За последние несколько месяцев я изучал администрирование bash и linux, создавая все больше и больше кода, который необходимо запускать в фоновом режиме. В идеале я хотел бы запустить свою систему разработки ближе к тому месту, где она будет производиться, чтобы избежать необходимости повторной разработки кода из-за проблем с безопасностью и разрешениями.
Обычно я бы запускал что-нибудь с:
$nohup <program> <program args> >> <program logfile> 2>&1 &
То есть:
$nohup ping 192.168.0.1 >> ping.log 2>&1 &
Однако сегодня я попытался правильно настроить его, создав пользователя и предоставив ему правильные разрешения, чтобы иметь доступ только к своим файлам и ни к чему другому. Это кажется как разумная практика безопасности.
Я бы сделал так:
$sudo -u <program user> nohup <program> <program args> >> <program logfile> 2>&1 &
Однако это приводит к следующему выводу, когда я запускаю ps aux | grep <program>
:
<admin user>@server:~$ ps aux | grep <program>
root 1396 0.0 0.0 61868 3792 pts/38 S 10:50 0:00 sudo -u <program user> nohup <program> <program args>
<program user> 1397 0.0 0.8 1273232 68308 pts/38 Sl 10:50 0:02 <program> <program args>
Проблема заключается в первой строке вывода: в идеале я хотел бы иметь возможность запускать эти программы без запуска каких-либо процессов с разрешениями корневого уровня. Как я могу это сделать?
вы можете сделать это так:
su - user -c "nohup ping 192.168.122.1 >> ping.log 2>&1 &"