как записать сценарий, который выполнит команды после su, не используя-c

Обычно родительский процесс ожидает до концов дочернего процесса путем вызова waitpid. Родительский процесс получает PID процесса от fork.

Это означает, что ребенок никогда не предупреждает о родительском процессе всегда, что он вышел или что произошло. Это сделано системой а не дочерним процессом.

Если Вы говорите о выводе программы, родитель обычно никогда не получает вывод дочернего процесса, если это не обеспечило fds. Это также означает, что дочерний процесс печатает вывод а не родительский процесс. Родительский процесс просто получает информацию о состоянии процесса (для получения дополнительной информации посмотрите макросы в waitpid страница справочника)

7
13.09.2014, 00:14
2 ответа

Поместите команды, которые вы хотите запустить от имени другого пользователя, в отдельный файл, user2commands , а затем выполните

sudo su - user < user2commands

Если вы не хотите иметь отдельный файл, подумайте:

sudo su - user << EOF
    commands to be run as the other user
        ︙
EOF
8
27.01.2020, 20:17

Судя по моему личному опыту, это никогда не срабатывало. Поиск обходного пути создает больше работы, и он может не сработать, если у вас нет прав root'а.

1
27.01.2020, 20:17

Теги

Похожие вопросы