Se o sudo preserva a variável de ambiente HOME
ou a configura para o diretório inicial do usuário de destino depende de sua configuração (consulte o manual para obter detalhes). Não é o Ubuntu fazendo certo e o SuSE fazendo errado, ou vice-versa: há vantagens e desvantagens em ambas as escolhas. É o seu trabalho como roteirista para lidar com ambos os casos. A solução para (1) é executar sudo -H
ou passar --homedir
para gpg.
No entanto, executar gpg como root é definitivamente a abordagem errada. Isso dá ao gpg muitos privilégios e pode ter o privilégio de acessar ~/.gnupg
dele (por exemplo, se o diretório pessoal do usuário estiver no NFS). Execute gpg como o usuário que possui a chave e faça com que ela imprima os dados na saída padrão. Piping into tee
é o modo padrão de enviar para um arquivo que você precisa de privilégios especiais para escrever (não tenho a menor idéia do porquê de considerá-lo “desajeitado”):
gpg -d foo.gpg | sudo tee /run/foo
Se su
ou sudo
é necessário para se tornar root depende da escolha do administrador do sistema. Usuários diferentes na mesma máquina podem usar um ou outro. A menos que você controle a configuração em todas as máquinas nas quais você executará seu script, permita ambas as possibilidades (por exemplo, com uma opção passada para o seu script).
Se seus scripts funcionarem no Ubuntu com sudo
, mas falharem em outras distribuições ou com su
, talvez você esteja confiando em que o ambiente seja (quase) completamente redefinido. Essa é a configuração padrão de sudo
no Ubuntu, mas outros sistemas podem se comportar de maneira diferente. Corrija seu script para que não dependa do ambiente que está sendo redefinido.