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

Можно ли игнорировать оболочку пользователя в команде «su»?

Если я сделаю

su - -c 'mkdir bin' user1

тогда я получаю

su: /usr/bin/ksh: No such file or directory

потому что оболочка пользователя настроена на ksh в /etc/passwd и ksh не установлен.

Вопрос

Как мне выполнять команды как пользователь в таком случае?

Если вы не поставите - после su тогда он не будет загружать среду этого пользователя, но команды все равно будут выполняться от имени этого пользователя.


Похоже, я неправильно понял вашу настоящую проблему. Как говорили другие -s - вариант, который вам, вероятно, действительно нужен.

Ты можешь использовать:

su -s /bin/sh -c 'mkdir bin' user1

В -s Параметр su указывает используемую оболочку, заменяя все, что находится в / etc / passwd.

Я уронил - из вашей команды, потому что, помимо загрузки профиля, он, вероятно, изменит рабочий каталог на домашний каталог пользователя для команды, поэтому вы создадите bin в домашнем каталоге user1, а не в текущем каталоге.

Я считаю, что параметр -s / - shell для su позволяет вам выбрать оболочку для использования, сохраняя при этом другие части пользовательской среды, / bin / sh указывается posix, поэтому должен быть доступен везде.