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 por defecto), según lo definido por una política de seguridad. En la mayoría de los sistemas Linux, si no en todos, la política de seguridad se rige 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 de shell o un programa como root, debe usar 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 haya un comando presente en secure_path , contrarrestará un error como el que se muestra a continuación.

Esto sucederá incluso si el script existe en un directorio de la variable de entorno &ltstrong&gtPATH&lt/strong&gt , porque cuando un usuario invoca sudo , PATH se reemplaza por secure_path .

$ echo  $PATH
$ ls  -l
$ sudo proconport.sh 80

Error de sudo al ejecutar el scriptError de sudo al ejecutar el script

En el escenario anterior, el directorio / home / aaronkilik / bin está en la variable de entorno &ltstrong&gtPATH&lt/strong&gt y estamos intentando ejecutar el script /home/aaronkilik/bin/proconport.sh (encuentra el proceso escuchando 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 el sudo secure_path como se muestra en la siguiente captura de pantalla.

Compruebe la ruta segura de SudoCompruebe la ruta segura de Sudo

Para solucionar esto, necesitamos agregar el directorio que contiene nuestros scripts en sudo secure_path usando el comando visudo editando el archivo / etc / sudoers de la siguiente manera.

$ sudo visudo

Atención : este método tiene serias 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 obtener acceso a un directorio no seguro (sin privilegios de superusuario) que se ha agregado a secure_path, 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

Ejecutar script usando el comando SudoEjecutar script usando el comando Sudo

¡Eso es! 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 más tiempo la sesión de tiempo de espera de la contraseña ‘sudo’ en Linux
  3. Cómo corregir “El nombre de usuario no está en el archivo sudoers. Este incidente se informará ”en Ubuntu
  4. Deje que Sudo lo insulte cuando ingrese una contraseña incorrecta

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

Comandos de Linux

Leave a Comment

Your email address will not be published. Required fields are marked *

Hazlo Linux