Existe um comando de linha única para fazer 'su'?

11

Eu posso fazer um su com su <username> e ele pede minha senha. Existe um parâmetro de senha para su de forma que eu não seja solicitado a fornecer uma senha?

por exemplo. su <username> -p <password>

    
por alvas 07.10.2013 / 14:52

3 respostas

9

Se você quiser escrever um script que seja executado como um usuário diferente, algo como isto funciona, embora diminua a saída da palavra "senha" sem uma nova linha para a saída padrão

su - username <<!
enterpasswordhere
enter commands to run as the new user
!

se você tiver um usuário chamado fred com uma senha de 1234 e desejar obter um diretório de origem do fred, sem a string de senha exibida, pareceria

su - fred <<! >/dev/null 2>&1
1234
whoami > /dev/tty
ls > /dev/tty
!
    
por Brian 08.02.2017 / 16:25
5

Acredito que não existe e não seria uma boa ideia. Aqui está o porquê:
Se você escrever uma senha em um comando como su <username> -p <password> , ela será armazenada em texto simples em seu histórico bash. Este é certamente um enorme problema de segurança.

Se você precisar executar comandos com su (ou sudo ) de maneira automatizada, escreva um shellscript contendo os comandos sem su ou sudo e execute su <username> script.sh

    
por Wayne_Yux 12.01.2016 / 12:06
-2

Se você deseja executar alguns comandos específicos como um novo usuário, use o seguinte comando:
sudo -u {username} {command to be executed as the new user}

    
por ashes 12.01.2016 / 11:58