Запуск команд от имени системных пользователей

Когда требуется запустить команду или просто проверить права доступа от имени другого пользователя, можно воспользоваться примерно такой командой:

su -c whoami nobody

Для обычных пользователей это вернёт ожидаемый результат. Но, для системных пользователей, вроде nobody, apache и .т.д., результат будет таким:

This account is currently not available.

Это происходит из-за того, что у этих пользователей в качестве шела указан /sbin/nologin. Тогда нужно указать настоящий шел:

su -c whoami nobody -s /bin/bash

Или даже войти в терминал от имени этого пользователя:

su - nobody -s /bin/bash

Также надо помнить, что в скриптах желательно использовать runuser вместо su:

runuser - nobody -s /bin/bash

Отличие в том, что runuser никогда не запросит пароль. Если скрипту будет не хватать прав, то в этом месте будет ошибка, но скрипт продолжит выполняться. В случае с su вылезет запрос пароля и скрипт остановится.