GNU/Linux >> Linux Esercitazione >  >> Linux

I veri amministratori di sistema non sudo

Alcuni mesi fa, ho letto un articolo molto interessante che conteneva alcune buone informazioni su una funzionalità di Linux di cui volevo saperne di più. Non ti dirò il nome dell'articolo, di cosa si trattava, e nemmeno il sito web su cui l'ho letto, ma l'articolo mi ha fatto rabbrividire.

Il motivo per cui ho trovato questo articolo così rabbrividente è che precedeva ogni comando con sudo comando. Il problema che ho con questo è che l'articolo è presumibilmente per gli amministratori di sistema e i veri amministratori di sistema non usano sudo davanti a ogni comando che emettono. Farlo è un uso improprio grossolano di sudo comando. Ho scritto di questo tipo di uso improprio nel mio libro, "The Linux Philosophy for SysAdmins". Quello che segue è un estratto dal capitolo 19 di quel libro.

In questo articolo, esploriamo perché e come il sudo strumento viene utilizzato in modo improprio e come bypassare la configurazione che obbliga a utilizzare sudo invece di lavorare direttamente come root.

sudo o non sudo

Parte dell'essere un amministratore di sistema e utilizzare i tuoi strumenti preferiti è utilizzare correttamente gli strumenti che abbiamo e averli a disposizione senza alcuna restrizione. In questo caso, trovo che il sudo comando viene utilizzato in un modo per il quale non è mai stato concepito. Ho una particolare antipatia per il modo in cui sudo la struttura viene utilizzata in alcune distribuzioni, soprattutto perché viene utilizzata per limitare e limitare l'accesso delle persone che svolgono il lavoro di amministrazione del sistema agli strumenti di cui hanno bisogno per svolgere i propri compiti.

"[SysAdmins] non usa sudo."
– Paul Venezia

Venezia spiega nel suo articolo InfoWorld che sudo è usato come stampella per gli amministratori di sistema. Non passa molto tempo a difendere questa posizione oa spiegarla. Lo afferma solo come un dato di fatto. E sono d'accordo con lui, per gli amministratori di sistema. Non abbiamo bisogno delle rotelle per fare il nostro lavoro. In effetti, si mettono in mezzo.

Alcune distribuzioni, come Ubuntu, usano sudo comando in un modo che ha lo scopo di rendere un po' più difficile l'uso di comandi che richiedono privilegi elevati (root). In queste distribuzioni, non è possibile accedere direttamente come utente root, quindi sudo Il comando viene utilizzato per consentire agli utenti non root l'accesso temporaneo ai privilegi di root. Questo dovrebbe rendere l'utente un po' più attento nell'emettere comandi che richiedono privilegi elevati come l'aggiunta e l'eliminazione di utenti, l'eliminazione di file che non appartengono a loro, l'installazione di nuovo software e in generale tutte le attività necessarie per amministrare un moderno host Linux. Forzare gli amministratori di sistema a utilizzare sudo command come prefazione ad altri comandi dovrebbe rendere più sicuro il lavoro con Linux.

Usando sudo nel modo in cui sono queste distribuzioni è, secondo me, un tentativo orribile e inefficace di fornire agli amministratori di sistema inesperti un falso senso di sicurezza. È completamente inefficace nel fornire qualsiasi livello di protezione. Posso emettere comandi altrettanto errati o dannosi usando sudo come posso quando non lo uso. Le distribuzioni che usano sudo per anestetizzare il senso di paura che potremmo emettere un comando errato stanno facendo un grande disservizio agli amministratori di sistema. Non ci sono limiti o restrizioni imposte da queste distribuzioni sui comandi che si potrebbero usare con sudo facilità. Non c'è alcun tentativo di limitare effettivamente il danno che potrebbe essere fatto proteggendo effettivamente il sistema dagli utenti e dalla possibilità che possano fare qualcosa di dannoso, né dovrebbe esserci.

Cerchiamo quindi di essere chiari su questo:queste distribuzioni si aspettano che l'utente esegua tutte le attività di amministrazione del sistema. Indulgono gli utenti, che in realtà sono amministratori di sistema, a pensare di essere in qualche modo protetti dagli effetti di fare qualcosa di male perché devono fare questo passaggio aggiuntivo restrittivo per inserire la propria password per eseguire i comandi.

Ignora sudo

Le distribuzioni che funzionano in questo modo di solito bloccano la password per l'utente root (Ubuntu è una di queste distribuzioni). In questo modo nessuno può accedere come root e iniziare a lavorare senza ostacoli. Diamo un'occhiata a come funziona e poi come bypassarlo.

Permettetemi di definire qui la configurazione in modo che possiate riprodurla se lo desiderate. Ad esempio, ho installato Ubuntu 16.04 LTS1 in una VM usando VirtualBox. Durante l'installazione, ho creato un utente non root, studente, con una semplice password per questo esperimento.

Accedi come studente utente e apri una sessione terminale. Diamo un'occhiata alla voce per root nel /etc/shadow file, che è dove vengono archiviate le password crittografate.

student@machine1:~$ cat /etc/shadow
cat: /etc/shadow: Permission denied

