Se eu fizer
su - -c 'mkdir bin' user1
então eu recebo
su: /usr/bin/ksh: No such file or directory
porque o shell do usuário está definido como ksh
in /etc/passwd
e ksh
não está instalado.
Questão
Como faço para executar comandos como usuário nesse caso?
/etc/passwd
vem do NIS.Respostas:
Se você não colocar o
-
depoissu
, ele não carregará o ambiente do usuário, mas os comandos ainda serão executados como esse usuário.Parece que eu não entendi o seu problema real. Como já foi dito,
-s
é a opção que você provavelmente deseja.fonte
Você pode usar:
A
-s
opção su especifica o shell a ser usado, substituindo o que estiver em / etc / passwd.Eu larguei o
-
comando, porque, além de carregar o perfil, ele provavelmente mudará o diretório de trabalho para o diretório inicial do usuário para o comando, então você criaria 'bin' no diretório inicial do usuário1, não no seu atual diretório.fonte
Eu acredito que a opção -s / - shell para su permite que você escolha o shell para usar enquanto mantém as outras partes do ambiente dos usuários, / bin / sh é especificado pelo posix, portanto deve estar disponível em qualquer lugar.
fonte