Crea sito
20 Ottobre 2020

Officine Informatiche Roma

ICT SERVICES ROMA – BAZAAR INFORMATICO

TUTORIAL : 7 Passaggi utili per configurare ‘sudo’ in Linux

10 min read

Sudo sta per SuperUserDo, che è un’utilità predefinita sui sistemi basati su Unix-Linux. In Linux, agli utenti normali non è consentito eseguire alcun comando amministrativo. Tuttavia, possiamo utilizzare questo meccanismo per consentire a un utente normale di eseguire qualsiasi applicazione o comando come utente root o consentire solo pochi comandi a utenti specifici. Solo gli utenti che hanno le informazioni nel file ‘/ etc / sudoers’ (che è il file di configurazione principale per sudo) hanno il permesso di eseguire / eseguire il comando sudo prefix.

AVVERTIMENTO:

Se qualcuno ha provato a utilizzare il prefisso sudo, senza privilegi verrà notificato come “‘questo utente’ non è nel file sudoers. Questo incidente verrà segnalato. “

L’utilizzo dell’account root è piuttosto pericoloso nelle attività quotidiane in quanto ha i privilegi completi per eseguire qualsiasi tipo di azione nel sistema. Se qualcosa accade accidentalmente come un errore di battitura, quando si esegue il comando può facilmente distruggere l’intero sistema senza possibilità di ripristino se non per eseguire la reinstallazione. Ci sono molti rischi come questo, quindi è meglio evitare di usare un account di root tranne solo alcune situazioni specifiche che sono esplicitamente richieste. Pertanto, si consiglia sempre di utilizzare un normale account con privilegio sudo, invece di root, poiché sappiamo che sudo ha alcuni controlli di sicurezza aggiuntivi come, se eseguiamo comandi amministrativi, chiederà all’utente di autenticare la password, quindi gli utenti deve inserire la sua password per completare l’esecuzione.

Nella maggior parte delle distribuzioni Linux, possiamo concedere il privilegio sudo semplicemente aggiungendo gli utenti al gruppo sudo. Il nome del gruppo sudo in Redhat / Centos / Fedora è “wheel”, che è per lo più abilitato di default in caso contrario, quindi modifica il file / etc / sudoers usando il comando ‘visudo’ nel Terminale o possiamo accedere direttamente a questo file da usando ‘vi o vim. Qui puoi vedere le tre diverse voci seguenti nel file sudoers in grado di fornire i privilegi per utilizzare il prefisso sudo.

## Consenti a root di eseguire qualsiasi comando ovunque
root ALL = (ALL) ALL

## Significa che tutti gli utenti con i privilegi di root possono eseguire tutti i comandi come root

## Consente alle persone nella ruota del gruppo di eseguire tutti i comandi
% wheel ALL = (ALL) ALL

## Significa che tutti gli utenti che appartengono al gruppo wheel possono eseguire tutti i comandi come root

## Consente alle persone nella ruota del gruppo di eseguire tutti i comandi
username ALL = (ALL) ALL

## Significa che solo l’utente specificato può eseguire tutti i comandi come root

Nota:

Ora possiamo usare il seguente comando per aggiungere un utente al gruppo “wheel”.

# usermod -aG nome utente della ruota

In questo articolo, vedremo i passaggi per la configurazione di sudoers nel sistema Linux. Aiuterà tutti gli utenti desktop, gli sviluppatori e gli amministratori di sistema. I passaggi seguenti sono in questa guida testati su RHEL e CentOS 7.8. Puoi usare questa guida per tutte le versioni di RHEL, CentOS, Fedora e per lo più sarà identica anche per altre distribuzioni.

Prerequisiti:

Sistema operativo:
Pacchetto CentOS 7 : sudo
Account utente: utente root o un altro account con privilegi sudo
Punto di accesso: Accesso al terminale / Interfaccia della riga di comando

Per impostazione predefinita, tutte le distribuzioni Linux vengono fornite con un pacchetto preinstallato di sudo. È possibile verificare se i pacchetti sono disponibili o meno nel sistema utilizzando i seguenti comandi dalle opzioni fornite:

Opzione -A: apri il tuo terminale e digita semplicemente “sudo” senza virgolette e premi invio.

# sudo

Output: se il pacchetto sudo non è installato nel sistema, visualizzerà l’output come di seguito:

-bash: / usr / bin / sudo: nessun file o directory di questo tipo

