Sudo in OpenSuse

Qui vedremo il comando Sudo nel mondo OpenuSuse, ma le cose dette sono valide in tutti i Linux salvo particolarissime eccezioni.

Digressioni

Io impongo nei miei articoli di divenire Root ovvero dare da terminale il comando “su” che fa divenire i padroni totali (ma, attenti, non unici) della macchina.

Questo è in parte derivato dal fatto che io originariamente vengo dal mondo UNIX, come SCO-UNIX, Xenix, ecc.. ma il fattore determinante è che per me è fatica mettere “sudo” davanti i comandi di sistema che vogliono alti privilegi. Altro che mi è antipatico!!!

Nei sistemi Unix e Linux esiste un utente speciale per l’amministrazione del sistema. Questi è l’utente a cui sono assegnati “uid” uguale a 0 e “username root" È anche noto come ‘super-utente’ (dall’inglese ‘superuser’) o amministratore. Nell’utilizzo quotidiano viene chiamato semplicemente ‘root’. Root in Linux ha il controllo completo ed assoluto del sistema, per cui un qualsiasi errore commesso come root può danneggiare il sistema e renderlo inutilizzabile. Inoltre, qualora una persona non autorizzata dovesse diventare root, sarebbero guai assai seri, probabilmente irreparabili.

Svolgere le ‘normali’ attività sul sistema come Root, dato che è troppo elevato il rischio di commettere per caso qualcosa di pericoloso e di corrompere severamente il sistema mischiando i dati utente con i dati di sistema. Molto meglio diventare root solo quando è realmente necessario;

Nel mondo UNIX ci furono diverse proposte, da UNIX System7 (poi non si fece più nulla, siamo ancora al System5) l’utente “KING” (Re) che aveva un accesso monoutente (non potevano esserci più utenti “King” operanti contemporaneamente su una macchina) e la possibilità di fare e fare & disfare tutto mentre il “root” era limitato alle sole operazioni principali di amministrazione, pensate che per cambiare utente Root e King e per cancellare una directory basilare (esempio /bin), come anche per modificare le configurazioni di base bisognava essere King , mentre per installare (esempio operare in /usr), cambiare utenti normali, ecc. bastava Root.

Per questo in Linux come standard, sono nati diversi “utenti” o meglio gruppi utenti specializzati in un preciso ambito, esempio solo per accedere al CDROM, alla rete, ecc..

In Plan9 e poi Inferno (ed altri UNIX) abolirono l’utente Root, con lo specifico utente con massimi privilegi per quella macchina, in effetti per divenire amministratori il nome era il “utente macchina” con i privilegi massimi e non “root” (che proprio non esisteva). Esempio: Sulla macchina identificata con il nome “tilde” con l’utente di massimi privilegi “mao” è [email protected] e quindi per fare un comando di amministratore bisognava inserire come utente (quello con i massimi privilegi) [email protected] e non “root” (che non esiste) e alla password la password di [email protected]. Questo soprattutto perché sono UNIX di Rete e quindi non si lavora su una specifica macchina ma su più macchine contemporaneamente.

Nota: Il Utente Macchina è composto dal nome del proprietario della macchina (amministratore) o un suo operatore e una @ e poi l’identificativo della macchina che di solito per standard ricorda che è Linux. Per collegarsi in rete alla macchina bisogna specificare la macchina ovvero seguendo l’esempio //tilde/ . Logico che un [email protected] è diverso da [email protected], uno è un utente della macchina “tilde” mentre l’altro è un utente della macchina “milde”, ovviamente sono diversissimi.

Si vede nel prompt base e nell’immagine l’utente macchina è [email protected] .

Esisteva anche un problema software, ci sono condizioni per cui temporaneamente un utente normale e/ il suo software deve fare cose amministrative: Qui sorge un grave problema di sicurezza.

Esiste anche il problema di lasciare una connessione “root” aperta: Accedere al login direttamente come root, in particolare quando si ha una connessione di rete attiva per via del pericolo di sniffing e ri-connessione con false credenziali prese da altri.

