Come aggiungere utenti a Sudoers in Linux

L’accesso Sudo consente a un utente di eseguire tutti i comandi consentiti come root o qualsiasi altro utente. Una volta concesso l’accesso sudo a un utente specifico nel file sudoers, quell’utente può eseguire i comandi come root eseguendolo utilizzando il prefisso sudo. Questo utente ha pieno accesso al sistema e deve essere utilizzato solo per attività amministrative. Non ci sono praticamente restrizioni su ciò che puoi fare con il tuo sistema.
Cos’è il file sudoers e come funziona il comando sudo?
Il /etc/sudoers
file controlla chi può eseguire quali comandi e quali utenti su quali macchine, e può anche controllare cose speciali come se hai bisogno di una password per determinati comandi. Quando hai un nuovo utente sul sistema, devi decidere se quell’utente deve essere in grado di eseguire attività amministrative con sudo. Se il nuovo utente sarà un utente root del sistema, di solito si desidera abilitare i privilegi sudo in modo da poter eseguire la configurazione e la manutenzione ordinaria.
Cioè, se all’utente viene concesso l’accesso sudo Sab.può elencare i file nella cartella protetta /root
come segue.
$ sudo ls /root
Chiederà la password (password utente sam e no radice parola d’ordine). Una volta effettuato l’accesso, verrà impostato un timestamp e potrai eseguire sudo senza password per un breve periodo di tempo (predefinito 5 minuti) dopodiché il timestamp viene azzerato.
Aggiungi utente per l’accesso sudo nel file /etc/sudoers
Per dare agli utenti l’accesso al comando sudo, dobbiamo usare il comando visudo per modificare /etc/sudoers
file. Non dovresti mai modificare questo file con un normale editor di testo, ma usa sempre il comando visudo. Se non hai ancora assegnato privilegi aggiuntivi a nessun utente, dovrai accedere come root per accedere a questo comando
# visudo
Questo bloccherà il file sudoers per impedire la modifica simultanea e non salverà le modifiche al file in caso di errori di sintassi. Verrai indirizzato a una sessione di editor di testo con il file che definisce i privilegi sudo precaricati. Avremo bisogno di aggiungere il tuo utente a questo file per concedere i diritti di accesso desiderati.
Su Centos, trova la linea “Consenti a root di eseguire qualsiasi comando ovunque”

Sul sistema Debian, trova la riga with “Specifica privilegi utente”

La sintassi per fornire l’accesso sudo è la seguente.
username host_list = (users) command
- Nome utente : corrisponde all’utente a cui deve essere concesso l’accesso sudo
- lista_host: Questo definisce gli host a cui l’utente può accedere sudo
- UTENTI: definisce gli utenti in base ai quali “username” può eseguire i comandi
- comando : Questo definisce i comandi che l’utente può eseguire come root/altro utente.
Possiamo esaminare alcuni esempi di configurazioni di file sudoers per avere un’idea chiara al riguardo. A seconda di ciò che vuoi consentire sul tuo sistema (Debian o Centos), segui semplicemente la sintassi delle righe che appaiono nello screenshot qui sopra. Nei casi seguenti considereremo solo il sistema Centos
A. Consenti a un utente di utilizzare sudo
Se desideri consentire a un utente specifico di eseguire qualsiasi comando come qualsiasi utente su qualsiasi host, inserisci la riga sottostante. Il nostro utente di esempio è Sab.
sam ALL=(ALL) ALL
b. Consente agli utenti di un gruppo specifico di eseguire qualsiasi comando
Qui, tutti gli utenti degli amministratori del gruppo hanno il diritto di eseguire qualsiasi comando come qualsiasi utente in qualsiasi host.
%admins ALL=(ALL) ALL
c. Consente l’esecuzione dei comandi senza autenticazione
Qui, lo stesso utente può eseguire i comandi /bin/kill
, /bin/ls
e /usr/bin/lprm
su localhost senza effettuare l’accesso.
sam localhost = NOPASSWD: /bin/kill, /bin/ls, /usr/bin/lprm
d. Consente l’esecuzione di comandi specifici come utente specifico
Qui, Sam può scappare /bin/ls
come Jack e /bin/kill
e /usr/bin/lprm
come solo radice su qualsiasi host.
sam ALL = (jack) /bin/ls, (root) /bin/kill, /usr/bin/lprm
Qui, sam ha il permesso di eseguire qualsiasi comando nella cartella /usr/bin come root su qualsiasi host. Si noti che una barra in avanti (/) non corrisponderanno ai caratteri jolly utilizzati nel nome del percorso. Cioè, sam non è autorizzato a eseguire i binari sotto /usr/bin/subfolder/*
sam ALL = /usr/bin/*
Qui, sam ha il permesso di eseguire qualsiasi comando nella cartella /usr/bin come root diverso da /usr/bin/passwd su qualsiasi host
sam ALL = /usr/bin/* !/usr/bin/passwd
Usando il comando Sudo
Una volta fornito l’accesso sudo utilizzando il file sudoers, è possibile eseguire i comandi consentiti come root o come un altro utente utilizzando il comando sudo. Possiamo esaminare alcuni esempi di utilizzo del comando sudo.
A. Operare su alcuni servizi
Quando si desidera gestire un servizio, come un server Web, un servizio di rete o un server di database, è necessario disporre dei privilegi. Ad esempio, se desideri riavviare il tuo server Web, dovresti utilizzare il comando seguente
$ sudo systemctl restart httpd.service
Se vuoi riavviare il firewall, la procedura è la stessa
$ sudo systemctl restart firewalld
b. Eseguire un comando come un altro utente
Con il comando sudo è possibile eseguire un comando come se fossimo un altro utente del sistema.
sudo -u jack vi /home/jack/mail.php
Qui -u
l’opzione consentirà all’utente di eseguire il comando come jack.
c. Eseguire il comando precedentemente immesso in sudo
Puoi eseguire un comando e fallisce perché ti sei dimenticato di prefigurarlo sudo
. È possibile rieseguire l’ultimo comando con una funzione bash che, insieme a sudo, fa eseguire quel comando direttamente come root
sudo !!
Il doppio punto esclamativo ripeterà l’ultimo comando. L’ho preceduto con sudo per modificare rapidamente il comando senza privilegi in un comando con privilegi.
# ls -ld /
ls: /: Permission denied
# sudo !!
sudo ls -ld /
dr-xr-xr-x. 20 root root 4096 May 23 04:19 /
d. Utente alternativo sulla shell corrente
Quando crei un utente, il comando sudo ti consente di passare a un altro utente direttamente sulla shell. Consente di inserire l’utente a cui si desidera passare
[root@centos-01 ~]# su - paul
[paul@centos-01 root]$
Puoi vedere che sulla seconda riga c’è l’utente Paolo che è connesso
Conclusione
Utilizzando sudo, un utente normale può eseguire il comando root, a condizione che sia autorizzato a eseguire il comando da un amministratore di sistema. Oltre a eseguire il comando come root, un utente può eseguire un comando come qualsiasi altro utente se dispone dell’autorizzazione per farlo. È fondamentale capire cosa fa ogni comando eseguito con i privilegi di root.