Назад | Перейти на главную страницу

Как работать без интерактивного режима?

Я хочу сделать что-то вроде этого, чтобы переключать пользователя неинтерактивно:

su otheruser -p <password>

Но это явно не работает ... что будет?

Вы можете использовать эхо:

echo <otherpwd> | su - otheruser -c "my command line"

или ожидайте:

expect -c 'spawn su - otheruser -c "my command line"; expect "Password :"; send "<otherpwd>\n"; interact'

Но это означает, что пароль хранится в вашем скрипте в виде открытого текста, что никогда не бывает хорошо. На самом деле, лучше всего было бы sudo ...

Несколько способов стать другим пользователем.

su работает без пароля, только если вы уже являетесь пользователем root. Пытаться предоставить ему пароль в командной строке - плохая идея, это приведет к раскрытию учетных данных. Не используйте su.

sudo широко распространен и бесплатен. Вы можете развернуть политику, включая команды без пароля, в файлах или LDAP.

ssh otheruser@localhost еще более широко используется. Однако у вас должен быть ключ без ключевой фразы или его эквивалент.

ksu полезен в среде Kerberos. Если у вас уже есть билет, вы можете его использовать.

pbrun является частью PowerBroker, коммерческого привилегированного продукта, с которым я не очень хорошо знаком.

dzdo является частью Centrify DirectAuthorize, еще одного коммерческого продукта с привилегиями.

doas OpenBSD выполняет команды от имени другого пользователя. Похоже, у него есть порт Linux, который появился довольно недавно.

pfexec использует управление доступом на основе ролей в Solaris. Однако вы отметили этот вопрос Linux.