L'autorizzazione è negata, quindi non possiamo guardare il /etc/shadow file . Questo è comune a tutte le distribuzioni in modo che gli utenti non privilegiati non possano vedere e accedere alle password crittografate. Tale accesso consentirebbe di utilizzare strumenti di hacking comuni per decifrare tali password, quindi non è sicuro consentirlo.

Ora proviamo a su – eseguire il root.

student@machine1:~$ su -
Password:
su: Authentication failure

Questo tentativo di utilizzare il su Il comando per elevare il nostro utente al privilegio di root non riesce perché l'account root non ha password ed è bloccato. Usiamo sudo per guardare il /etc/shadow file.

student@machine1:~$ sudo cat /etc/shadow
[sudo] password for student: <enter the user password>
root:!:17595:0:99999:7:::
<snip>
student:$6$tUB/y2dt$A5ML1UEdcL4tsGMiq3KOwfMkbtk3WecMroKN/:17597:0:99999:7:::
<snip>

Ho troncato i risultati per mostrare solo la voce per gli utenti root e studenti. Ho anche abbreviato la password crittografata in modo che la voce si adatti a una singola riga. I campi sono separati da due punti (: ) e il secondo campo è la password. Nota che il campo della password per root è un "bang", noto nel resto del mondo come punto esclamativo (! ). Ciò indica che l'account è bloccato e che non può essere utilizzato.

Ora, tutto ciò che dobbiamo fare per utilizzare l'account root come amministratori di sistema adeguati è impostare una password per l'account root.

student@machine1:~$ sudo su -
[sudo] password for student: <Enter password for student>
root@machine1:~# passwd root
Enter new UNIX password: <Enter new root password>
Retype new UNIX password: <Re-enter new root password>
passwd: password updated successfully
root@machine1:~#

Ora possiamo accedere direttamente su una console come root o su – direttamente su root invece di dover usare sudo per ogni comando. Ovviamente potremmo semplicemente usare sudo su – ogni volta che vogliamo accedere come root, ma perché preoccuparsi?

Per favore, non fraintendermi. Distribuzioni come Ubuntu e i loro parenti a monte ea valle vanno perfettamente bene e ne ho usati molti nel corso degli anni. Quando utilizzo Ubuntu e le relative distribuzioni, una delle prime cose che faccio è impostare una password di root in modo da poter accedere direttamente come root.

Usi validi per sudo

Il sudo la struttura ha i suoi usi. Il vero intento di sudo consiste nel consentire all'utente root di delegare a uno o due utenti non root l'accesso a uno o due comandi privilegiati specifici di cui hanno bisogno regolarmente. Il ragionamento alla base di questo è quello del pigro sysadmin; consentire agli utenti di accedere a uno o due comandi che richiedono privilegi elevati e che utilizzano costantemente, molte volte al giorno, fa risparmiare al SysAdmin molte richieste da parte degli utenti ed elimina il tempo di attesa che gli utenti altrimenti sperimenterebbero. Ma la maggior parte degli utenti non root non dovrebbe mai avere accesso root completo, solo ai pochi comandi di cui hanno bisogno.

A volte ho bisogno di utenti non root per eseguire programmi che richiedono privilegi di root. In casi come questo, configuro uno o due utenti non root e li autorizzo a eseguire quel singolo comando. Il sudo la struttura mantiene anche un registro dell'ID utente di ciascun utente che lo utilizza. Questo potrebbe permettermi di rintracciare chi ha commesso un errore. Questo è tutto ciò che fa; non è un protettore magico.

Il sudo facility non è mai stata concepita per essere utilizzata come gateway per i comandi emessi da un amministratore di sistema. Non può verificare la validità del comando. Non verifica se l'utente sta facendo qualcosa di stupido. Non protegge il sistema dagli utenti che hanno accesso a tutti i comandi del sistema anche se è attraverso un gateway che li costringe a dire "per favore" - Non è mai stato lo scopo previsto.

"Unix non dice mai per favore."
– Rob Pike

Questa citazione su Unix vale tanto per Linux quanto per Unix. Noi amministratori di sistema accediamo come root quando dobbiamo lavorare come root e ci disconnettiamo dalle nostre sessioni di root quando abbiamo finito. Alcuni giorni rimaniamo connessi come root tutto il giorno, ma lavoriamo sempre come root quando necessario. Non usiamo mai sudo perché ci costringe a digitare più del necessario per eseguire i comandi di cui abbiamo bisogno per svolgere il nostro lavoro. Né Unix né Linux ci chiedono se vogliamo davvero fare qualcosa, cioè non dice "Verifica di volerlo fare".

Sì, non mi piace il modo in cui alcune distribuzioni usano sudo comando. La prossima volta esplorerò alcuni casi d'uso validi per sudo e come configurarlo per questi casi.

[ Vuoi testare le tue capacità di amministratore di sistema? Fai una valutazione delle abilità oggi. ]


Linux
  1. Esempi di comandi sudo in Linux

  2. visudo:comando non trovato

  3. sudoedit:comando non trovato

  4. sudo:comando non trovato

  5. sudo:npm:comando non trovato

sudo:apt-add-repository:comando non trovato?

Come eseguire il comando Sudo senza password

Comando Sudo in Linux

[Risolto] bash:sudo:comando non trovato

Nozioni di base sulla riga di comando di Linux:sudo

Comando Linux ps – 20 esempi di vita reale