Se il pacchetto è disponibile nel sistema, visualizzerà il risultato come di seguito:

utilizzo: sudo -h | -K | -k | -V
utilizzo: sudo -v [-AknS] [-g gruppo] [-h host] [-p prompt] [-u utente]
utilizzo: sudo -l [-AknS] [-g gruppo] [-h host] [-p prompt] [-U utente] [-u utente] [comando]
utilizzo: sudo [-AbEHknPS] [-r ruolo] [-t tipo] [-C num] [-g gruppo] [-h host] [-p prompt] [-T timeout] [-u utente] [VAR = valore] [-i | -s] [<comando>]
utilizzo: sudo -e [-AknS] [-r ruolo] [-t tipo ] [-C num] [-g gruppo] [-h host] [-p prompt] [-T timeout] [-u utente] file …

Opzione -B: per controllare il pacchetto utilizzando le utilità yum o rpm.

# yum list installato | grep sudo OPPURE # rpm -qi sudo

Produzione:

libsss_sudo.x86_64 1.16.4-37.el7 @anaconda
sudo.x86_64 1.8.23-9.el7 @base

Nota:

Nell’output sopra, puoi vedere che il pacchetto sudo viene scoperto nel sistema. In caso contrario, verrà visualizzato un messaggio “messaggio vuoto” o “pacchetto sudo non installato”. Per installare i pacchetti, possiamo usare il seguente comando “yum”. Yum è un’utilità molto potente in Linux per controllare molte cose relative alla gestione dei pacchetti.

# yum installa sudo

Nota:

Nel primo esempio, ti mostrerò i passaggi su come creare un nuovo utente con un prefisso sudo nel nuovo sistema installato Linux senza modificare / utilizzare il file sudoers.

Tabella dei contenuti mostra 

1. Trova una delle seguenti opzioni, per creare un nuovo utente con privilegio sudo

Opzione – A:

(i) Utilizzare il seguente comando per creare un nuovo utente in Linux

# useradd linuxteck

# passwd linuxteck                                        (crea una password)

(ii) Ora possiamo aggiungere il nuovo utente (linuxteck) al gruppo wheel

# usermod -aG wheel linuxteck

O

Opzione – B:

Invece di utilizzare i passaggi precedenti (i e ii), possiamo anche utilizzare il seguente comando in una singola riga per creare un nuovo utente sudo. Esistono molti metodi per creare un utente in Linux.

# useradd -G wheel linuxteck

(iii) Ora possiamo usare il comando ‘id’ per ottenere le informazioni sull’utente e sul gruppo dell’utente appena creato (linuxteck)

# id linuxteck

Produzione:

uid = 1005 (linuxteck) gid = 1005 (linuxteck) gruppi = 1005 (linuxteck), 10 (ruota)

Nota:

Nell’output sopra, puoi vedere che l’utente (linuxteck) è un membro del gruppo “wheel”. La cosa importante è che i membri del gruppo wheel possono eseguire qualsiasi comando simile a quello dell’utente root.

(iv) Ora possiamo testare il prefisso sudo con il nuovo account utente. Per questo, usiamo il comando ‘su’ per cambiare l’account utente da root all’account utente standard (linuxteck) OPPURE aprire un terminale diverso e accedere come nuovo utente. Qui userò la prima opzione.

[ root @ centos ~] # su – linuxteck                                                                           ## Per cambiare

[ linuxteck @ centos ~] $                                                                                            ## Dopo il cambio

Nota:

Dopo essere passati a un utente standard (linuxteck), possiamo testare il prefisso “sudo” per eseguire un comando. Qui otterremo un elenco di tutti i file e le cartelle della directory / root. L’account root ha solo l’autorità di elencare tutti i file e le directory della cartella root e non chiunque altro. Nel nostro caso, l’utente (linuxteck) è già un membro del gruppo wheel. Quindi, siamo autorizzati a utilizzare il prefisso sudo per eseguire il seguente comando. Come sappiamo, per eseguire un comando con il prefisso sudo verrà chiesto all’utente di inserire la password. Ora possiamo usare il seguente comando (ls -la) per ottenere l’elenco completo dei file e delle directory di un account root, inclusi i file nascosti con il formato di elenco lungo. Credo che il comando (ls) sia uno dei primissimi comandi che sei stato addestrato quando entri nella shell o nel prompt dei comandi.
$ sudo ls -la / root /

