La guida completa per Master file Sudoers.

che Cosa è il File Sudoers?
Il file Sudoers è proprio come qualsiasi altro file sul sistema operativo Linux., Ma svolge un ruolo fondamentale nella gestione di ciò che un “Utente” o “Utenti in un gruppo” può fare sul sistema.
Perché il nome Sudoers?
La parola Sudo è l’abbreviazione del termine “Super User Do”. Come suggerisce chiaramente-è proprio come dire al Kernel / OS “non hai scelta, fallo e basta!”. Quindi gli utenti con il permesso Sudo sono chiamati come utenti Sudo. La gestione di tutti questi utenti sudo avviene attraverso un file chiamato come File Sudoers. Questo file vive anche nella directory / etc proprio come qualsiasi altro file di configurazione.,

Perché Sudoers File?
Un utente normale su Linux avrà molte restrizioni nel sistema. Ad esempio, l’utente non sarà in grado di avviare un servizio, modificare un file di configurazione o eseguire uno script sul sistema per impostazione predefinita. Dal punto di vista della sicurezza questo sembra perfetto.,
Ma, prendiamo un esempio di — tu come amministratore di sistema devi gestire tutti gli utenti e i loro controlli. Hai un sito Web ospitato su Apache in uno dei tuoi server. Hai già un Web-Admin per gestirlo. Un utente dovrebbe essere creato per lui sul server Web. A questo Utente dovrebbe essere permesso di fare due cose che un utente normale non può:
- Avviare / riavviare il servizio Apache nel caso in cui si fermi.
- Modifica il file di configurazione di Apache.
Hai due opzioni utente per impostazione predefinita:
- Utente root che ha tutte le autorizzazioni sul sistema incluso Apache.,
- Un utente normale, che per impostazione predefinita non sarà in grado di avviare un Servizio o modificare alcun file di configurazione sul sistema.
Questo è quando un file sudoers ti sarà utile. Nel file Sudoers possiamo definire esattamente:
- L’utente Web-Admin può solo avviare il servizio Apache&
- Può solo modificare il file di configurazione di Apache.
Giocando con il file Sudoers
Abbastanza teoria, inizieremo a fare le cose reali ora. Spiegherò ogni sezione nel file Sudoers con alcuni esempi., Per impostazione predefinita, il file Sudoers sembra che questo —

Principalmente possiamo vedere cinque sezioni nel file — le prime tre sezioni nel file sono relative agli ALIAS di Host, Utente e Cmnd., Parleremo di ALIAS più tardi, prima parliamo della sezione principale:
#User Privilege Specification
root ALL = (ALL:ALL) ALL
Nota: ‘#’ indica un commento nel file, il sistema operativo ignorerà questa riga durante l’esecuzione.,
Sintassi : Utente <spazio> OnHost = (Runas-Utente:Gruppo) <spazio> Comandi
Esempio: root ALL = (ALL:ALL) TUTTI
Leggere come Utente Root può Eseguire Qualsiasi Comando, come Qualsiasi Utente da Qualsiasi Gruppo di Qualsiasi Host.
→ Il primo ALL viene utilizzato per definire gli HOST. Possiamo definire Hostname / Indirizzo Ip invece di TUTTI. TUTTO significa qualsiasi host.
→ Secondo TUTTO: Terzo TUTTO è Utente: Gruppo., Invece di TUTTO possiamo definire Utente o Utente con il gruppo come User: Group. TUTTI: TUTTI significa Tutti gli utenti e Tutti i gruppi.
→ Ultimo TUTTO è il Comando. Invece di TUTTI, possiamo definire un comando o un insieme di comandi. TUTTI significa tutti i comandi.
Per dirla molto semplice, è “who where = (as_whom) what”.
Nota: la maggior parte delle persone comprende gli HOST come HOST remoti. È il NOME HOST LOCALE / INDIRIZZO IP., Il campo HOSTS sarà usato raramente, se vuoi saperne di più sugli HOST in Sudoers fai riferimento → https://www.sudo.ws/man/1.7.10/sudoers.man.html
Fondamentalmente possiamo permettere a un utente di fare qualcosa in due modi:
- Dargli direttamente il permesso di eseguire il comando modificando il permesso del file.
- Permettergli di eseguire il comando come un altro utente che ha già il permesso di eseguire questo comando.
Nel file Sudoers implementeremo quest’ultimo.,
Useremo un altro esempio per comprendere chiaramente i campi nella sintassi:
Esempio : sysadmin ALL = (root)/usr/bin /cat/etc/shadow
Leggi questo come utente — “sysadmin” può eseguire il comando “/usr/bin /cat/etc / shadow” come utente ROOT su tutti gli HOST.
Qui nell’esempio precedente, nella sezione dei comandi — ho aggiunto qualcosa di più di un comando, questo per mostrare la flessibilità del file Sudoers. La parte “/ usr / bin / cat ” è un eseguibile binario o un comando utilizzato per visualizzare il contenuto di un file., La parte “/ etc / shadow ” è un file riservato che memorizza le password, quindi significa che l’utente “amministratore di sistema” può eseguire solo “/usr/bin/cat” sul file “/etc/shadow”, se questo utente tenta di visualizzare il contenuto di qualsiasi altro file su cui non ha permessi di lettura, non sarà in grado di.,
la Sintassi del comando Sudo: sudo <comando>
Esempio: sudo cat /etc/shadow
Ora, se l’utente “amministratore di sistema” usa sudo prima di ogni comando, OS prima di chiedere a lui le Password degli Utenti, verifica la password e poi va a Sudoers file e controlla se si è permesso di eseguire questo comando come un utente qualsiasi. Se gli è permesso-successo, altrimenti riporterà una di queste due cose —
→ L’utente non è nel file Sudoers. Questo incidente verrà segnalato.,
Note : You can see this reported incident in /var/log/auth.log

