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


sudo es una poderosa 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 de los sistemas Linux, si no en todos, la política de seguridad está controlada por el archivo /etc/sudoers .

Por lo tanto, para ejecutar un script de shell o un programa como root, debe usar el comando sudo. Sin embargo, sudo solo reconoce y ejecuta los comandos que existen en los directorios especificados en secure_path en /etc/sudoers , a menos que haya un comando presente en secure_path , contrarrestará un error como el que se muestra a continuación.

Esto ocurrirá incluso si el script existe en un directorio en la variable de entorno PATH , porque cuando un usuario invoca a sudo , PATH se reemplaza por < fuerte> secure_path .

$ 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 (encuentra el proceso de escucha en un puerto) con privilegios de root.

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

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

$ sudo visudo

rojo

Por razones de seguridad, consulte el siguiente artículo del sitio web de sudo que explica una vulnerabilidad relacionada con la ruta segura: 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! Puedes seguir la lista de artículos sobre el comando sudo:

  1. How to Run ‘sudo’ Command Without Entering a Password in Linux
  2. How to Keep ‘sudo’ Password Timeout Session Longer in Linux
  3. How to Fix “Username is not in the sudoers file. This incident will be reported” in Ubuntu
  4. Let Sudo Insult You When You Enter Incorrect Password

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