Internet è il postino dei nostri tempi che nessun cane azzannerà.
Con questo articolo finalmente termineremo le operazioni preliminari installando e configurando sudo. L' utente/dio root deve essere usato il meno possibile, sia per aumentare la sicurezza del nostro server, sia per ridurre al minimo le possibilità di combinare malanni involontari e, per la legge di Murphy, spesso irreversibili. Con il prossimo articolo si comincerà a fare sul serio :)
Nei sistemi operativi Unix/Linux c'è un utente particolare, detto super utente e contraddistinto dall'avere un UID (User ID) uguale a 0 e nome utente root, che ha totale accesso al sistema senza nessuna restrizione, è l' amministratore del sistema.
Nella maggior parte dei sistemi GNU/Linux, l'amministratore del computer non usa l'utente amministratore (per motivi di sicurezza) ma usa un utente normale per svolgere il lavoro quotidiano. Quando ha la necessità di svolgere mansioni di amministrazione apre un terminale e avvia una sessione come utente root, oppure se si trova già in un terminale come utente normale usa il comando su per diventare utente root.
Io preferisco usare un approccio diverso per svolgere mansioni amministrative, basato sull'utilizzo del comando sudo. Qui esistono diverse scuole di pensiero in merito alla sicurezza di sudo rispetto a su.
In ognuno dei due modelli, sudo e su, ci sono vantaggi e svantaggi.
Siccome sudo costringe l'esecuzione controllata di singoli comandi ha questi vantaggi:
Di contro, se qualcuno scopre la password di un utente abilitato all'utilizzo di sudo come root in effetti può ottenere accesso come root. Nel caso di utilizzo di sudo bisogna prestare una maggiore attenzione alla scelta della password utente.
I sostenitori del modello su, cioè account di root abilitato e utilizzo di una shell di root per compiti amministrativi, sostengono che su sia più sicuro in quanto il livello di root si ottiene dopo l'inserimento di due password, la password utente e la password di root.
D'altra parte, chi cerca di entrare in un sistema ha la necessità di scoprire due cose, il nome utente e la password. Con l'account di root abilitato, una delle due è già nota, serve solo scoprire la password. Con sudo si devono scoprire entrambe (nome utente e password).
Quando in un sistema alcuni compiti amministrativi sono assegnati a vari utenti, l'utilizzo di sudo evita di dover dare la password di root a più utenti. L'amministratore può assegnare a qualsiasi utente, temporaneamente, privilegi particolari, eliminandoli o limitandoli quando non vi è più necessità.
sudo (superuser do) consente di eseguire un comando come se si fosse un altro utente. Effettua una specie di sostituzione, previa autorizzazione, tra l'utente attuale (colui che esegue il comando sudo) e l'utente target (colui che esegue l'effettivo comando). Mentre con il comando su si cambia utente fino al termine della sessione del terminale, sudo assegna i privilegi dell'utente target al solo processo (e ai suoi processi figli) che viene con esso avviato.
Per eseguire dei comandi con privilegi d'amministrazione è sufficiente digitare sudo e successivamente il comando che si desidera eseguire come utente root, come nel seguente esempio:
sudo nano /etc/rc.conf
Con sudo l'amministratore del sistema può assegnare privilegi particolari a qualsiasi utente, definire quali comandi far eseguire e quali no e avere il log (/var/log/auth.log) di tutte le operazioni effettuate su tentativi di accesso non autorizzati.
A me piacciono i sistemi "rootless" , cioè privi dell' utente "root" che tanti problemi di sicurezza può causare. Quindi creiamo un utente amministrativo con una solida password. In seguito a questo utente assegneremo privilegi particolari per poter disabilitare root e amministrare il sistema.
Siccome sono a corto di idee chiamo questo utente "admin"
adduser admin
Per installare sudo :
pacman -S sudo
Per abilitare il nostro utente "admin" a svolgere i compiti amministrativi utilizzando sudo devo aggiungerlo al file /etc/sudoers. Per editare questo file devo utilizzare il comando :
visudo
admin ALL=(ALL) SETENV: ALL
Ora l'utente "admin" dovrebbe essere abilitato al comando "sudo". Prima di proseguire provate a loggarvi sulla console con l'utente admin e poi provate, ad esempio:
sudo nano /etc/rc.conf
Quando siete sicuri che admin abbia i privilegi di amministrazione attraverso sudo possiamo disabilitare l'utente root:
sudo passwd -l root
sudo passwd root
Per terminare questa sezione preliminare non dimenticate di :
127.0.0.1 localhost archi
search mede.it
nameserver xxx.xxx.xxx.xxx
Bene. Terminate le operazioni prelimiari non abbiamo ancora fatto niente :D.
Ma chi ben inizia ...
La prossima volta entreremo nel vivo.
solo un appunto inutile:
sono abbastanza sicuro che sudo significhi "Substitute User DO", come si può intuire dalle man pages di SUDO e di SU, e se si considera che in realtà SUDO (così come SU) permette di eseguire comandi come un utente qualsiasi tramite l'opzione -u [se non specificato è come se passasse l'opzione "-u root"].
Per il resto belli questi tuoi post sulla creazione di un serverino con Arch...
ciao
Grazie dell'appunto, ma come leggo su [http://en.wikipedia.org/wiki/Sudo wikipedia] la definizione che ho dato è corretta. A meno che non si sbagli anche wikipedia :)
E' corretta la definizione del parametro -u, ma non volevo scrivere una guida completa al comando // sudo //.
Naturalmente, inutile dirlo, apprezzo ogni appunto e correzione, specie nei prossimi post decisamente più impegnativi.
E se in un momento di follia l'utente admin facesse:
sudo visudo
cancellando la riga che gli permetteva di accedere come sudo? :P
E se invece provasse con un più semplice
sudo rm -rf /
O dasse una martellata con mazzuolo da kg 5 sul notebook ?
:D
La mia soluzione era un pò più innocua... alla tua non c'è rimedio... soprattutto la seconda!!! :P