Possível ignorar o shell de usuários no comando “su”?

7

Se eu fizer

su - -c 'mkdir bin' user1

então eu pego

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

porque o shell de usuários está definido como ksh in /etc/passwd e ksh não está instalado.

Pergunta

Como eu carrego comandos como usuário em tal caso?

    
por Sandra 02.11.2012 / 02:16

3 respostas

17

Se você não colocar o - após su , ele não carregará o ambiente desse usuário, mas os comandos ainda serão executados como esse usuário.

Parece que eu entendi mal o seu problema real. Como outros disseram, -s é a opção que você realmente deseja.

    
por 02.11.2012 / 02:24
5

Acredito que a opção -s / - shell para su permite que você escolha o shell a ser usado enquanto mantém as outras partes do ambiente do usuário, / bin / sh é especificado por posix, portanto deve estar disponível em todos os lugares.

    
por 02.11.2012 / 09:47
5

Você pode usar:

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

A opção -s para su especifica o shell a ser usado, sobrescrevendo o que estiver em / etc / passwd.

Eu descartei o - do seu comando porque, além de carregar o perfil, ele provavelmente alterará o diretório de trabalho para o diretório home do usuário para o comando, portanto, você criaria 'bin' no user1 diretório inicial, não seu diretório atual.

    
por 02.11.2012 / 17:49