paulo1205
(usa Ubuntu)
Enviado em 16/11/2016 - 06:21h
listeiro_037 escreveu:
Isto não é seguro.
Você tem de colocar o caminho do diretório do programa no $PATH
Algo como digitar no terminal
PATH=$PATH:$HOME
ou
PATH=$PATH:/home/user
O perigo é que possa haver algum arquivo com o mesmo nome de um comando no mesmo diretório sendo possível executá-lo por engano.
Respeitosamente discordo em parte do que disse o listeiro_037.
O que é realmente inseguro é colocar como parte da definição da variável
PATH o diretório corrente (“
. ”), especialmente se ele vier antes dos diretórios de sistema na ordem de busca.
Curiosamente, é justamente assim, desse modo inseguro, que o DOS/Windows funciona: sempre busca as coisas primeiro no diretório corrente, e depois começa a varrer os diretórios que compõem a variável
PATH . Esse comportamento duvidoso pode ser conseguido no mundo UNIX, usando o seguinte valor de
PATH .
# NÃO USE ISSO, POIS É INSEGURO. ESTÁ AQUI APENAS COMO EXEMPLO!
# O “.” no início da lista de busca orienta a procurar programas primeiro
# no diretório corrente.
PATH=.:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/games/bin
export PATH
Para diminuir a insegurança, mas manter a conveniência, algumas pessoas optam por colocar o diretório corrente no final da lista. Apesar de concordar que melhora o problema um pouco, acho que é muito pouco que se ganha de comodidade, e muito pouco que se reduz o risco.
Bom, mas qual é o risco?
Suponha que você resolva examinar o conteúdo de algum diretório (os casos mais comuns são diretórios públicos, como o
/tmp ou
home areas de outros usuários, mas pode acontecer em qualquer lugar). Você entra no diretório e, já dentro dele, digita o comando
ls . O que aconteceria se alguém deixasse um
script ou programa compilado dentro daquele diretório, chamado justamente
ls ? Você executaria esse comando em lugar do
ls do sistema, e esse programa poderia fazer qualquer coisa usando as suas credenciais. Ele poderia, por exemplo, apagar o conteúdo de algum diretório ao qual você tivesse acesso, vasculhar ou modificar arquivos de configuração na sua
home area , ou mesmo copiar uma chave de ssh para dentro do seu diretório de configuração, para poder se logar num momento futuro com suas credenciais e sem necessidade de senha.
Agora imagine o tamanho do problema se a mesma coisa acontecer quando você estiver usando uma conta de administrador (e.g.
root ).
Colocar o diretório corrente no final da lista de
PATH ajudaria a minimizar o problema descrito acima, mas não evitaria outros acidentes. Por exemplo, alguém poderia encher o mesmo diretório com
scripts cujos nomes seriam variações dos nomes de comandos do sistema, refletindo erros típicos de digitação. Algo como
vom ou
vmi em lugar de
vim ,
sl ou
la em lugar de
ls , ou mesmo
eixt em lugar de
exit .
Por isso, o diretório
. nunca deve fazer parte do
PATH . Aliás, nenhum diretório que não seja um caminho absoluto deveria jamais ser especificado como parte do
PATH .
Por outro lado, caminhos absolutos de diretórios que não sejam abertos para escrita para todo mundo geralmente são considerados seguros. Mas a boa prática sugere que você coloque tais diretórios como parte do valor de
PATH da seguinte maneira: primeiro os diretórios do sistema, seguidos pelos diretórios com aplicações especializadas da máquina (por exemplo, se a máquina for um servidor de aplicações, os caminhos referentes à instalação do Java), e por fim os seus diretórios pessoais de programas e
scripts .