Команды не будут передаваться в CLI после входа в нового пользователя с помощью sudo su — user

#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. Из того, что я видел, у них странные политики безопасности, наложенные странным образом. Не фанат, но должен отдать должное. Мне нужно будет найти какой-то другой способ или метод для сбора необходимых нам данных.