Come controllare l'accesso a sudo in Linux

Contenuti

Una finestra di terminale Linux su un desktop in stile Ubuntu.

il sudo Il comando ti consente di eseguire comandi in Linux come se fossi qualcun altro, Che cosa root. sudo ti permette anche di controllare chi può entrare root's capacità, con granularità. Concedere agli utenti l'accesso completo o consentire loro di utilizzare un piccolo sottoinsieme di comandi. Ti mostriamo come.

Sudo e permessi di root

Abbiamo tutti sentito (semplificazione esagerata) che tutto in Linux è un file. In realtà, praticamente tutto nel sistema operativo, dai processi, record, directory, prese e tubi, comunicare con il kernel tramite un descrittore di file. Quindi anche quando tutto Non è un file, la maggior parte degli oggetti del sistema operativo viene gestita Come Li avevamo. Quando possibile, il design dei sistemi operativi Linux e Unix-like aderisce a questo principio.

Il concetto di “tutto è un file” ha una grande portata su Linux. È facile quindi vedere come i permessi dei file in Linux siano diventati uno dei pilastri dei privilegi e dei diritti degli utenti.. Se hai un file o una directory (un tipo speciale di file), puoi farci quello che vuoi, anche modificarlo, rinominalo, spostalo ed eliminalo. Puoi anche determinare le autorizzazioni sul file in modo che altri utenti o gruppi di utenti possano leggere, modificare o eseguire il file. Tutti sono governati da queste autorizzazioni.

Tutto quello, allo stesso tempo come super utente, sono conosciuti come root. il root l'account è un account con privilegi speciali. Non è soggetto alle autorizzazioni di nessuno degli oggetti del sistema operativo. L'utente root può fare qualsiasi cosa e, in pratica, in qualsiasi momento.

Certo, chiunque abbia accesso a root's la password può fare lo stesso. Potrebbero provocare il caos intenzionalmente o accidentalmente. In realtà, il root L'utente può anche creare scompiglio se commette un errore. Nessuno è infallibile. È una cosa pericolosa.

Ecco perché ora è considerata una best practice no accedi come root assolutamente. Accedi con un account utente frequente e usa sudo per eleva i tuoi privilegi per un breve periodo di tempo ne hai bisogno. Spesso, è solo per impartire un singolo comando.

IMPARENTATO: Cosa significa “tutto è un file” en Linux?

L'elenco dei sudoer

sudo era già installato sui computer Ubuntu 18.04.3, Manjaro 18.1.0 e Fedora 31 usato per indagare su questo post. Questa non è una sorpresa. sudo esiste dai primi anni '90 1980 ed è diventato il mezzo standard di 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 sudo comando. Perchè tu hai sudo poteri, puoi usarli per aggiungere altri utenti all'elenco sudoers.

Certo, non è saggio cedere lo stato di superutente completo a piacimento o a chiunque abbia solo un bisogno parziale o specifico. L'elenco sudoer ti consente di specificare quali comandi possono essere utilizzati da diversi utenti sudo insieme a. Quel modo, non dà loro le chiavi del regno, ma possono ancora realizzare ciò che devono fare.

Esecuzione di un comando come un altro utente

Originariamente, si chiamava "superutente do", perché potrei fare le cose come superutente. Il tuo ambito ora è stato ampliato e puoi usarlo sudo eseguire un comando come se fosse un qualsiasi utente. È stato rinominato per riflettere questa nuova funzionalità.. Ora si chiama “Utente sostitutivo”.

Utilizzo sudo per eseguire un comando come un altro utente, dobbiamo usare il -u opzione (Nome utente). Qui, corriamo il chi sono comando come utente mary. Se usi il sudo comando senza -u opzione, eseguirà il comando come root.

E comunque, perché stai usando sudo ti verrà chiesta la password.

sudo -u mary whoami

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

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

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

Hai effettuato l'accesso come mary. I file “.bashrc”, “.bash_aliases” e “.profilo” Per l'account utente MARY, vengono elaborati esattamente come se il proprietario dell'account utente MARY avesse effettuato l'accesso.

  • Il prompt dei comandi viene modificato per indicare che si tratta di una sessione per l'account utente mary.
  • il pwdRipetere il comando in cui ci si trova ora mary's home directory.
  • whoami ci dice che stai utilizzando un account utente mary.
  • I file nella directory appartengono al mary account utente.
  • il exit il comando ti riporta a la tua normale sessione dell'account utente.

Modificare il file sudoers

Per aggiungere utenti all'elenco delle persone che possono utilizzare sudo , devi modificare il sudoers procedimento. È di vitale importanza che tu lo faccia solo usando il visudo comando. il visudo Il comando impedisce a più persone di provare a modificare il file sudoers contemporaneamente. Cosa c'è di più esegue la verifica e l'analisi nel contenuto del file mentre li salvi.

Se le tue modifiche falliscono i test, il file non viene salvato alla cieca. Hai delle opzioni. Puoi annullare e abbandonare le modifiche, torna indietro e modifica di nuovo le modifiche, o forza il salvataggio delle modifiche errate. L'ultima opzione è una pessima idea. Non essere tentato di farlo. Potresti trovarti in una situazione in cui tutto il mondo bloccato accidentalmente in modo che non possa essere utilizzato sudo.

Anche se si avvia la procedura di modifica con il tasto visudo comando, visudo non un editore. Chiama uno dei tuoi editor esistenti per apportare modifiche al file. Su Manjaro e Ubuntu, il visudo comando lanciato il semplice editor nano. In Fedora, visudo lanciato il più capacema meno intuitivovim.

IMPARENTATO: Come uscire dall'editor Vi o Vim

Se preferisci usare nano in Fedora, può farlo facilmente. Primo, installare nano:

sudo dnf install nano

E successivamente visudo doveva essere invocato con questo comando:

sudo EDITOR=nano visudo

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

editor nano con file sudoers caricato al suo interno

Aggiungi utenti al gruppo sudo

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

sudo visudo

Scorri il file sudoers fino a vedere la definizione di %sudo iscrizione.

Il file sudoers con la riga % sudo evidenziata

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

il %sudo la linea è divisa in questo modo:

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

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

Abbiamo due utenti, Tom e Mary, con account utente. tom e mary rispettivamente. Aggiungeremo un account utente tom al sudo gruppo con lui usermod comando. il -G L'opzione (gruppi) specifica il gruppo a cui andremo ad aggiungere il tom conto a. il -a (Aggiungere) opzione Inserisci questo gruppo nel gruppo elenca l'account utente tom già acceso. Senza questa opzione, l'account utente tom verrebbe inserito nel nuovo gruppo ma rimosso da qualsiasi altro gruppo.

sudo usermod -a -G sudo tom

Vediamo in quali gruppi appartiene Mary:

gruppi

Account utente mary è solo nel mary gruppo.

Controlliamo con Tom:

gruppi

il tom account utente, e così, Tom, è nei gruppi tom e sudo.

Proviamo a convincere Mary a fare qualcosa che richieda sudo privilegi.

sudo less /etc/shadow

Mary non può guardare all'interno del file limitato “/ eccetera / ombra”. Riceve un leggero rimprovero per aver cercato di usare sudo senza permesso. Vediamo come fa Tom:

sudo less /etc/shadow

Non appena Tom inserisce la sua password, il file è mostrato / eccetera / ombra.

Semplicemente aggiungendolo al sudo gruppo, è stato elevato ai ranghi d'élite di coloro che possono usare sudo. Assolutamente nessuna restrizione.

Concedi agli utenti diritti sudo limitati

Tom si è dato completamente sudo diritti. Può fare qualsiasi cosa rootO chiunque altro nel sudo gruppo - può fare. Questo potrebbe darti più potere di quello che sei felice di dare.. A volte è necessario che un utente esegua una funzione che richiede root privilegi, ma non c'è motivo giustificabile per loro di avere pieno sudo accesso. Puoi raggiungere questo equilibrio aggiungendoli al file sudoers ed elencando i comandi che possono usare.

Incontriamo Harry, proprietario dell'account utente. harry. Lui non c'è sudo gruppo, e lui no sudo privilegi.

gruppi

È utile che Harry possa installare il software, ma non vogliamo che abbia sudo diritti. Va bene, Nessun problema. accendiamo visudo:

sudo visudo

Scorri il file verso il basso fino a superare le definizioni del gruppo. Aggiungiamo una riga per Harry. Perché questo è un Nome utente definizione 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

Si noti che esiste una scheda tra “Saccheggiare” e “TUTTI =”.

Questo viene letto come account utente harry puoi usare i comandi elencati su tutti gli host connessi a questa rete. C'è un comando nella lista, Che cos'è “/ usr / bidone / 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 controllare che la linea sia sintatticamente corretta, possiamo chiedere visudo per scansionare il file e controllare la sintassi per noi, usando il -c (marchio solista) opzione:

sudo visudo -c

Vengono effettuati controlli e visudo segnala che va tutto bene. Harry dovrebbe ora essere in grado di usare apt-get installare software ma dovrebbe essere rifiutato se si tenta di utilizzare qualsiasi altro comando che richieda sudo.

sudo apt-get install finger

L'appropriato sudo Harry ha ottenuto i diritti e può installare il software.

E se Harry provasse a usare un comando diverso di cui ha bisogno? sudo?

sudo spegnilo ora

Harry non può eseguire il comando. Ti abbiamo concesso con successo un accesso specifico e limitato. Puoi usare il comando designato e nient'altro.

Utilizzo degli alias utente sudoers

Se vogliamo dare a Maria 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 lo stesso risultato è usare a User_Alias.

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

Creiamo un User_Alias e usalo nel nostro file sudoers.

sudo visudo

Scorri verso il basso nel file fino a raggiungere la riga di specifica User_Alias.

Aggiungi il User_Alias scrivere:

User_Alias ​​INSTALLATORI = harry, Maria

Ogni elemento è separato da uno spazio, non per un ciglio. La logica si rompe come:

  • User_Alias: Questo dice visudo questo sarà un User_Alias.
  • INSTALLATORI: Questo è un nome arbitrario per questo alias.
  • = Harry, Maria: L'elenco degli utenti da includere in questo alias.

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

harry ALL=/usr/bin/apt-get

Cambialo per dire:

INSTALLATORI ALL=/usr/bin/apt-get

Questo dice che tutti gli account utente inclusi nella definizione di “INSTALLATORI” User_Alias può eseguire il apt-get comando. Possiamo testarlo con Mary, chi ora dovrebbe essere in grado di installare il software.

sudo apt-get install colordiff

Maria può installare il software perché è in “INSTALLATORI” User_Alias, lancio User_Alias ti sono stati concessi quei diritti.

Tre trucchi veloci sudo

Quando dimentichi di aggiungere sudo a un comando, scriba

sudo !!

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

Una volta che hai usato sudo e autenticato con la tua password, non dovrai usare la tua password con più sudo comandi durante 15 minuti. Se vuoi che la tua autenticazione venga dimenticata immediatamente, utilizzo:

sudo -k

Ti sei mai chiesto dove puoi vedere fallito? sudo tentativi di comando? Dall'archivio “/var/log/auth.log”. Puoi vederlo con:

less /var/log/auth.log

Possiamo vedere la voce dell'account utente mary che ha effettuato l'accesso a TTY pts / 1 quando hai provato a eseguire il shutdown comando come utente “radice”.

Con grande potenza …

… arriva la capacità di delegare parti ad altri. Ora sai come potenziare gli altri utenti in modo selettivo.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.