Se si lascia troppi permessi ad un utente o troppi permessi collegati si può scalare i privilegi di un utente fin fare cose da Root. Questo è un problema di vari OS come Windows! Solo che alla MS se ne fregano dando la colpa agli utenti.

Ecco che si inventa il Sudo, ovvero temporaneamente si diventa amministratore, automaticamente chiude la connessione come Root (per Paranoia è pericoloso tenerlo aperto), si tiene un log (un registro) di cosa combina, può essere limitato in molte operazioni pericolose (un poco come il principio dell’utente “King”), inoltre il Sudo può essere costruito per accessi multipli evitando il problema di sicurezza.

Quando ci si concentra in Linux per uso Desktop, quindi per utenti poco accorti se non utonti (utenti tonti) ecco che il Sudo diviene standard, addirittura (cosa per me orrida) in alcune distro come Ubunto si cancella l’utente Root per lasciare solo Sudo.

Uso di Sudo

Sudo è facile da usare.

Per eseguire un comando che abbisogna di essere Root basta anteporre “sudo” prima del comando; Nell’esecuzione chiederà la password di root e poi avverrà la vera esecuzione SE la password è corretta.

Esempio riavviare il servizio Apache

sudo /etc/rc.d/apache2 restart

invece se si è già root

/etc/rc.d/apache2 restart

Nota: Spesso alcuni comandi/programmi hanno integrato la possibilità di divenire root come per esempio il programma Konsole in:

konsole --type su

 

Amministrare con Sudo

 

Qui iniziano le difficoltà.

Sudo in OpenSuse è installato per impostazione predefinita. Per abilitare l’accesso sudo per un account utente, effettuare le seguenti operazioni su.

sudo /usr/sbin/visudo

ATTENZIONE: Nota che visudo usa come editor VI, quindi Salva ed esci con :wq

Sappiate
che tutte le attività di Sudo vengono registrate (log) in

/var/log/messages

e che si possono fare particolari registrazioni.

Esempio:

Di default, sappiamo che Sudo scrive i log in /var/log/messages.

Nella sezione “Defaults”, aggiungi quanto segue al file /etc/sudoers con

  sudo /usr/sbin/visudo

le righe:

  Defaults loglinelen = 0 # zero disabilita il ritorno a capo nel log.
  Defaults logfile = /var/log/miosudo.log # o qualche altro nome file.

salva ed esci ed esegui ‘sudo -l’ per provare, quindi guarda /var/log/miosudo.log

per controllare.

– Usare un altra password al posto di Root

Qualsiasi utente nel gruppo “utenti” predefinito può eseguire sudo se conosce la password di root, questo può essere pericoloso e quindi è meglio una conferma con la password propria. Ecco come fare:

