Если я сделаю
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, поэтому должен быть доступен везде.