Estou tentando escrever um script bash (no Ubuntu) que irá fazer backup de um diretório usando tar.
Como posso fazer uma verificação no script para que ele possa ser executado apenas como root (ou com o sudo)?
Por exemplo, se um usuário executa o script, deve-se dizer que esse script deve ser executado com privilégios de sudo e sair. Se o script for executado como root, ele continuará após a verificação.
Eu sei que tem que haver uma solução fácil, só não consegui encontrá-la pesquisando no Google.
bash
scripting
root
permissions
Cory Plastek
fonte
fonte
Suponho que você saiba que, alterando a propriedade para root
chown root:root file
e definindo as permissões para 700
chmod 700 file
você realizará a mesma coisa - sem a sugestão de executar como sudo.
Mas vou postar esta resposta por completo.
fonte
sudo git add <file>
Qual é o seu objetivo aqui, informar ao usuário que ele deve executar o script como root ou como algum tipo de precaução de segurança?
Se você deseja apenas informar o usuário de que qualquer uma das sugestões do uid é boa, mas elas são tão úteis quanto pneus a cavalo como medida de segurança - não há nada para impedir que um usuário copie o script, retire a instrução if, e executando de qualquer maneira.
Se esse for um problema de segurança, o script deverá ser definido como 700, pertencente a root: root, para que não seja legível ou executável por nenhum outro usuário.
fonte
Você também pode usar o comando whoami.
fonte
A variável bash
$EUID
mostra o UID efetivo em que o script está sendo executado. Se você deseja garantir que o script seja executado como root, verifique se$EUID
o valor é 0 ou não:Isso é melhor do que a solução com
/usr/bin/id
(para scripts bash!) Porque não requer um comando externo.fonte
echo
linha porsudo "$0" "$@"
e substituindoexit 2
porexit $?
.Uma maneira simples de tornar o script apenas executável pela raiz é iniciar o script com a linha:
#!/bin/su root
fonte
"#! / bin / su root" permite que os usuários no modo superusuário executem o script sem usar a senha root. Se você deseja que os superusuários executem o script com resultados como root, isso é o que ocorre.
fonte