5

Мне нужно запустить несколько командных строк от имени конкретного пользователя в сценарии оболочки.

Я нашел (по крайней мере) два пути:

su user -c 'command'

runuser -l user -c 'command'

Есть ли существенная разница между этими двумя командами?

1 ответ1

5

Как уже написано в комментариях к вопросу, runuser - это, по сути, su, который не использует стек PAM.

Чтобы предоставить немного больше деталей, согласно сообщению в блоге Дэна Уолша - одного из авторов runuser - кажется, что runuser фактически скомпилирован из источников su, за исключением того, что стек PAM исключен из компиляции. Разница в том, что использование runuser вместо su может предотвратить некоторые ошибки SELinux. Этот пост также говорит это:

Когда служба работает от имени пользователя root и хочет изменить UID с помощью оболочки, она должна использовать runuser.

Когда вы вошли в оболочку как пользователь и хотите стать пользователем root, вы должны использовать su. (Или еще лучше sudo)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .