Come controllare sudo Access su Linux

Pubblicato: 2022-01-29
Una finestra del terminale Linux su un desktop in stile Ubuntu.
Fatmawati Achmad Zaenuri/Shutterstock

Il comando sudo ti consente di eseguire comandi su Linux come se fossi qualcun altro, come root . sudo ti consente anche di controllare chi può accedere alle funzionalità root's , con granularità. Concedi agli utenti l'accesso completo o consenti loro di utilizzare un piccolo sottoinsieme di comandi. Ti mostriamo come.

sudo e autorizzazioni di root

Abbiamo tutti sentito (l'eccessiva semplificazione) che tutto in Linux è un file. In verità, praticamente tutto nel sistema operativo da processi, file, directory, socket e pipe comunica al kernel attraverso un descrittore di file. Quindi, sebbene tutto non sia un file, la maggior parte degli oggetti del sistema operativo vengono gestiti come se lo fossero. Ove possibile, la progettazione di sistemi operativi simili a Linux e Unix aderisce a questo principio.

Il concetto di "tutto è un file" è di vasta portata in Linux. È facile vedere quindi come i permessi dei file in Linux siano diventati uno dei pilastri dei privilegi e dei diritti degli utenti. Se possiedi un file o una directory (un tipo speciale di file), puoi fare ciò che ti piace, incluso modificarlo, rinominarlo, spostarlo ed eliminarlo. È inoltre possibile impostare le autorizzazioni sul file in modo che altri utenti o gruppi di utenti possano leggere, modificare o eseguire il file. Ognuno è governato da queste autorizzazioni.

Tutti coloro che, a parte il superutente, sono conosciuti come root . L'account root è un account con privilegi speciali. Non è vincolato dalle autorizzazioni su nessuno degli oggetti nel sistema operativo. L'utente root può fare qualsiasi cosa e, praticamente, in qualsiasi momento.

Annuncio pubblicitario

Naturalmente, chiunque abbia accesso alla password root's può fare lo stesso. Potrebbero causare il caos in modo malizioso o accidentale. In effetti, anche l'utente root può causare il caos commettendo un errore. Nessuno è infallibile. È roba pericolosa.

Questo è il motivo per cui ora è considerata una buona pratica non accedere affatto come root . Accedi con un normale account utente e usa sudo per elevare i tuoi privilegi per la breve durata di cui hai bisogno. Spesso è solo per emettere un singolo comando.

CORRELATI: Cosa significa "Tutto è un file" in Linux?

La lista dei sudoers

sudo era già installato sui computer Ubuntu 18.04.3, Manjaro 18.1.0 e Fedora 31 utilizzati per la ricerca di questo articolo. Questa non è una sorpresa. sudo è in circolazione dall'inizio degli anni '80 ed è diventato il mezzo standard per il funzionamento del superutente per quasi tutte le distribuzioni.

Quando installi una distribuzione moderna, l'utente che crei durante l'installazione viene aggiunto a un elenco di utenti chiamato sudoers . Questi sono gli utenti che possono utilizzare il comando sudo . Poiché hai poteri sudo , puoi usarli per aggiungere altri utenti all'elenco dei sudoer.

Naturalmente, è avventato distribuire lo stato di superutente completo, volenti o nolenti, oa chiunque abbia solo un'esigenza parziale o specifica. L'elenco sudoers consente di specificare con quali comandi i vari utenti possono utilizzare sudo . In questo modo, non gli dai le chiavi del regno, ma possono comunque realizzare ciò che devono fare.

Esecuzione di un comando come un altro utente

In origine si chiamava "superuser do", perché potevi fare le cose come superuser. Il suo ambito è stato ampliato ora e puoi usare sudo per eseguire un comando come se fossi un qualsiasi utente. È stato rinominato per riflettere quella nuova funzionalità. Ora è chiamato "utente sostitutivo".

Per utilizzare sudo per eseguire un comando come un altro utente, è necessario utilizzare l'opzione -u (utente). Qui, eseguiremo il comando whoami come utente mary . Se usi il comando sudo senza l'opzione -u , eseguirai il comando come root .

Annuncio pubblicitario

E, naturalmente, poiché stai usando sudo , ti verrà richiesta la password.

 sudo -u mary whoami 

La risposta di whoami ci dice che l'account utente che esegue il comando è mary .

Puoi usare il comando sudo per accedere come un altro utente senza conoscere la sua password. Ti verrà richiesta la tua password. Dobbiamo usare l'opzione -i (login).

 sudo -i -u mary
 pwd
 chi sono
 ls -hl
 Uscita 

Hai effettuato l'accesso come mary . I file ".bashrc", ".bash_aliases" e ".profile" per l'account utente mary vengono elaborati esattamente come se il proprietario dell'account utente mary avesse effettuato l'accesso.

  • Il prompt dei comandi cambia per riflettere che si tratta di una sessione per l'account utente mary .
  • Il comando pwd riproduce che ora sei nella home directory mary's .
  • whoami ci dice che stai usando l'account utente mary .
  • I file nella directory appartengono all'account utente mary .
  • Il comando di exit riporta alla normale sessione dell'account utente.

Modifica del file sudoers

Per aggiungere utenti all'elenco delle persone che possono utilizzare sudo , devi modificare il file sudoers . È di vitale importanza che tu lo faccia solo usando il comando visudo . Il comando visudo impedisce a più persone di provare a modificare il file sudoers contemporaneamente. Esegue anche il controllo della sintassi e l'analisi del contenuto del file durante il salvataggio.

Annuncio pubblicitario

Se le tue modifiche non superano i test, il file non viene salvato alla cieca. Ottieni opzioni. È possibile annullare e abbandonare le modifiche, tornare indietro e modificare nuovamente le modifiche oppure forzare il salvataggio delle modifiche errate. L'ultima opzione è una pessima idea. Non essere tentato di farlo. Puoi trovarti in una situazione in cui tutti sono accidentalmente bloccati dall'uso di sudo .

Sebbene tu avvii il processo di modifica usando il comando visudo , visudo non è un editor. Chiama uno dei tuoi editor esistenti per eseguire le modifiche ai file. Su Manjaro e Ubuntu, il comando visudo lanciato il semplice editor nano . Su Fedora, visudo lanciato il più capace, ma meno intuitivo, vim .

CORRELATI: Come uscire da Vi o Vim Editor

Se preferisci usare nano su Fedora, puoi farlo facilmente. Innanzitutto, installa nano :

sudo dnf install nano

E poi visudo doveva essere invocato con questo comando:

 sudo EDITOR=nano visudo 

Sembra un buon candidato per un alias. L'editor nano viene aperto con il file sudoers caricato al suo interno.

nano editor con il file sudoers caricato al suo interno

Aggiunta di utenti al gruppo sudo

Usa visudo per aprire il file sudoers. Usa questo comando o quello sopra descritto per specificare l'editor di tua scelta:

 sudo visudo 

Scorri il file sudoers finché non vedi la definizione della voce %sudo .

Il file sudoers con la riga %sudo evidenziata

Annuncio pubblicitario

Il segno di percentuale indica che si tratta di una definizione di gruppo e non di una definizione utente. In alcune distribuzioni, la riga %sudo ha un hash # all'inizio della riga. Questo rende la riga un commento. In tal caso, rimuovere l'hash e salvare il file.

La riga %sudo è suddivisa in questo modo:

  • %sudo : il nome del gruppo.
  • ALL= : questa regola si applica a tutti gli host su questa rete.
  • (ALL:ALL) : i membri di questo gruppo possono eseguire comandi come tutti gli utenti e tutti i gruppi.
  • All : i membri di questo gruppo possono eseguire tutti i comandi.

Per riformularlo leggermente, i membri di questo gruppo possono eseguire qualsiasi comando, come qualsiasi utente o gruppo, su questo computer o su qualsiasi altro host in questa rete. Quindi un modo semplice per dare a qualcuno i privilegi di root e la possibilità di usare sudo , è aggiungerli al gruppo sudo .

Abbiamo due utenti, Tom e Mary, con rispettivamente gli account utente tom e mary . Aggiungeremo l'account utente tom al gruppo sudo con il comando usermod . L'opzione -G (gruppi) specifica il gruppo a cui aggiungeremo l'account tom . L'opzione -a (aggiungi) aggiunge questo gruppo all'elenco dei gruppi in cui si trova già l'account utente tom . Senza questa opzione, l'account utente tom verrebbe inserito nel nuovo gruppo ma rimosso da qualsiasi altro gruppo.

 sudo usermod -a -G sudo tom 

Controlliamo in quali gruppi si trova Mary:

 gruppi 

L'account utente mary è solo nel gruppo mary .

Controlliamo con Tom:

 gruppi 

L'account utente di tom , e quindi Tom, si trova nei gruppi tom e sudo .

Proviamo a convincere Mary a fare qualcosa che richiede i privilegi di sudo .

 sudo meno /etc/shadow 

Annuncio pubblicitario

Mary non può guardare all'interno del file limitato "/etc/shadow". Riceve un lieve rimprovero per aver cercato di usare sudo senza permesso. Vediamo come se la cava Tom:

 sudo meno /etc/shadow 

Non appena Tom inserisce la sua password, gli viene mostrato il file /etc/shadow.

Solo aggiungendolo al gruppo sudo , è stato elevato ai ranghi d'élite di coloro che possono usare sudo . Completamente illimitato.

Concessione agli utenti di diritti sudo limitati

A Tom sono stati concessi pieni diritti sudo . Può fare qualsiasi cosa che root o chiunque altro nel gruppo sudo , possa fare. Questo potrebbe concedergli più potere di quello che sei felice di cedere. A volte è necessario che un utente esegua una funzione che richiede i privilegi di root , ma non esiste un caso giustificabile che disponga dell'accesso sudo completo. Puoi ottenere quell'equilibrio aggiungendoli al file sudoers ed elencando i comandi che possono usare.

Incontriamo Harry, proprietario dell'account utente harry . Non è nel gruppo sudo e non ha privilegi sudo .

 gruppi 

È utile per Harry poter installare il software, ma non vogliamo che disponga dei diritti sudo completi. Ok nessun problema. visudo :

 sudo visudo 

Annuncio pubblicitario

Scorri il file fino a superare le definizioni del gruppo. Aggiungeremo una battuta per Harry. Poiché questa è una definizione utente e non una definizione di gruppo, non è necessario iniziare la riga con un segno di percentuale.

voce del file sudoer per harry

La voce per l'account utente harry è:

 harry ALL=/usr/bin/apt-get

Nota che c'è una scheda tra "harry" e "ALL=."

Questo si legge come l'account utente harry può utilizzare i comandi elencati su tutti gli host collegati a questa rete. C'è un comando elencato, che è "/usr/bin/apt-get". Possiamo concedere a Harry l'accesso a più di un comando aggiungendoli all'elenco dei comandi, separati da virgole.

Aggiungi la riga al file sudoers e salva il file. Se vuoi ricontrollare che la riga sia sintatticamente corretta, possiamo chiedere a visudo di scansionare il file e controllare la sintassi per noi, usando l' -c (solo controllo):

 sudo visudo -c 

I controlli hanno luogo e visudo segnala che tutto va bene. Harry ora dovrebbe essere in grado di utilizzare apt-get per installare il software, ma dovrebbe essere rifiutato se tenta di utilizzare qualsiasi altro comando che richieda sudo .

 sudo apt-get install finger 

I diritti sudo appropriati sono stati concessi a Harry e lui è in grado di installare il software.

Annuncio pubblicitario

Cosa succede se Harry prova a usare un comando diverso che richiede sudo ?

 sudo spegnimento ora 

Ad Harry viene impedito di eseguire il comando. Gli abbiamo concesso con successo un accesso specifico e limitato. Può usare il comando nominato e nient'altro.

Utilizzo degli alias utente sudoers

Se vogliamo dare a Mary gli stessi privilegi, potremmo aggiungere una riga nel file sudoers per l'account utente mary esattamente come abbiamo fatto con Harry. Un altro modo più ordinato per ottenere la stessa cosa è usare User_Alias .

nel file sudoers, User_Alias contiene un elenco di nomi di account utente. Il nome di User_Alias può quindi essere utilizzato in una definizione per rappresentare tutti quegli account utente. Se desideri modificare i privilegi per quegli account utente, hai solo una riga da modificare.

Creiamo un User_Alias e usiamolo nel nostro file sudoers.

 sudo visudo 

 Scorri verso il basso nel file fino a quando non arrivi alla riga della specifica User_Alias.

Aggiungi User_Alias digitando:

 User_Alias ​​INSTALLATORI = harry, mary

Ogni elemento è separato da uno spazio, non da una scheda. La logica si articola come:

  • User_Alias : Questo dice a visudo che sarà un User_Alias .
  • INSTALLATORI : Questo è un nome arbitrario per questo alias.
  • = harry, mary : l'elenco degli utenti da includere in questo alias.
Annuncio pubblicitario

Ora modificheremo la riga che abbiamo aggiunto in precedenza per l'account utente harry :

 harry ALL=/usr/bin/apt-get

Modificalo in modo che si legga:

 INSTALLATORI TUTTI=/usr/bin/apt-get

Questo dice che tutti gli account utente contenuti nella definizione degli "INSTALLATORI" User_Alias possono eseguire il comando apt-get . Possiamo testarlo con Mary, che ora dovrebbe essere in grado di installare il software.

 sudo apt-get install colordiff 

Mary è in grado di installare il software perché è in "INSTALLERS" User_Alias e a tale User_Alias sono stati assegnati quei diritti.

Tre trucchi sudo veloci

Quando dimentichi di aggiungere sudo a un comando, digita

 sudo!!

E l'ultimo comando verrà ripetuto con sudo aggiunto all'inizio della riga.

Una volta che hai usato sudo e ti sei autenticato con la tua password, non dovrai usare la tua password con altri comandi sudo per 15 minuti. Se vuoi che la tua autenticazione venga dimenticata subito, usa:

 sudo -k
Annuncio pubblicitario

Ti sei mai chiesto dove puoi vedere i tentativi di comando sudo falliti? Vanno al file "/var/log/auth.log". Puoi visualizzarlo con:

 meno /var/log/auth.log 

Possiamo vedere la voce per l'account utente mary che era connesso a TTY pts/1 quando ha provato a eseguire il comando di shutdown come utente "root".

Con grande potere...

...viene la capacità di delegarne parti ad altri. Ora sai come potenziare gli altri utenti in modo selettivo.