Выполнение скриптов, используя больше пользователей
Вопрос
Я пишу сценарий Bash, который называет множество других сценариев.
Несколько сценариев должны быть выполнены как user_1, но несколько как user_2.
Сценарии следует вызывать в строгой последовательности. Я начинаю свой скрипт как user_1 и использую SU много раз, чтобы стать user_2. В эти времена SU требует пароля, поэтому я должен повторно навестить это много раз. Я хотел бы избежать этого, но не имеет параметра пароля.
Sudo и ожидания не установлены.
Решение 4
Я решил проблему с использованием SSH. Я создал ключ аутентификации для user_1 и опубликовал пользователь2. Пароль больше не нужен.
ssh -l user_1 hostname "command_1; command_2"
Другие советы
Сделайте вилку (используя '&') для user_1 и для user_2. Они должны общаться (аналогично клиенту-серверу), используя «файл блокировки» (семафор). Например, user_1 что-то делать что-то и проверка пользователя_2 - это «файл блокировки» в то время как ... сон петля
Может быть, это глупо, но вы можете использовать
ssh user@localhost
Конечные клавиши
Если у вас есть ZSH, я думаю, что вы можете сделать это легко - что-то вроде:
#!/bin/zsh
coproc user1_script
su user2
do_stuff
echo "your_turn" >&p
read MY_TURN
do_more_stuff
echo "your_turn" >&p
read MY_TURN
...
user1_script:
#!/bin/zsh
read MY_TURN
do_stuff
echo your_turn
read MY_TURN
do_more_stuff
...
Если вы застряли, и у ZSH это стоит попробовать в любом случае.
Вы можете работать как root. Звучит рискованно? Не если вы осторожны и предшествуете каждой команде с SU и добавьте имя пользователя так:
SU -C 'Script1' user_1 && su -c 'script2' user_2
Это будет (при условии, что вы начнете в качестве root) Измените пользователя в user_1, прежде чем запустить скрипт1, а затем вернуться к root, затем измените в user_2 для запуска script2. Все, не просящие несколько паролей.