→Sorry, user <username> is not allowed to execute <command> as <User> on <hostname>

Qui, l’utente webadmin può eseguire solo “cat/etc / shadow”. Ma ha provato a eseguire il comando ‘ cat ‘ su “/ etc / gshadow ” che non è permesso.
Poiché abbiamo abbastanza presa sui campi nella sintassi del file Sudoers, andiamo avanti e capiamo altre sezioni nel file. Tutte le altre sezioni dipenderanno dalla sezione principale che abbiamo già discusso.,
La sezione successiva è GROUP Section, che è
#Consenti ai membri del gruppo sudo di eseguire qualsiasi comando
%sudo ALL = (ALL:ALL) ALL
Il simbolo percentile ‘%’ è usato per rappresentare un gruppo nel file Sudoers. Tutti i campi e le loro funzionalità in questa sezione sono esattamente gli stessi discussi nella sezione precedente — la sezione utente. Possiamo assegnare gli stessi privilegi Sudo a un gruppo anziché a un utente specificando il nome del gruppo – % <nome del gruppo>., Quindi tutti i membri del gruppo erediteranno gli stessi privilegi dati al gruppo.
Per impostazione predefinita esiste un gruppo SUDO definito nel file Sudoers. Possiamo vedere che queste autorizzazioni sono esattamente le stesse autorizzazioni degli utenti ROOT nel file. Quindi, se un utente è un membro di questo gruppo SUDO, può eseguire tutti i comandi che un utente ROOT può eseguire.
Definiamo un gruppo personalizzato e comprendiamo più chiaramente la sintassi. Prendiamo lo stesso vecchio esempio di amministratore di sistema per farlo. Assumere il no. i dipendenti sono più ora, quindi gli amministratori di sistema sono 3 ora., Ognuno di questi ha bisogno delle stesse autorizzazioni esatte che avevamo dato al primo amministratore di sistema. Una cosa che possiamo fare per raggiungere questo obiettivo è avere tre voci per tutti e tre gli amministratori di sistema nel file Sudoers. Se andiamo con questo approccio, stiamo insultando le capacità di un file Sudoers.
La cosa migliore da fare è raggruppare tutti e tre gli amministratori di sistema in un gruppo denominato “SystemAdminGroup”., Definiremo le autorizzazioni necessarie per questo gruppo con-
%SystemAdminGroup ALL = (root)/usr/bin /cat/etc/shadow
Ora tutti e tre gli amministratori possono eseguire il Comando Privilegiato. Lo abbiamo fatto in una volta sola usando la definizione di gruppo.
File Sudoers è in grado di rendere l’intero processo più efficiente utilizzando varie funzionalità. Le prime tre sezioni-ALIAS sono utilizzati per raggiungere questo obiettivo., Come suggerisce già la parola, usiamo un ALIAS per qualcosa che possiamo usare in tutto il file, è proprio come una VARIABILE GLOBALE in uno script. In che modo questo rende il tutto più efficiente? Possiamo definire insieme di comandi, host e utenti in una riga, assegniamo questa riga a un nome ALIAS, questo alias verrà utilizzato quando e dove necessario senza definire tutti i comandi/host/utenti di nuovo.
Voglio includere un altro ALIAS che non è elencato nel file Sudoers per impostazione predefinita che è “Run_as ALIAS”., Ora abbiamo quattro ALIAS —
- ALIAS Utente come User_Alias
- Esegui Come ALIAS Runas_Alias
- Host ALIAS Host_Alias
- Comando ALIAS Cmnd_Alias
Nota : nome di Alias deve essere definito in lettere maiuscole e può contenere un numero, l’alfabeto e il carattere di sottolineatura (_). Nome alias deve iniziare con alfabeto.,3e”>Nome ALIAS> = <nome utente><nome utente> <nome utente>…
Esempio: User_Alias gli amministratori di sistema = john,tim,tom
Utilizzo: TUTTI gli amministratori di sistema = (root) /usr/bin/cat /etc/shadow
Se voglio un set di sudo definizione di autorizzazioni per gli utenti — john, tim e tom, non ho bisogno di definire tre volte, invece, sono in grado di definire un Alias e l’utilizzo di questo Nome Alias, mentre la delega di sudo, accesso ad essi.,