[sudo] password per linuxteck:

Produzione:

totale 48
dr-xr-x—. 5 radice radice 245 31 maggio 14:40.
dr-xr-xr-x. 17 root root 224 22 maggio 09:01 ..
-rw ——-. 1 radice radice 1865 22 maggio 09:03 anaconda-ks.cfg
-rw ——-. 1 radice radice 2955 5 giugno 23:13 .bash_history
-rw-r – r–. 1 root root 18 29 dicembre 2013
.bash_logout -rw-r – r–. 1 radice radice 176 29 dicembre 2013 .bash_profile
-rw-r – r–. 1 radice radice 176 29 dicembre 2013 .bashrc
drwx——. 4 root root 31 maggio 22 09:06 .cache
drwx——. 4 root root 30 maggio 22 09:06 .config
-rw-r – r–. 1 radice radice 100 29 dicembre 2013 .cshrc
drwx——. 3 radice radice 25 maggio 22 09:04 .dbus
-rw-r – r–. 1 root root 15264 18 settembre 2019 epel-release-latest-7.noarch.rpm
-rw-r – r–. 1 root root 1913 22 maggio 09:05 initial-setup-ks.cfg
-rw-r – r–. 1 radice radice 129 29 dicembre 2013 .tcshrc

Nota:

Assicurati sempre di essere aggiunto all’utente in un gruppo pertinente e di applicare la password utente corretta per utilizzare il comando “sudo”.

2. Come consentire a un particolare utente di eseguire / eseguire solo comandi specifici come sudo?

Nota:

Nell’esempio sopra, abbiamo aggiunto l’utente in un gruppo sudo, che ha concesso l’accesso completo per eseguire tutti i comandi come l’account di root. Qui assegneremo un particolare utente per eseguire solo comandi specifici con il prefisso sudo. Può essere ottenuto utilizzando il file di configurazione principale di sudo ‘/ etc / sudoers’.

In questo esempio, stiamo concedendo il permesso all’utente “john” di eseguire un solo comando “systemctl restart network” come sudo. Per una migliore comprensione, eseguiamo lo stesso comando precedente, con e senza il privilegio di sudo.

(i) Senza privilegio:

$ sudo systemctl riavvia la password di rete
[sudo] per john:

Produzione:

john non è nel file sudoers. Questo incidente verrà segnalato.

Nota:

Puoi vedere l’output sopra, dice, al rispettivo utente non viene aggiunto il file sudoers per utilizzare il prefisso sudo. Ora aggiungi la seguente voce in / etc / sudoers usando il comando ‘visudo’.

(ii) Con privilegio:

# visudo

john ALL = / usr / bin / systemctl riavvia la rete

Nota:

salva e chiudi il file usando ‘: wq’ e poi esegui lo stesso comando.

$ sudo systemctl riavvia la password di rete
[sudo] per john:

Nota:

Il comando precedente è stato eseguito correttamente senza alcun errore o avviso. L’aggiunta di più comandi a un determinato utente può utilizzare una virgola (,) tra i comandi come di seguito:

john ALL = / usr / bin / systemctl riavvia la rete, / usr / bin / systemctl status network

3. Come consentire agli utenti di eseguire / eseguire un comando utilizzando sudo senza un controllo della password?

john ALL = (ALL) NOPASSWD: / usr / bin / systemctl riavvia rete, / usr / bin / systemctl status network

Nota:

Normalmente quando esegui un comando sudo per la prima volta, chiederà all’utente di inserire la sua password per completare l’esecuzione. Per impostazione predefinita, la password sudo verrà memorizzata nella cache per i prossimi 5 minuti. Se qualsiasi esecuzione avviene entro 5 minuti, non richiederà la password, ma dopo il periodo di memorizzazione nella cache, sarà necessario inserire la password. Tuttavia, questo può essere sovrascritto e disabilitare l’opzione di autenticazione della password utilizzando NOPASSWD nel file sudoers.

4. Come modificare il timeout predefinito della richiesta della password di sudo?

Nota:

Per impostazione predefinita, la password di lettura scaduta sudo verrà memorizzata nella cache per soli cinque minuti. Questo può essere modificato dall’opzione “timestamp_timeout” nei file sudoers. In questo esempio, imposteremo il timeout di 15 minuti. Verrà applicato globalmente, a tutti gli utenti in sudo.

