Com executar scripts de Shell amb l'ordre Sudo a Linux


sudo és una potent eina de línia d'ordres que permet que un \usuari autoritzat” executi una ordre com a un altre usuari (el superusuari per defecte), tal com es defineix per una política de seguretat. En la majoria, si no en tots els sistemes Linux, la política de seguretat està impulsada per el fitxer /etc/sudoers.

Per tant, per executar un script o programa d'intèrpret d'ordres com a root, heu d'utilitzar l'ordre sudo. Tanmateix, sudo només reconeix i executa ordres que existeixen als directoris especificats a secure_path a /etc/sudoers, tret que hi hagi una ordre a secure_path, contrarestau un error com el següent.

Això passarà fins i tot si l'script existeix en un directori de la variable d'entorn PATH, perquè quan un usuari invoca sudo, PATH es substitueix per secure_path.

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

En l'escenari anterior, el directori /home/aaronkilik/bin es troba a la variable d'entorn PATH i estem intentant executar l'script /home/aaronkilik/bin/proconport.sh (troba el procés que escolta en un port) amb privilegis d'arrel.

Llavors vam trobar l'error \sudo: proconport.sh: command not found, ja que /home/aaronkilik/bin no es troba al sudo secure_path com es mostra a la següent captura de pantalla.

Per solucionar-ho, hem d'afegir el directori que conté els nostres scripts al sudo secure_path mitjançant l'ordre visudo editant el fitxer /etc/sudoers de la manera següent.

$ sudo visudo

Atenció: aquest mètode té greus implicacions de seguretat, especialment en servidors que s'executen a Internet. D'aquesta manera, correm el risc d'exposar els nostres sistemes a diversos atacs, perquè un atacant que aconsegueix accedir a un directori no segur (sense privilegis de superusuari) que s'ha afegit a secure_path, pot executar un script/programa maliciós amb l'ordre sudo.

Per motius de seguretat, consulteu l'article següent del lloc web de sudo que explica una vulnerabilitat relacionada amb secure_path: https://www.sudo.ws/sudo/alerts/secure_path.html

Preferiblement, podem proporcionar el camí absolut a un script mentre l'executem amb sudo:

$ sudo ./proconport.sh 80

Això és! Podeu seguir una llista d'articles sobre l'ordre sudo:

  1. Com executar l'ordre sudo sense introduir una contrasenya a Linux
  2. Com mantenir la sessió de temps d'espera de la contrasenya sudo més llarga a Linux
  3. Com solucionar \El nom d'usuari no es troba al fitxer sudoers. S'informarà d'aquest incident a Ubuntu
  4. Deixa que Sudo t'insulti quan introdueixis una contrasenya incorrecta

Si teniu cap pregunta o reflexió sobre aquest article, compartiu-lo amb nosaltres mitjançant el formulari de comentaris a continuació.