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
!
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
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}
superuser
aqui, superuser.com/questions/67765/...Respostas:
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
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
fonte
su: must be run from a terminal
.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
(ousudo
) de maneira automatizada, escreva um shellscript contendo os comandos semsu
ousudo
e executesu <username> script.sh
fonte
su root script
ainda é necessário inserir a senha.echo <passwd> | sudo -S <command-line>
Embora não seja seguro, mas funciona.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}
fonte