Articulo de referencia

RUTA (variable)

PATH es una variable de entorno en sistemas operativos tipo Unix , DOS , OS/2 y Microsoft Windows , que especifica un conjunto de directorios donde se encuentran los programas e...

PATH es una variable de entorno en sistemas operativos tipo Unix , DOS , OS/2 y Microsoft Windows , que especifica un conjunto de directorios donde se encuentran los programas ejecutables. En general, cada proceso en ejecución o sesión de usuario tiene su propia configuración de PATH.

Historia

Multics fue el origen de la idea de una ruta de búsqueda. El primer intérprete de comandos de Unix solo buscaba nombres de programas en /bin, pero para la versión 3 de Unix el directorio era demasiado grande y /usr/bin, y una ruta de búsqueda, se convirtieron en parte del sistema operativo. [ 1 ]

Unix y sistemas similares a Unix

En los sistemas operativos POSIX y tipo Unix, la $PATHvariable se especifica como una lista de uno o más nombres de directorios separados por :caracteres de dos puntos ( ). [ 2 ] [ 3 ] Los directorios en la PATHcadena no deben escaparse, lo que hace imposible tener directorios con :en su nombre. [ 4 ]

Los directorios /bin, /usr/bin, y /usr/local/binsuelen estar incluidos en $PATHla configuración de la mayoría de los usuarios (aunque esto varía según la implementación). El superusuario también suele tener entradas /sbiny /usr/sbinpara ejecutar fácilmente comandos de administración del sistema . El directorio actual ( .) a veces también lo incluyen los usuarios, lo que permite ejecutar directamente programas que residen en el directorio de trabajo actual . Los administradores del sistema, por regla general, no lo incluyen en $PATHpara evitar la ejecución accidental de scripts que residen en el directorio actual, como podría colocarse allí mediante un tarbomb malicioso . En ese caso, ejecutar dicho programa requiere especificar una /home/userjoe/bin/script.shruta absoluta ( ) o relativa ( ./script.sh) en la línea de comandos.

Cuando el usuario especifica un nombre de comando o un programa realiza una llamada a `exec`$PATH , el sistema busca en el directorio, examinando cada uno de ellos de izquierda a derecha, un archivo cuyo nombre coincida con el del comando. Una vez encontrado, el programa se ejecuta como un proceso hijo del intérprete de comandos o del programa que emitió el comando.

DOS, OS/2 y Windows

En los sistemas operativos DOS, OS/2 y Windows, la %PATH%variable se especifica como una lista de uno o más nombres de directorio separados por ;caracteres de punto y coma ( ). [ 5 ]

El directorio del sistema de Windows (normalmente C:\WINDOWS\system32) suele ser el primer directorio en la ruta, seguido de muchos (pero no todos) los directorios de los paquetes de software instalados. Muchos programas no aparecen en la ruta, ya que no están diseñados para ejecutarse desde una ventana de comandos , sino desde una interfaz gráfica de usuario . Algunos programas pueden agregar su directorio al principio del contenido de la variable PATH durante la instalación, para acelerar el proceso de búsqueda y/o anular los comandos del sistema operativo. En la era de DOS, era costumbre agregar una línea o a AUTOEXEC.BAT .PATH {program directory};%PATH%SETPATH={program directory};%PATH%

Cuando se introduce un comando en un intérprete de comandos o un programa realiza una llamada al sistema para ejecutar otro programa, el sistema primero busca en el directorio de trabajo actual y luego en la ruta, examinando cada directorio de izquierda a derecha, buscando un archivo ejecutable cuyo nombre coincida con el comando proporcionado. Los programas ejecutables tienen extensiones de archivo .xml o EXE.yml COM, y los scripts por lotes tienen extensiones .xml BATo .xml CMD. También se pueden registrar otras extensiones de archivo ejecutable en el sistema.

Una vez que se encuentra un archivo ejecutable coincidente, el sistema crea un nuevo proceso que lo ejecuta.

La variable PATH facilita la ejecución de programas de uso frecuente ubicados en sus propias carpetas. Sin embargo, si se utiliza incorrectamente, el valor de la variable PATH puede ralentizar el sistema operativo al buscar en demasiadas ubicaciones o en ubicaciones no válidas.

Las ubicaciones no válidas también pueden impedir que los servicios se ejecuten por completo, especialmente el servicio 'Servidor', que suele ser una dependencia para otros servicios dentro de un entorno de Windows Server.

Implicaciones de seguridad

El uso indebido de la variable PATH puede introducir vulnerabilidades de seguridad. En particular, si un programa invoca comandos externos sin especificar rutas absolutas, puede ser susceptible al secuestro de rutas (también conocido como inyección PATH), donde un atacante coloca un ejecutable malicioso en un directorio que aparece antes en la ruta de búsqueda. Esto puede resultar en la ejecución de código no deseado o malicioso, especialmente en programas que se ejecutan con privilegios elevados. [ 6 ]

Referencias

  1. McIlroy, MD (1987). Un lector de Research Unix: extractos anotados del Manual del programador, 1971–1986 (PDF) (Informe técnico). CSTR. Bell Labs. 139.
  2. Especificación Unix de Open Group, Variables de entorno
  3. Especificación Unix de Open Group, función execve()
  4. Dash exec.c como ejemplo de implementación de un analizador de cadena PATH
  5. Microsoft.com, comando PATH
  6. "CWE-426: Ruta de búsqueda no confiable" . MITRE.

Nuevo