Parece que ninguém mais abordou a preocupação óbvia aqui. A inserção do sudo
script que você distribui promove maus hábitos do usuário . (Suponho que você esteja distribuindo porque menciona "do ponto de vista do usuário".)
A verdade é que há uma diretriz no uso de aplicativos e scripts semelhante ao princípio de segurança do banco: Nunca forneça suas informações pessoais a alguém que ligue para você e diga que está ligando "do seu banco" e que exista por razões semelhantes.
A regra para aplicativos é:
Nunca digite sua senha quando solicitado, a menos que tenha certeza do que está sendo feito. Isso se aplica triplamente a qualquer pessoa com sudo
acesso.
Se você estiver digitando sua senha porque executou sudo
na linha de comando, ótimo. Se você está digitando porque executou um comando SSH, tudo bem. Se você está digitando quando faz login no seu computador, ótimo, é claro.
Se você acabou de executar um script estrangeiro ou executável e digitar sua senha de forma discreta quando solicitado, não terá idéia do que o script está fazendo com ele. Poderia estar armazenando-o em um arquivo temporário em texto sem formatação, pelo que você sabe, e pode até falhar na limpeza depois de si próprio.
Obviamente, existem preocupações separadas e adicionais sobre a execução de um conjunto desconhecido de comandos root
, mas o que estou falando aqui é manter a segurança da própria senha . Mesmo supondo que o aplicativo / script não seja malicioso, você ainda deseja que sua senha seja manipulada com segurança para impedir que outros aplicativos o sigam e usem maliciosamente.
Portanto, minha resposta pessoal a isso é que a melhor coisa a ser inserida no seu script se ele precisar de privilégios de root é:
#!/bin/bash
[ "$UID" -eq 0 ] || { echo "This script must be run as root."; exit 1;}
# do privileged stuff, etc.
exec
- chamada em si, mas ao mesmo tempo de processo de substituição, por isso fazemos várias instâncias não desova do script