Run As ALIAS Syntax —
Runas_Alias <ALIAS Name> =<username>,<username>,<username>…
Example: Runas_Alias MGRS = root,sradmin
Usage: systemadmin ALL = (MGRS) /usr/bin/cat /etc/shadow
If i want to define the set of users a user can run a command as, i can use Runas_Alias., Non confondetevi qui, basta ricordare il maestro mantra-chi dove = (as_whom) cosa. Stiamo usando un alias qui per includere no. di utenti nel campo “as_whom”.

Host ALIAS Syntax —
Usage: systemadmin HOSTS = (root)/usr/bin /cat/etc/shadow
Se ho bisogno di definire insieme di nomi host, indirizzi ip o intervallo di indirizzi ip su cui un utente è autorizzato a emettere i comandi privilegiati / Sudo, posso ottenere questo risultato usando l’alias Host. Ancora una volta, questa parte appartiene al campo “dove” nella frase principale.

Cmnd_Alias <ALIAS Name> = <cmd1>,<cmd2>, <cmd3>…
Example: Cmnd_Alias SYSADMIN = /usr/sbin/apache2, /usr/bin/cat
Usage: systemadmin ALL = (root) SYSADMIN
If i need to permit a user to execute a set of commands as SUDO, i can define them under a Cmnd_Alias Section and use this ALIAS name while delegating the access., Questa parte appartiene al campo “cosa” nella frase principale.

NOPASSWD Mode:
Questa è un’altra caratteristica speciale in Sudoers che permetterà a un Utente nel file Sudoers di eseguire un comando privilegiato senza inserire la password., Questo è molto utile quando si eseguono script automatici nel sistema come utente normale, lo script potrebbe dover eseguire un comando privilegiato. Ma sappiamo già cosa succede se un utente usa SUDO, dovrà inserire la sua password!
Ricorda che, anche se è uno script o un processo, dovrebbe essere eseguito COME UTENTE, non può essere eseguito da solo.
Tutti gli script automatizzati non sono abbastanza intelligenti da inserire la password quando richiesto. Ma è possibile inserire automaticamente la password. Per il momento non pensiamo agli script intelligenti., Quindi, per concludere, un comando privilegiato può essere utilizzato da un Utente senza inserire la password.
Esempio di uno script che necessita di NOPASSWD: Supervisor in Linux.Discuteremo di Supervisore in un altro articolo.
Sintassi : sysadmin ALL = (root) NOPASSWD:/usr/sbin/apache2
Esclusione dei parametri negli ALIAS
Possiamo anche aggiungere parametri che dovrebbero essere esclusi negli ALIAS. Ad esempio-
User_Alias EXCEPT_ROOT = ALL, !,root
sysadmin ALL = (EXCEPT_ROOT) /usr/sbin/apache2
Questo User_Alias può essere usato per assicurarsi che un UTENTE possa eseguire il comando specificato come “tutti gli utenti tranne ROOT”.
Questo tipo di esclusione può essere fatto in tutti gli ALIAS, non solo User_Alias. In qualsiasi ALIAS, la sintassi di esclusione rimane la stessa.
Gestire il file Sudoers con cura
Ormai devi aver capito cosa può fare un file Sudoers e quanto sia importante gestire il file con cura. Linux implementa già un meccanismo per assicurarsi che il file Sudoers sia gestito correttamente.,
Si raccomanda sempre DI NON MODIFICARE DIRETTAMENTE il file /etc/sudoers. C’è uno strumento chiamato “visudo”. Questo viene utilizzato per apportare modifiche in modo sicuro a un file sudoers. Quando si modifica il file sudoers usando visudo, visudo ha una funzionalità integrata per controllare la sintassi prima di salvare il file, se si commette un errore, punterà immediatamente la linea dove la sintassi non è corretta. Questa funzionalità di visudo impedirà di causare danni accidentali al file e al sistema.
Conclusione:
File Sudoers gioca sempre un ruolo importante nella gestione del controllo utente., Mentre ci sono molti modi per gestire e controllare ciò che un utente può e non può fare sul sistema, il metodo Sudoers sarà sempre efficiente e abbastanza robusto da gestire e controllare qualsiasi no. di utenti. Un altro metodo simile a questo che vale la pena menzionare è SUID e SGID. Parleremo di SUID e SGID in un altro articolo.