#bash #shell #ssh #scripting #cron
#linux #bash #оболочка #ssh #сценарии
Вопрос:
Обязательный тег ‘first post’. Проблема: команды не будут передаваться в командную строку после ввода пароля для sudo su - userB
Я пишу скрипт на bash, который требуется запускать от имени определенного пользователя. В идеале мы хотели бы, чтобы этот скрипт можно было запускать на наших локальных рабочих станциях для простоты использования. Вот команда, которую я запускаю для тестирования:
ssh -qt -p22 userA@hostname "whoami; sudo su - userB; whoami"
Expected:
userA
[sudo] password for userA:
userB
С помощью этой команды я могу получить запрос на ввод пароля sudo, но как только он введен, мне предоставляется обычный терминал, где я могу вручную запускать команды. Как только я нажму ctrl-D / exit, он запускает второй whoami в качестве пользователя и закрывается. Я работаю в крайне стесненной среде, поэтому sudo su -c и подобные команды «запуск от имени root» не работают, и я не могу напрямую подключиться по ssh к UserB.
Есть ли какой-либо способ отправить команды пользователю, войдя в систему с sudo su - userB
помощью?
Комментарии:
1. На самом деле нет никакого «обязательного тега первого поста», скорее наоборот 😉
Ответ №1:
su
создает подоболочку, которая по умолчанию считывает команды из стандартного ввода. Он выполняется whoami
после завершения работы. Вы можете использовать эту -c
опцию для передачи ему команды.
ssh -qt -p22 userA@hostname "whoami; sudo su - userB -c 'whoami'"
Вы также можете использовать -u
опцию sudo
вместо использования su
:
ssh -qt -p22 userA@hostname "whoami; sudo -u userB whoami"
Комментарии:
1. Похоже, что первый представленный вариант все еще пытается запускаться от имени «root». Второй вариант ближе, но я думаю, что среда слишком ограничена, чтобы запускать скрипт по желанию. Вероятно, нам придется поработать с получением новых разрешений или доступа. Спасибо за информацию в противном случае
2. Я только что попробовал первую версию, и она работала правильно. Я случайно был
-u
там раньше, попробуйте сейчас.3. На данный момент все еще не повезло. Запуск от имени root не будет работать в этой системе:
Sorry, user userA is not allowed to execute '/usr/bin/su - userB -c whoami' as root on host.
4. Очень странно, что они позволяют запускать UserA
su
, что позволяет ему запускать любую команду, но не позволяют запускать команды напрямую.5. Из того, что я видел, у них странные политики безопасности, наложенные странным образом. Не фанат, но должен отдать должное. Мне нужно будет найти какой-то другой способ или метод для сбора необходимых нам данных.