## page was renamed from andreas-xavier/ProvaPrivilegiDiAmministrazioneSudo ## docs intrepid #format wiki #LANGUAGE it <
> <> <> = Introduzione = '''sudo''' ('''''s'''uper'''u'''ser '''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 che viene con esso avviato. = Utilizzo = 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/modules }}} L'utente '''target''' non deve essere necessariamente l'amministratore, ma può essere un qualsiasi utente del sistema. Per scegliere l'utente '''target''', usare l'opzione '''-u''': {{{ sudo -u target comando }}} Una volta digitato il comando, il sistema chiederà la password dell'utente attuale e non la password dell'utente '''target''' (a meno che non si configuri '''sudo''' in modo diverso). La password viene chiesta la prima volta e memorizzata per un certo lasso di tempo, quindi è possibile usare il comando '''sudo''' più volte consecutive senza dover inserire ogni volta la password. {{{#!wiki note Per motivi di sicurezza il terminale non mostra nessun carattere di inserimento della password. A differenza delle richieste grafiche, nel terminale non vengono mostrati nemmeno gli asterischi di mascheramento. Digitare correttamente la password e premere '''Invio'''.}}} Con '''sudo''' l'amministratore del sistema può assegnare privilegi particolari a qualsiasi utente, definire quali comandi far eseguire e quali no, avere il log di tutte le operazioni effettuate e ricevere via email informazioni su tentativi di accesso non autorizzati. <> = Parametri alla riga di comando = '''sudo''' può essere lanciato con una serie di parametri che ne modificano il funzionamento temporaneamente. Quelli che seguono sono una parte delle opzioni disponibili: ||'''Opzione''' ||'''Risultato''' || ||<:>'''-H''' || imposta la variabile di sistema «'''$HOME'''» con la cartella '''Home''' dell'utente '''target''', cioè quello che eseguirà il comando, normalmente '''root'''; in maniera predefinita '''sudo''' lascia inalterata la «'''$HOME'''» || ||<:>'''-b''' || esegue il comando in background || ||<:>'''-k''' || serve a eliminare il salvataggio della password per l'utente; al successivo utilizzo di '''sudo''' verrà nuovamente richiesta la password || ||<:> '''-l''' || visualizza i comandi che si è autorizzati a usare o non usare || ||<:>'''-i''' || consente di entrare nella [[AmministrazioneSistema/Terminale|riga di comando]] come utente '''target''' simulando l'accesso per il nuovo utente e impostando le variabili d'ambiente; in pratica consente all'utente di ''diventare'' '''root''' e quindi non dover utilizzare '''sudo''' ad ogni successivo comando || ||<:>'''-s''' || consente di entrare nella [[AmministrazioneSistema/Terminale|riga di comando]] come utente '''target'''; questa opzione è quasi identica a '''-i''', ma non imposta le variabili d'ambiente dell'utente '''target''' || = Configurazione = È possibile modificare la configurazione di '''sudo''' con il seguente comando: {{{ sudo visudo }}} Il file di configurazione `/etc/sudoers` è composto da tre sezioni: * impostazione degli [[#definizionealias|alias]]; * impostazione delle [[#opzionidefault|opzioni di default]]; * impostazione delle [[#autorizzazioni|autorizzazioni]]. <> == Impostazione degli alias == In questa sezione vengono definiti degli ''alias'' in modo da potersi riferire, successivamente, in modo più semplice alle informazioni per la configurazione dei privilegi utente. Le istruzioni di definizione degli alias seguono la forma: {{{ tipo_alias NOME_ALIAS = voce1, voce2, voce3 ... voceX }}} Dove «tipo_alias» può essere: * «User_Alias»: per definire l'alias per un elenco di utenti; * «Cmnd_Alias»: per definire l'alias per un elenco di comandi; * «Host_Alias»: per definire l'alias per un elenco di host. Quelli che seguono sono degli esempi: * Definire un gruppo di utenti a cui si potrà far riferimento con la dicitura «AMMINISTRATORI»{{{ User_Alias AMMINISTRATORI = utente1, utente2, utente3 }}} * Definire un gruppo di comandi:{{{ Cmnd_Alias UTILITY = /sbin/comando1, /usr/bin/comando2, etc.. }}} * Definire un gruppo di host:{{{ Host_Alias MACCHINE = macchina1, macchina2, macchina3 }}} <> == Impostazione delle opzioni predefinite == È possibile configurare il comportamento standard di '''sudo''' impostando una serie di parametri con la parola chiave «Defaults». Ci sono decine di parametri configurabili con '''Defaults''', i principali sono i seguenti: * «mail_always»: invia una mail all'utente configurato con l'opzione '''mailto''' per ogni comando eseguito con '''sudo'''; * «mail_badpass»: invia una mail quando un utente inserisce una password sbagliata; * «mail_no_user»: invia una mail quando l'utente corrente non è tra quelli definiti in `/etc/sudoers`; * «rootpw»: indica a '''sudo''' di richiedere la password di '''root''' invece della password utente per l'autenticazione; * «targetpw»: indica a '''sudo''' di richiedere la password di dell'utente '''target''' invece della password utente per l'autenticazione; * «passwd_timeout»: imposta il tempo in minuti dopo il quale '''sudo''' dimentica la password inserita dall'utente; * «timestamp_timeout»: imposta il tempo in minuti dopo il quale verrà richiesta nuovamente la password. Se impostato a 0 ad ogni comando verrà richiesta la password; * «mailsub»: imposta l'oggetto delle mail inviate; il messaggio di default è il seguente: {{{ *** SECURITY information for %h *** }}} È possibile usare il parametro «%h» come nome host; * «mailto»: imposta l'indirizzo email dell'utente al quale inoltrare le mail di segnalazione; * «logfile»: imposta il [[AmministrazioneSistema/LogDiSistema|file di log]] per il logging delle operazioni. <> == Impostazione delle autorizzazioni == I comandi per l'impostazione dei privilegi definiscono quali utenti possono utilizzare quali comandi, da quali host e in che modo. La forma generale è la seguente: {{{ elenco_utenti elenco_host = (user_target) elenco_comandi }}} * «elenco_utenti»: può essere un utente, un alias definito in precedenza o anche un gruppo di sistema definito in `/etc/group` precedendo il nome del gruppo con il simbolo percentuale «%». Possono essere inserite varie voci, separando ciascuna con una virgola «,»; * «elenco_host»: i nomi delle macchine da cui è consentito utilizzare '''sudo'''. Si può usare anche un alias definito per gli host. Possono essere inserite varie voci, separando ciascuna con una virgola «,». Con «ALL» si consente l'uso di '''sudo''' da qualsiasi host; * «(user_target)»: è un parametro opzionale con cui si dice a '''sudo''' di eseguire i comandi come utente '''user_target''' invece che '''root'''; * «elenco_comandi»: l'elenco dei comandi a cui si da autorizzazione; si può usare anche un alias definito per i comandi. Possono essere inserite varie voci, separando ciascuna con una virgola «,». Con «ALL» si consente l'esecuzione di qualsiasi comando. Inoltre, si può anche inserire il nome di una directory, terminando il percorso con uno slash «/» per indicare tutti i comandi contenuti in quella directory; Con la parola chiave «NOPASSWD» è possibile può indicare a '''sudo''' che per i comandi definiti successivamente non è richiesto l'inserimento della password. Inoltre, si può negare l'esecuzione di un comando, o un gruppo di comandi, inserendo prima di «elenco_comandi» un punto esclamativo «!». Questa modalità è comunque sconsigliata in quanto è sempre possibile aggirare la negazione rinominando il comando. Quelli che seguono sono degli esempi: * Assegnare all'utente '''pippo''' qualsiasi privilegio:{{{ pippo ALL = (ALL) ALL }}} * Assegnare agli utenti raggruppati in «AMMINISTRATORI» i privilegi per eseguire i comandi raggruppati in «UTILITY» da qualunque host:{{{ AMMINISTRATORI ALL = UTILITY }}} * Consentire a '''utente1''' e '''utente2''', se collegati sulla '''macchina1''', di eseguire senza inserire la password il '''comando1''' ed i comandi contenuti in {{{/directory2}}}, escludendo '''/directory2/comando2''' all'utente '''utente2''':{{{ utente1,utente2 macchina1 = (utente2) NOPASSWD: /directory1/comando1, /directory2/, !/directory2/comando2 }}} <> = Abilitare l'accesso come utente root = Per impostazione predefinita in '''Ubuntu''' l'accesso come utente '''root''' è disabilitato per motivi di sicurezza. Qualora si debba usare l'utente root in maniera occasionale, è possibile utilizzarlo temporaneamente tramite il comando:{{{ sudo su }}} Se strettamente necessario, è comunque possibile abilitare l'accesso come utente '''root''' assegnandogli una password con il seguente comando:{{{ sudo passwd root }}} La procedura richiede di inserire prima la password relativa a '''sudo''', quindi quella per l'utente '''root''' e la successiva conferma. Per disabilitare l'accesso come amministratore si può usare il seguente comando:{{{ sudo passwd -l root }}} In questo modo l'accesso come utente '''root''' risulterà nuovamente bloccato. Per rimuovere la password assegnata all'utente root usare il seguente comando:{{{ sudo passwd -d root }}} In questo modo l'accesso come utente '''root''' tramite la sua password risulterà impossibile. = Risoluzione problemi = == Ripristino permessi Home utente == Con l'utilizzo del semplice comando '''sudo''', senza variabili d'ambiente, potrebbe capitare che alcuni file nella propria '''Home''' diventino inavvertitamente proprietà di '''root'''. Per risolvere consultare questa [[AmministrazioneSistema/PrivilegiDiAmministrazione/ApplicazioniGrafiche#Ripristino_permessi_Home_utente|guida]]. == Ridirezione dell'output == Redirigere l'output di alcuni comandi eseguiti con '''sudo''' può portare nuovi utenti a strane conclusioni (ad esempio '''sudo ls > /root/file'''). Per raggirare tali problemi si può utilizzare '''sudo sh -c 'ls > /root/file'''', utilizzando [[http://www.greenend.org.uk/rjk/2001/06/adverbio.html|Adverbio]] o semplicemente utilizzando '''sudo -s''' per aprire un terminale in con i privilegi di amministrazione e operare all'interno di esso. = Ulteriori risorse = * [[http://www.sudo.ws/|Sito ufficiale del progetto]] * [[https://wiki.debian.org/it/sudo|sudo su wiki di Debian]] * [[http://guide.debianizzati.org/index.php/Guida_a_Sudo|Guida a Sudo]] (sito Debianizzati) * [[http://guide.debianizzati.org/index.php/Guida_a_Sudo|Configurare Sudo]] (sito Debianizzati) * [[https://wiki.archlinux.org/index.php/Sudo_(Italiano)|sudo su wiki Arch]] ---- CategorySicurezza CategoryAmministrazione