PDA

View Full Version : Impedire ai sudoers di eseguire un comando


zeromega
19-11-2009, 13:46
Salve.
Per esigenze di sicurezza, devo impedire l'accesso al sistema all'utente root; per svolgere le operazioni amministrative ho creato un certo numero di utenti che fanno parte del gruppo
amministratori
Nel file
/etc/sudoers
ho aggiunto la riga
%amministratori ALL=(ALL) ALL
In questo modo però non riesco ad evitare che un utente esegua
sudo su -
oppure
sudo su - root
Vorrei però fosse possibile eseguire tutti gli altri comandi, compreso
sudo su - pippo
o sudo vi /etc/resolv.conf
Avete suggerimenti?
Grazie.

ozeta
19-11-2009, 16:29
mm..semplicemente eliminare l'utente root si può fare? :stordita:

zeromega
19-11-2009, 20:21
Purtroppo no, o almeno è la soluzione che vorrei evitare.

ozeta
19-11-2009, 20:27
e perché mai? se hai altri utenti admin... in fondo ubuntu viene rilasciata senza utente root :p

kurts
26-11-2009, 20:09
potresti provare a modificare il sudoers in questo modo:

nome_utente ALL=NOPASSWD: /sbin/comando1, /sbin/comando2, /sbin/comando3

voglio dire, se l'utente deve poter spegnere/riavviare il computer metterai /sbin/shutdown /sbin/reboot
eventualmente elimina NOPASSWD se vuoi che venga inserita una password per la conferma

si, è probabilmente una cosa lunga e noiosa specificare tutti i comandi che vuoi permettere ma non mi viene in mente altro
inoltre in questo modo, essendo il file resolv.conf di proprietà di root impedisci che gli utenti in questione lo modifichino

zeromega
27-11-2009, 08:31
Ho provato, ma l'obbiettivo è che un certo numero di utenti possano fare tutto (compreso su - nomeutente) ma non switchare a root; praticamente ho una lista di utenti che saranno analoghi a root, ma nessuno deve impersonare root stesso.

meden
27-11-2009, 15:34
In modo predefinito sudo non consente l'esecuzione di alcunché: tutto deve essere esplicitamente consentito nel file /etc/sudoers. Perciò evidentemente gli utenti della tua macchina fanno parte di un qualche gruppo che in sudoers ha tutti i privilegi. Per esempio in Ubuntu questo gruppo è admin tant'è che in sudoers troverai le righe:

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

Perciò la creazione di un gruppo "amministratori" in questo caso è inutile poiché ridondante.

Ricorda che sudoers va modificato con sudoedit, dal momento che è necessario che la sintassi sia corretta, altrimenti non funziona. In Ubuntu questo è pericoloso, poiché root è disabilitato e se sudoers è corrotto non c'è modo di amministrare il sistema (bisogna andare in modalità di ripristino).

Per approfondimenti, ci sono le manpages di sudo e sudoers e le pagine di ubuntu-wiki

zeromega
28-11-2009, 05:07
Il sistema su cui sto lavorando è una Red Hat Enterprise Linux 4.6, e in /etc/sudoers non sono preimpostate regole per i gruppi; analogamente ad Ubuntu il file deve essere modificato con un comando specifico: visudo.
Purtroppo se imposto una regola come
%admin ALL=(ALL) ALL
sembra che abbia la precedenza sulle altre che aggiungo per escludere i file.

Per inciso, Ubuntu ha l'utente root (seppure sia ben occultato); basta eseguire:
sudo su -
passwd <password di root>
per renderlo completamente operativo.

meden
28-11-2009, 11:32
Il sistema su cui sto lavorando è una Red Hat Enterprise Linux 4.6, e in /etc/sudoers non sono preimpostate regole per i gruppi; analogamente ad Ubuntu il file deve essere modificato con un comando specifico: visudo.
In effetti sudoedit e visudo sono sostanzialmente equivalenti e fanno parte di sudo, quindi sono indipendenti dalla distribuzione. Se sudoers è vuoto, è davvero strano che un qualsivoglia utente possa eseguire comandi con sudo: ripeto, sudo controlla le autorizzazioni (esplicite) in sudoers prima di consentire l'esecuzione come altro utente (in modo predefinito root).


Purtroppo se imposto una regola come
%admin ALL=(ALL) ALL
sembra che abbia la precedenza sulle altre che aggiungo per escludere i file.

Questo è vero (ed è il comportamento corretto) se l'utente che esegue sudo fa parte del gruppo admin. Quello che penso tu debba fare è lasciare nel gruppo admin esclusivamente gli utenti che devono poter usare sudo, togliendone tutti gli altri.
In ogni caso, è sconsigliabile usare sudo per negare l'esecuzione di un comando: per un utente malizioso sarebbe sufficiente eseguire cp comandonegato pippo e poi eseguire pippo. Probabilmente una soluzione migliore è usare le ACL.


Per inciso, Ubuntu ha l'utente root (seppure sia ben occultato); basta eseguire:
sudo su -
passwd <password di root>
per renderlo completamente operativo.

Infatti: è ovvio che l'utente root esiste, solo che è disabilitato dal momento che non ha password e il login senza password non gli è concesso. Infatti per renderlo operativo quello che si fa è assegnargli una password (come tu stesso mostri).