Il valore predefinito è timestamp_timeout = 15

Nota:

Possiamo aggiungere la seguente voce per impostare il timestamp_timeout per un particolare utente. Per fare sempre il controllo della password, impostare il valore su 0 (zero).

Impostazioni predefinite: linuxteck timestamp_timeout = 15

5. Come eseguire il comando come un altro utente con il prefisso sudo?

Nota:

Ora assegneremo a un utente il compito di eseguire il comando di altri utenti senza condividere la password. Per farlo, aggiungi la seguente voce nel file / etc / sudoers. In questo esempio, l’utente “britto” eseguirà un comando particolare, come utente john utilizzando la password di “britto”.

britto ALL = (john) / usr / bin / systemctl status network

salva e chiudi il file usando ‘: wq’

$ sudo -u john systemctl status network
[sudo] password per britto:

Produzione:

● network.service – LSB: Attiva / disattiva la rete
Loaded: caricato (/etc/rc.d/init.d/network; bad; vendor preset: disabilitato)
Attivo: attivo (uscito) da Sun 2020-06-07 11 : 22: 58 IST; 11 ore fa
Docs: man: systemd-sysv-generator (8)
Processo: 5844 ExecStop = / etc / rc.d / init.d / network stop (code = exited, status = 0 / SUCCESS)
Process: 6016 ExecStart = / etc /rc.d/init.d/network start (code = exited, status = 0 / SUCCESS)
Tasks: 0

6. Come creare un file di registro personalizzato per sudo?

Nota:

Solo tutte le voci seguenti nel file sudoers per ottenere questo compito

Default logfile = “/ var / log / sudo.log”

Nota:

Ora possiamo usare il seguente comando per visualizzare tutti i log relativi al comando sudo. Mostrerà la storia di chi fa cosa.

# cat /var/log/sudo.log

Produzione:

7 giugno 23:54:45: linuxteck: TTY = pts / 0; PWD = / home / linuxteck; UTENTE = root;
COMANDO = / bin / bash
7 giugno 23:55:08: giovanni: TTY = punti / 1; PWD = / home / john; UTENTE = root;
COMANDO = / bin / systemctl status network

Come possiamo usare il comando sudo in Linux

La sintassi globale del comando sudo in Linux:

sudo [opzioni] [comando]

Nota:

Il comando sudo include anche molte opzioni possibili, ma su un corso regolare per lo più verrà utilizzato senza alcuna opzione a meno che non vi sia un tale requisito. Tuttavia, ho aggiunto le opzioni più utilizzate.

7. Come verificare se un utente appartiene a sudoer o no?

# sudo -l -U britto

Produzione:

L’utente britto non può eseguire sudo su centos.

Nota:

Qui puoi vedere che l’utente britto non è autorizzato a eseguire alcun comando sudo

# sudo -l -U john

Produzione:

Abbinamento predefiniti voci per John su CentOS:
! Visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep =”Colori display HOSTNAME HISTSIZE KDEDIR
LS_COLORS”, env_keep + =”MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE”, env_keep + =”LC_MEASUREMENT LC_COLLATE LC_IDENTIFICATION
LC_MESSAGES “, Env_keep + =” LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE “, env_keep + =” LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET
XAUTHORITY “, secure_path = / sbin \: / bin \: / usr / sbin

L’utente john può eseguire i seguenti comandi su centos:
(ALL) NOPASSWD: / usr / bin / systemctl restart network, / usr / bin / systemctl status network

Nota:

Se ottieni un output come sopra, significa che a questo utente è consentito utilizzare il comando sudo e inoltre puoi vedere il nome dei comandi che l’utente può eseguire con il prefisso sudo. Se in questo elenco sono presenti più voci, è meglio utilizzare un formato di elenco lungo come nell’esempio seguente.

# sudo -ll -U john

Produzione:

L’utente john può eseguire i seguenti comandi su centos:

Voce Sudoers:
RunAsUsers: ALL
Opzioni :! Authenticate
Comandi:
/ usr / bin / systemctl restart network
/ usr / bin / systemctl status network

Grazie per esserti preso il tempo di leggere! Spero che questo articolo ti aiuti a capire la configurazione di 7 utili sudoers per l’impostazione di “sudo” in Linux. Inviami il tuo feedback / commenti. Se ti piace questo articolo, condividilo gentilmente e potrebbe aiutare anche gli altri.

Translate »