venerdì, aprile 13, 2007

Sudo anche con Debian ... :)

Definizione di sudo presa dalla pagina man:

"sudo allows a permitted user to execute a command as the superuser or another user, as specified in the sudoers file."

Traduzione:
"sudo consente agli utenti che hanno i permessi, di eseguire un comando come superuser (utente root) o un altro utente, come specificato nel file sudoers."


Io ho iniziato a conoscere ed usare sudo grazie ad ubuntu dove l'utente root è disabilitato per default.
Inizialmente, visto che strausavo l'utente root nella shell, ho odiato il non poter eseguire il mio "amato" su - .
Poi, pian piano, ho apprezzato il suo uso e ho iniziato ad usarlo anche in altre distribuzioni.
Apprezzo in particolare il fatto che mentre eseguo operazioni dal mio utente (tipo compilare un programma:
./configure && make
), posso in qualsiasi momento "suadare" (tipo per lanciare un bel
make install
).

Nella nuovissima Debian Etch installando sudo, questo non è configurato per essere usato dal propio utente.

Per attivarlo basta eseguire come utente root:
visudo
ed inserire in fondo al file la stringa:
daniele ALL=(ALL) ALL
sostituendo il vostro nome utente al posto di "daniele" che è il mio utente.

Ora siete anche voi liberi di sudare!

In pratica la sintassi per eseguire un comando come utente root è:
sudo comando-xyz --opzione_del_comando-xyz
Vi verrà chiesta una password che non è la password di root, ma la password del vostro utente.
Questa password rimane memorizzata per 5 minuti. Non dovete così ridigitarla ogni volta.

Se si ha nostalgia dell'amata schell di root basta dare questo comando:
sudo -s

Per eseguire comandi multipli come utente root invece bisogna dare:
sudo sh -c "comando_1; comando_2 && comando_3"
oppure:
su -c "comando_1; comando_2 && comando_3"

Quest'ultimo metodo può essere usato al posto di sudo nelle mie guide per debian.

Bene, ora è rimasto solamente da chiedersi, sudo è sicuro?
Semplicemente Si!

Se usato in maniera inteligiente, e disattivando l'utente root (
sudo passwd -l root
), chiunque voglia eseguire un comando da superuser non deve più semplicemente indovinare la password di root, ma deve indovinare sia la vostra password, sia il vostro nome utente.


Per approfondimenti:
l'Home Page di sudo
la documentazione dal wiki di Ubuntu
post su PollyCoke


Mi raccomando, appena sudato, copritevi! Altrimenti vi ammalate e non vi voglio sulla coscienza ...

4 commenti:

Anonimo ha detto...

ma per indovinare lo username non basta un "ls /home" ?

daniele ha detto...

Per fare un "ls /home" bisogna essersi loggati con un qualche utente.
Mentre è scontato che su un sistema Linux c'è l'utente root.

La differenza sta qui.

Anonimo ha detto...

Mah, l'uso di sudo in quel modo non l'ho mai capito...E' stata la mia grande delusione quando ho provato per la prima volta Ubuntu. Non ha senso, va a minare le basi di unix.
E' scomodo perchè ogni volta devi aggiungere al tuo comando una parola in più (sudo) e perchè devi scrivere la tua password: mi tengo aperto un terminale con da root e vivo felice.
Sinceramente non capisco l'utilità: mi sembra una ulteriore complicazione inutile.
Sulla sicurezza: la conoscenza dello username può trapelare in tanti modi (ad es IRC, mail mandate da quell'host ecc..). Per "assicurare" root basta impedire il login diretto come root: questa mi sembra la strada piu' sicura. Bolccarsi dietro 2 password: quella utente+quella di root. Senza una delle due non si fa nulla...

daniele ha detto...

@Anonimo
Anche io inizialmente ero deluso dell'approccio su sull'utente root di ubuntu con l'uso di sudo. Poi però pian piano mi ci sono abituato ed ho iniziato ad apprezzarlo.
Comunque anche sudo è tra le basi di Unix! Non la mica inventato Ubuntu!
Da wikipedia: "sudo was originally written by Bob Coggeshall and Cliff Spencer around 1980".
Io ne ho sempre sentito parlare anche prima dell'era Ubuntu.
Io personalmente con sudo ho imparato ad non usare sempre e comunque root per fare qualsiasi cosa ed a scrivere sudo una volta ogni 100 comandi... :)
Poi quando serve: sudo -s ed ho la shell di root.
Anche l'approccio che hai indicato per cui root non può loggarsi direttamente è buono e ti ringrazio perchè mi hai appena dato uno spunto per approfondire (P.S. anche sudo può essere configurato per richiedere la password di root invece della password utente).
Ma comunque sicuramente resterò fedele a sudo ... per me è troppo comodo :)