2015-07-29 2 views
3

При использовании механизма автоматизации Shipit я обнаружил, что пытается выполнить команды с «sudo» от пользователя, отличного от root (назовем его «devuser»). приводит к закрытию соединения без выполнения команды.
Это команда, которую я пытаюсь выполнить:Есть ли способ выполнить «удаленные» команды Shipit, которые используют «sudo» с пользователем, отличным от root?

shipit.remote ('Судо PWD');

Обратите внимание, что на целевой машине «devuser» может выполнять все с помощью «sudo» без запроса пароля (это выбор целевой системы).
Также обратите внимание, что все, что вызывается без «sudo» (и которое явно не требует повышенного разрешения), должно быть выполнено штрафным штрафом от Shipit.
E.g.this один работает просто отлично:

shipit.remote ('PWD');

Вопрос на этом этапе: Я делаю что-то неправильно или это так по дизайну (например, чтобы избежать эскалации привилегий)? Если это последнее: есть ли способ ограничить это ограничение?

ответ

2

простой взлом для того, чтобы установить пользователя внутри каждой команды, которую вы используете с shipit. Это немного накладные расходы, особенно если есть много команд, но это будет трюк. Команда для этого является:

su - <user> -c "<command>" 

В вашем случае:

shipit.remote('su - devuser -c "pwd"'); 

Вы были на правильном пути с вашим примером.

С наилучшими пожеланиями, Никола

+0

Спасибо @ Nicola-Lončar. Ваш ответ довольно звучит, и я собираюсь попробовать его как можно скорее. –

Смежные вопросы