O valor secure_path
, se definido, será usado como variável de ambiente PATH
para os comandos executados usando sudo
.
Isso significa que, quando você executa, por exemplo, sudo apt update
, o sistema tentará procurar o comando apt
nos diretórios especificados no secure_path
, na ordem especificada.
Agora, se você adicionar um diretório ao qual os usuários não-raiz têm acesso de gravação ao secure_path
, você poderá fazê-lo em duas posições:
- anexado ao final da lista
secure_path
, com menos prioridade - insira no início ou no meio da lista
secure_path
, com maior prioridade.
Acrescentar ao final é quase seguro, pois, como não alterará a maneira como os comandos existentes serão resolvidos, ele permite que executáveis de um diretório diferente sejam executados sem especificar explicitamente sua localização. O fato de este diretório adicional ser gravável para usuários não-root permite que eles coloquem arquivos maliciosos lá sem privilégios elevados, então você deve ter cuidado ao digitar qualquer comando que esteja lá (voluntariamente ou por erro de digitação em outra coisa). / p>
No entanto, se você colocar seu diretório não como último elemento, mas com prioridade mais alta, o conteúdo desse diretório irá sombrear e substituir os dos locais que vêm depois dele em secure_path
. Por exemplo, se você colocar seu diretório de usuários primeiro e ele contiver um executável (malicioso?) Chamado apt
, na próxima vez que você executar sudo apt update
você terá uma surpresa ...
Eu também nunca adicionaria diretamente o diretório home a qualquer PATH
ou secure_path
, mas criaria um diretório dedicado, por exemplo, /home/USERNAME/bin
para isso, que contém apenas os executáveis que eu quero ter no meu PATH
e nada mais.
Conclusão:
Você não deve colocar nenhum diretório em secure_path
se eles forem graváveis para qualquer um, exceto o usuário root. Caso contrário, usuários normais sem privilégios elevados (incluindo malware ou invasores comprometendo tal conta) podem colocar seus próprios executáveis lá e esperar por alguém com sudo
para acidentalmente (usar erros ortográficos comuns de comandos frequentemente usados como nomes de arquivos) ou executá-los de boa vontade.
Se você realmente quiser fazer isso, tente restringir as permissões de escrita para o diretório o mais rápido possível, e certifique-se de adicionar o diretório como último elemento de secure_path
para evitar que algo esteja ocultando os executáveis do sistema.
Alternativas
No entanto, a maneira segura ainda permaneceria sempre apenas digitar o caminho completo para os executáveis fora do padrão secure_path
se você quiser executá-los com sudo
.
Você também pode usar uma substituição de comando com which
para obter o caminho completo de algo no PATH
de seu usuário, como
sudo $(which MY_EXECUTABLE) ARGUMENTS