Búsqueda de sitios web

Cómo ejecutar scripts de Shell con el comando Sudo en Linux


sudo es una potente herramienta de línea de comandos que permite a un “usuario autorizado” ejecutar un comando como otro usuario (el superusuario de forma predeterminada), según lo define una política de seguridad. En la mayoría, si no en todos, los sistemas Linux, la política de seguridad está impulsada por el archivo /etc/sudoers.

Lea también: 10 configuraciones útiles de Sudoers para configurar 'sudo' en Linux

Por lo tanto, para ejecutar un script o programa de shell como root, debe utilizar el comando sudo. Sin embargo, sudo solo reconoce y ejecuta comandos que existen en directorios especificados en secure_path en /etc/sudoers, a menos que un comando esté presente en secure_path, contrarrestará un error como el siguiente.

Esto sucederá incluso si el script existe en un directorio de la variable ambiental PATH, porque cuando un usuario invoca sudo, PATH se reemplaza por < fuerte>ruta_segura.

echo  $PATH
ls  -l
sudo proconport.sh 80

En el escenario anterior, el directorio /home/aaronkilik/bin está en la variable de entorno PATH y estamos intentando ejecutar el script /home/aaronkilik/bin /proconport.sh (busca procesos escuchando en un puerto) con privilegios de root.

Luego nos encontramos con el error “sudo: proconport.sh: comando no encontrado”, ya que /home/aaronkilik/bin no está en el sudo Secure_path como se muestra en la siguiente captura de pantalla.

Para solucionar este problema, necesitamos agregar el directorio que contiene nuestros scripts en sudo Secure_path usando el comando visudo editando el archivo /etc/sudoers. como sigue.

sudo visudo

Atención: este método tiene graves implicaciones de seguridad, especialmente en servidores que se ejecutan en Internet. De esta manera, corremos el riesgo de exponer nuestros sistemas a varios ataques, porque un atacante que logra acceder a un directorio no seguro (sin privilegios de superusuario) que se ha agregado a ruta_segura, puede ejecutar un script/programa malicioso con el comando sudo .

Por motivos de seguridad, consulte el siguiente artículo del sitio web de sudo que explica una vulnerabilidad relacionada con Secure_path: https://www.sudo.ws/sudo/alerts/secure_path.html

Preferiblemente, podemos proporcionar la ruta absoluta a un script mientras lo ejecutamos con sudo:

sudo ./proconport.sh 80

¡Eso es todo! Puede seguir la lista de artículos sobre el comando sudo:

  1. Cómo ejecutar el comando 'sudo' sin ingresar una contraseña en Linux
  2. Cómo mantener la sesión de tiempo de espera de contraseña 'sudo' por más tiempo en Linux
  3. Cómo solucionar “El nombre de usuario no está en el archivo sudoers. Este incidente será reportado” en Ubuntu
  4. Deje que Sudo lo insulte cuando ingrese una contraseña incorrecta

Si tiene alguna pregunta o idea sobre este artículo, compártala con nosotros a través del formulario de comentarios a continuación.