Diferència entre su i sudo i com configurar sudo a Linux


El sistema Linux està molt segur que qualsevol dels seus homòlegs. Una de les maneres d'implementar la seguretat a Linux és la política de gestió d'usuaris i el permís d'usuari i els usuaris normals no estan autoritzats a realitzar cap operació del sistema.

Si un usuari normal necessita realitzar canvis a tot el sistema, ha d'utilitzar l'ordre su o sudo.

NOTA: aquest article és més aplicable a les distribucions basades en Ubuntu, però també s'aplica a la majoria de les distribucions populars de Linux.

'su' us obliga a compartir la vostra contrasenya d'arrel amb altres usuaris, mentre que 'sudo' permet executar ordres del sistema sense contrasenya de arrel. 'sudo' us permet utilitzar la vostra pròpia contrasenya per executar ordres del sistema, és a dir, delegar la responsabilitat del sistema sense contrasenya root.

sudo és un setuid binari arrel, que executa ordres root en nom d'usuaris autoritzats i els usuaris han d'introduir la seva pròpia contrasenya per executar l'ordre del sistema seguida de sudo.

Podem executar /usr/sbin/visudo per afegir/eliminar la llista d'usuaris que poden executar sudo.

$ sudo /usr/sbin/visudo

Una captura de pantalla del fitxer /usr/sbin/visudo té un aspecte semblant a això:

La llista sudo s'assembla a la cadena següent, per defecte:

root ALL=(ALL) ALL

Nota: heu de ser root per editar el fitxer /usr/sbin/visudo.

En moltes situacions, l'administrador del sistema, especialment nou en el camp, troba la cadena \root ALL=(ALL) ALL com a plantilla i concedeix accés sense restriccions a altres que poden ser potencialment molt perjudicials.

Editar el fitxer /usr/sbin/visudo amb alguna cosa com el patró següent pot ser realment molt perillós, tret que us creieu completament tots els usuaris llistats.

root ALL=(ALL) ALL
adam ALL=(ALL) ALL
tom ALL=(ALL) ALL
mark ALL=(ALL) ALL

Un sudo configurat correctament és molt flexible i el nombre d'ordres que cal executar es pot configurar amb precisió.

La sintaxi de la línia sudo configurada és:

User_name Machine_name=(Effective_user) command

La sintaxi anterior es pot dividir en quatre parts:

  1. Nom_usuari: aquest és el nom de l'usuari 'sudo'.
  2. Machine_name: aquest és el nom de l'amfitrió, en el qual l'ordre 'sudo' és vàlida. Útil quan teniu moltes màquines host.
  3. (Effective_user): l'Usuari efectiu que té permís per executar les ordres. Aquesta columna us permet als usuaris executar les ordres del sistema.
  4. Ordre: ordre o conjunt d'ordres que l'usuari pot executar.

Algunes de les situacions i la seva línia sudo corresponent:

P1. Teniu una marca d'usuari que és un administrador de bases de dades. Se suposa que li proporcioneu tot l'accés al servidor de bases de dades (beta.database_server.com) només, i no a cap amfitrió.

Per a la situació anterior, la línia 'sudo' es pot escriure com:

mark beta.database_server.com=(ALL) ALL

P2. Teniu un usuari tom que se suposa que ha d'executar l'ordre del sistema com a usuari diferent de root al mateix servidor de bases de dades, explicat més amunt.

Per a la situació anterior, la línia 'sudo' es pot escriure com:

mark beta.database_server.com=(tom) ALL

P3. Teniu un usuari sudo cat que se suposa que només ha d'executar l'ordre gos.

Per implementar la situació anterior, podem escriure 'sudo' com:

mark beta.database_server.com=(cat) dog

P4. Què passa si l'usuari necessita rebre diverses ordres?

Si el nombre d'ordres que se suposa que l'usuari ha d'executar és inferior a 10, podem col·locar totes les ordres al costat, amb espais en blanc entre elles, tal com es mostra a continuació:

mark beta.database_server.com=(cat) /usr/bin/command1 /usr/sbin/command2 /usr/sbin/command3 ...

Si aquesta llista d'ordres varia segons l'interval, on literalment no és possible escriure cada ordre manualment, hem d'utilitzar àlies. Àlies! Sí, la utilitat Linux on una ordre llarga o una llista d'ordres es pot referir com a paraula clau petita i senzilla.

Uns quants exemples de àlies, que es poden utilitzar en lloc de l'entrada al fitxer de configuració sudo.

User_Alias ADMINS=tom,jerry,adam
user_Alias WEBMASTER=henry,mark
WEBMASTERS WEBSERVERS=(www) APACHE
Cmnd_Alias PROC=/bin/kill,/bin/killall, /usr/bin/top

És possible especificar un grup del sistema, en lloc dels usuaris, que pertanyi a aquest grup només amb el sufix % com a continuació:

%apacheadmin WEBSERVERS=(www) APACHE

P5. Què tal si executeu una ordre sudo sense introduir la contrasenya?

Podem executar una ordre sudo sense introduir la contrasenya mitjançant el senyalador NOPASSWD.

adam ALL=(ALL) NOPASSWD: PROCS

Aquí l'usuari adam pot executar totes les ordres amb àlies a \PROCS, sense introduir la contrasenya.

\sudo us ofereix un entorn robust i segur amb molta flexibilitat en comparació amb su. A més, la configuració de \sudo és fàcil. Algunes distribucions de Linux tenen \sudo habilitat per defecte, mentre que la majoria de les distribucions actuals necessiten que l'habiliteu com a mesura de seguretat.

Per afegir un usuari (bob) a sudo, només cal que executeu l'ordre següent com a root.

adduser bob sudo

Això és tot per ara. Tornaré a ser aquí amb un altre article interessant. Fins aleshores estigueu atents i connectats a Tecmint. No us oblideu de proporcionar-nos els vostres valuosos comentaris a la nostra secció de comentaris.