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

15

Eu posso fazer um sucom su <username>e ele pede minha senha. Existe um parâmetro de senha para suque não seja solicitada uma senha?

por exemplo su <username> -p <password>

alvas
fonte
Parece que os ataques de interrogação perferctly de superusuário: superuser.com :-)
HongboZhu
1
i got it from superuseraqui, superuser.com/questions/67765/...
alvas

Respostas:

12

Se você deseja escrever um script que seja executado como um usuário diferente, algo como isso funciona, embora exiba a palavra "senha" sem uma nova linha para padronizar

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

se você tiver um usuário chamado fred com uma senha 1234 e quiser obter um ls do diretório inicial de fred como fred, sem a sequência de senha exibida, seria semelhante a

su - fred <<! >/dev/null 2>&1
1234
whoami > /dev/tty
ls > /dev/tty
!
Brian
fonte
2
hmm, 'no padrão deve ser um tty'
John Lawrence Aspden
Eu recebo o mesmo erro
MaxV
12
Obtendo erro: su: must be run from a terminal.
Abhishek Kashyap
5

Eu acredito, não existe e não seria uma boa ideia. Eis o porquê:
Se você escrever uma senha em um comando como su <username> -p <password>, ela seria armazenada em texto sem formatação no seu histórico do 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 suou sudoe executesu <username> script.sh

Wayne_Yux
fonte
1
su root script ainda é necessário inserir a senha.
Dai Kaixian 15/02
@DaiKaixian sim, mas não é salvo em qualquer lugar e ninguém pode lê-lo
Wayne_Yux
2
você pode tentar algo como:. echo <passwd> | sudo -S <command-line>Embora não seja seguro, mas funciona.
Dai Kaixian
1
o ponto principal da minha resposta é que não é salvo escrever uma senha em um comando. Então eu aconselho a não fazer isso
Wayne_Yux
-3

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}

cinzas
fonte
Isso não responde à pergunta. A questão é sobre como lidar com a senha.
Stephen C