He visto a personas mencionar en otras respuestas que es una mala idea incluir el directorio de trabajo actual (' .
') en su $PATH
variable de entorno, pero no he podido encontrar una pregunta que aborde específicamente el problema.
Entonces, ¿por qué no debo agregar .
a mi camino? Y si a pesar de todas las advertencias lo hago de todos modos, ¿qué debo tener en cuenta? ¿Es más seguro agregarlo al final que al principio?
Respuestas:
Si usted es el único usuario en la máquina, está bien, siempre que sepa lo que está haciendo. La preocupación general es que al tener su directorio actual
PATH
, no puede ver los comandos como una lista constante. Si necesita ejecutar un script / programa desde su directorio actual, siempre puede ejecutarlo explícitamente anteponiendo./
su nombre (diciéndole al sistema "Quiero ejecutar este archivo desde mi directorio actual").Digamos, ahora tienes todos estos pequeños scripts en todo tu sistema de archivos; un día correrás el equivocado seguro. Entonces, tener
PATH
una lista predefinida de rutas estáticas se trata de ordenar y salvarse de un problema potencial.Sin embargo, si va a agregar
.
a suPATH
, sugiero agregarlo al final de la lista (export PATH=$PATH:.
). Al menos no anulará los binarios de todo el sistema de esta manera.Si usted es una raíz en el sistema y tienen sistema expuesto a cuentas de otros usuarios, teniendo
.
enPATH
es un gran riesgo para la seguridad: puedecd
que el directorio de algún usuario, y sin querer ejecutar un script malicioso no sólo porque ha escrito mal una cosa o script que tiene el mismo nombre que un binario de todo el sistema.fuente
ls
en su directorio actual. a continuación, ejecutals
para inspeccionar los archivos extraídos y ya ha ejecutado el código malicioso.El riesgo es que alguien ponga un ejecutable malicioso en el directorio que sea el actual.
El peor de los casos ocurre cuando:
.
está al comienzo de su RUTA, ya que los comandos estándar pueden anularse sin que usted lo note (generalmente, unols
que podría ocultarse de la lista).El riesgo es mucho menor si está registrado como usuario habitual y tiene
.
el final de su RUTA, pero aún existe:Tenga en cuenta que, en cualquier caso, el riesgo sigue existiendo incluso si usted es el único usuario de la máquina. Se instalaría software malicioso si, por ejemplo, extrae un archivo descargado de un sitio comprometido.
fuente
sl
para ver con qué frecuencia sucede el punto 3.alias l=`ls`
.ls
obtener una lista de directorio, pero algunos proyectos que descargo pueden tener unls
script en su carpeta de proyecto raíz como acceso directo a otra cosa.ls
es probablemente un mal ejemplo, pero ciertamente puedo imaginarloe
para editar,d
depurar,m
hacer,b
construir. Tengo algunos de ellos a nivel mundial. Si escribom
, espero que se ejecute make (mi acceso directo), no se llamam
a algún script local para ejecutar.w
y[
.Incluso si siempre tienes mucho cuidado con lo que escribes, ponerlo
.
en tuPATH
, incluso al final, sigue siendo inseguro porque algunos programas cambian el directorio actual a/tmp
(que se puede escribir en todo el mundo) y también pueden intentar ejecutar utilidades que en realidad no están instaladas, por lo tanto, por defecto a lo que está adentro/tmp
. Si esto ocurre, este es un vector de ataque.Tenga en cuenta también que no hay mucho inconveniente de evitar
.
enPATH
, porque./
es fácil de tipo (en particular, en los teclados QWERTY como, en donde estos personajes son en claves consecutivos y no es necesario Shift) y utilizando./
también ayuda finalización, por lo tanto, las pulsaciones de teclado que puede salvar al final.Si realmente desea poder escribir comandos desde el directorio actual, los shells modernos (como zsh, con sus
command_not_found_handler
) pueden proporcionar funciones para hacerlo de forma segura, es decir, que le permiten agregar todas las comprobaciones de seguridad que desee en el controlador, antes de Se ejecuta el comando.fuente