Запустите команду как «системный» пользователь Linux (shell = / bin / false)

29

Я создал «системного» пользователя в Ubuntu 11.04 ( adduser --system) для запуска определенных заданий cron, но иногда я хочу проверить это, вручную выполнив команды от имени этого пользователя. Какой самый простой способ сделать это?

suне работает, потому что пользователь имеет в /bin/falseкачестве оболочки (что хорошо для cron). Я вручную изменил оболочку, чтобы /bin/bashвыполнить тестирование, а затем снова вернул ее обратно, но мне интересно, есть ли более простой способ?

EMP
источник

Ответы:

41

Я использую su - targetuser -s /bin/bashиз корневой оболочки.

Для непосредственного выполнения команды используйте -c:

su - targetuser -s /bin/bash -c "/bin/echo hello world" 
dmourati
источник
Это работает, спасибо! Как я пропустил опцию -s?
ПУОС
3
Вы также можете использовать опцию -c "your_command_here", чтобы передать команду, которую вы хотите запустить, вместо ожидания оболочки, а затем набрать ее в новом приглашении.
Дмурати
2

Используйте sudo. Это будет работать, даже если у пользователя нет настоящей оболочки.

eirescot
источник