Trova la voce per %wheel (in /usr/sbin/visudo). Questo è il gruppo whell. Il ‘%’ dice al sudo per abbinare il nome di un gruppo in /etc/groups. Rimuovi il simbolo (#) di commento dalla linea.

%wheel ALL=(ALL) ALL

Aggiungi il nome utente (nell’esempio username) desiderato al gruppo wheel.

sudo /usr/sbin/usermod -G wheel username

Modifica di nuovo il file sudoers. Questa volta rimuovi l’abilità per ogni utente di eseguire sudo. Commenta queste linee (con il simbolo #), salva ed esci.

#Defaults targetpw # richiede la password dell'utente di destinazione, ovvero root

#%users ALL=(ALL) ALL # ATTENZIONE! Utilizzalo solo insieme a "Defaults targetpw"!

Ora quando si esegue sudo, utilizzare la password di login del nome utente invece della password di root.

-Cambiare editor di base

Come detto visudo usa VI come editor di base, ma potete addizionare altri editor.

quando si usa GNOME

  EDITOR = gedit gnomesu visudo

o quando usi KDE

  EDITOR = kate kdesu visudo

-Esecuzione di applicazioni con permessi di root in X

Se si desidera eseguire programmi XWindows come Kate per la modifica, è consigliabile utilizzare il metodo consigliato fate “su” in una consolle:

  su -

per diventare l’utente root. Oppure puoi usare i simili comandi “su" , per esempio

  xdg-su -c

. Ma qui si comportano come “su" invece di “sudo" . Le installazioni locali sono eseguibili con sudo modificando con

/usr/sbin/visudo

, aggiungendo la variabile DISPLAY e XAUTHORITY (con intestazione della lingua) nella riga.

  Defaults env_keep = "LANG ..."

Inoltre, il server X deve essere impostato per consentire l’accesso per gli altri utenti con il programma xhost, consultare la manpage per xhost . Tutto ciò riduce il livello di sicurezza per la macchina, bisogna essere consapevoli di questo.

Per comodità, è possibile modificare /etc/sudoers se si eseguono frequentemente programmi con interfaccia grafica dalla console (nell’esempio l’editor grafico Gedit e l’utente “joe”) per poterlo fare con sudo . I passi da seguire sono i seguenti:

  • Apri il file /etc/sudoers come hai imparato prima.
  • Aggiungi EDITOR VISUAL DISPLAY
    XAUTHORITY
    alla riga Defaults env_keep
    =
    (all’interno delle virgolette).
  • Aggiungi la riga Defaults editor =
    "/usr/bin/gedit:/usr/bin/joe"
  • Aggiungi [ $DISPLAY ] &&
    export VISUAL="gedit" || export EDITOR="joe"
    [ $DISPLAY ] && export VISUAL="gedit"
    || export EDITOR="joe"
    nel nostro file ~/.bashrc ( ~ è una breve forma di riferimento alla nostra directory utente), cambiando gedit nell’editor grafico desiderato.

Logicamente se non usate Gedit come editor (esempio kwrite) modificate cambiando il nome.

Uso di Yast

 

Nota: Estratto da http://www.susegeek.com/security/how-to-configure-sudo-and-delegate-authority-in-opensuse/

Negli esempi si usa Yast2 e spiega come usarlo con un esempio, ovvero far eseguire yast con un suo sudo particolare ovvero di non chiedervi la password dandovi solo per yast l’accesso di root in automatico. Ovvero delegare l’autorizzazione in openSUSE.

 

Avvia lo Strumento di configurazione di Sudo

Dal menu Computer, fare clic su YaST. Immettere la password di root quando richiesto. Fai clic su “Sicurezza e utenti” nel riquadro di sinistra. Questo dovrebbe avviare lo strumento “configurazione sudo”.

1. Crea alias utente

Un alias utente è una mappatura “variabile” per un utente. Anche se questo non è obbligatorio, questo articolo poi lo renderà facile da capire. Questo verrà in seguito utilizzato in una o più regole sudo.

1. Nel riquadro sinistro dello strumento di configurazione di Sudo, selezionare ” Alias ​​utente ” e quindi ” Aggiungi ” nel riquadro destro.

2. Immettere un “Nome alias” (non deve esistere già), quindi selezionare l’utente da ” Utenti locali e di sistema ” e fare clic su ” Aggiungi ” e infine su OK.

Questo aggiunge un alias utente.

2. Crea Alias ​​di comando

Un alias di comando è una variabile che associa a un comando come in Alias ​​utente. Questo verrà in seguito utilizzato in una o più regole sudo.

1. Nel riquadro di sinistra, selezionare ” Alias ​​di comando ” e quindi ” Aggiungi ” nel riquadro di destra.

2. Immettere un ” Nome alias ” quindi fare clic su ” Aggiungi ” in ” Nomi comandi o directory in alias

3. Immettere il comando con il percorso completo o utilizzare il pulsante Sfoglia. Se non sei sicuro del percorso e conosci il comando, apri semplicemente una finestra di terminale ed esegui il comando which come segue (alcuni percorsi di comando potrebbero non essere disponibili in un utente normale come /sbin e quindi è meglio fare “su” per root e eseguire il comando.

opensuse: ~ # usa yast2 
 /sbin/yast2

Facoltativamente, puoi anche aggiungere dei parametri con i quali è consentito eseguire il comando. La mancata immissione dei parametri consentirà all’utente di eseguire il comando con tutti i parametri consentiti. Fare clic su OK e quindi OK

Questo aggiunge l’Alias ​​di comando.

3. Crea Alias ​​RunAs

Un alias RunAs è una variabile che associa un ruolo utente che verrà assegnato all’utente che esegue sudo. L’UID e GUID effettivi dell’utente diventa quello degli utenti RunAs. Questo verrà in seguito utilizzato in una o più regole sudo.

1. Nel riquadro di sinistra, selezionare ” Alias ​​RunAs ” e quindi ” Aggiungi ” nel riquadro destro.

2. Immettere un ” Nome alias “, quindi selezionare l’utente da ” Utenti locali e di sistema ” e fare clic su ” Aggiungi ” e infine su OK .

Questo aggiunge un alias RunAs.

 

Regole per sudo

Ora, abbiamo tutti gli oggetti sul posto con solo un ultimo passaggio da completare. Questo è per assemblare questi in “togethor” = Questo è ciò che le regole fanno per sudo.

1. Nel riquadro di sinistra selezionare ” Regole per sudo ” e fare clic su Aggiungi nel riquadro destro.

2. Seleziona Utente o Gruppi o Alias ​​utente dalla casella di riepilogo. Selezioniamo l’alias utente che abbiamo creato in precedenza.

3. Seleziona ” TUTTI ” sotto ” Host o Host Alias

4. Selezionare selezionare “Utente” o meglio “Alias ​​RunAs ” che abbiamo creato precedentemente per ” RunAs o RunAs Alias “. Selezionare ” Nessuna password ” per non richiedere l’autenticazione della password.

5. In ” Command to Run “, fare clic su Aggiungi e selezionare ” Alias ​​di comando ” creato in precedenza e fare clic su OK. e OK.

6. Fare clic su Fine. Questo completa la configurazione di sudo.

Per verificare se funziona OK. Da una finestra del terminale(come utente normale), esegui il comando che hai impostato come prefisso con sudo come segue:

sudo /sbin/yast2

Sudo è molto più personalizzabile e può creare tante regole con lo stesso utente, comando, alias RunAs, ecc.

Ma come GUI?

Volendo esistono due comandi per avere un interfaccia grafica per l’inserimento password

gksu
gksudo
# e
kdesu
kdesudo

I primi (gksu e gksudo) è di Gnome/Mate e i secondi (kdesu / kdesudo) è di KDE/TDE. Quindi li trovate o meno secondo che desktop avete caricato.

Nota: Ultimamente è sparito kdesudo.

Gksu e kdesu è un vero “su” (salvo modificarlo da impostazioni come sudo) mentre gksudo e kdesu è un “sudo”.

Noterete che questo non è comodo, quindi pian piano si sostituisce con dbus-launch, che non è nato per lanciare programmi in “su” ma sentendo un desktop in azione lancia l’interfaccia grafica di questo per l’inserimento password.

Esempio

dbus-launch dolphin -qwindowtitle "%c" "%u"

Dopo avervi chiesto la password in modo grafico lancia il programma Dolphin in modalità root.

Il “-qwindowtitle”  imposta il titolo della prima finestra con %c e %u. Il %c e %u definiscono il nome programma lanciato e i suoi parametri.

Un altro è xdg-su gestito da Xorg, esempio:

xdg-su -c kconsole

Dopo avervi chiesto la password in modo grafico lancia il programma Konsole in modalità root. Il bello è che restituisce sempre un codice d’errore all’uscita.

Noterete che se eseguite l’esempio vi risponderà:

Invalid Context= "panel" line for icon theme:

Perchè non avete passato la  “-qwindowtitle” come nell’esempio dbus che gli dice cosa mettere nel pannello.

 

Conclusioni

 

Spero che sia tutto e anzi vi stuzzico l’appetito su Sudo, se volete sapere altro scrivetemelo!

 

Ciaooooooooooooooooooooooo

 

Precedente Come beccarsi i virus Successivo OpenSuse e la lettura delle impronte