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.