A solução óbvia: execute o script como root
sudo /your/script
Então todos os comandos no script serão executados como root.
Se alguns comandos não precisarem de root, use sudo
para voltar ao usuário normal
eu quero escrever script dentro do script eu vou fazer muitos comandos que precisam ser raiz como
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install eclipse
mas eu quero escrever a senha apenas uma vez
eu tentei escrever no topo
sudo su
para ser executado como root, mas pare o script então o que eu posso para escrever a senha
A solução óbvia: execute o script como root
sudo /your/script
Então todos os comandos no script serão executados como root.
Se alguns comandos não precisarem de root, use sudo
para voltar ao usuário normal
Se você tem comandos que não exigem sudo
, você pode verificar minha resposta em esta questão .
Por uma questão de brevidade, porém, aqui está uma resposta rápida:
#!/bin/bash
PW=$1
echo $PW | apt-get update
echo $PW | apt-get upgrade
echo $PW | apt-get install eclipse
Executar com bash file_name.bash sudo_pw
A razão para passar desta forma é que as pessoas não podem necessariamente dizer qual é o parâmetro que você está passando, então mesmo que alguém monitore de alguma forma (mesmo olhando por cima do ombro), ainda é seguro.
A principal razão pela qual eu faço isso é porque a maioria dos comandos que eu executo com sudo criam objetos que precisam ser manipulados mais tarde, e usar sudo command
normalmente os torna inacessíveis, mesmo se eu sudo next_command
. Um exemplo simplista seria criar um arquivo do Excel e querer manipulá-lo com outro processo. Mesmo correndo com sudo
, na maioria das vezes, não consigo acessá-lo novamente sem sobrescrevê-lo, o que o recria como um objeto inacessível.
Nota: Isso também funciona como um script de shell, pois não há nada específico para BASH na sintaxe, então você poderia usar #!/bin/sh
e ./file_name.sh sudo_pw
, se essa for sua preferência.