Newsgroup: it.comp.os.linux.iniziare
Titolo: Chiarimenti su sudo e relativo gruppo

Salve,
 
dovrei impostare degli script in modo che l'utente non debba digitare la 
password di root e quindi c'è sudo o kdesu usando come desktop KDE.
 
Ho creato il mio script di test, preventivamente lo eseguo la prima 
volta da console con sudo (altrimenti da desktop non funziona!), su 
desktop creo il collegamento anteponendo allo script kdesu e... mi 
chiede comunque e sempre la password dell'utente mentre io vorrei che 
non la chiedesse.
 
Poi se ho ben capito avendo inserito l'utente normale nel gruppo sudo 
l'utente normale può con la sua password fare tutto come se fosse 
root... o forse mi sbaglio?
 
Saluti.
^Bart

Il 10/04/20 21:18, ^Bart ha scritto:

Devi editare come root il file /etc/sudoers col comando visudo, la linea 
relativa all'utente <user> dovra' contenere l'opzione:
 
  NOPASSWD:<lista di comandi consentiti senza password>
 
oppure, per consentire tutti i comandi:
 
NOPASSWD:ALL
 
Esempio:
 
<user>	ALL = (ALL) NOPASSWD:ALL
 
angelo
 

 angelo
 
Saluti.
^Bart
 

 quello che fa root!
 
si può fare, nel file sudoers invece di mettere all puoi mettere dei 
programmi specifici.
 

 quello che fa root!
 
Aggiungo a quanti ti è stato detto....
 
Io ho creato il file in /etc/sudoers.d/020_other (uso debian), in cui ho messo:
 
mio-utente ALL=(ALL) NOPASSWD:/sbin/iptables -n -L
mio-utente ALL=(ALL) NOPASSWD:/usr/bin/nast -m
mio-utente ALL=(ALL) NOPASSWD:/usr/bin/lsof -i -n -P
    ...eccetera
 
Ove "mio-utente" è l'utente che deve poter eseguire QUEI comandi senza usare la
password.
 
Il file va editato con:      sudo visudo -f /etc/sudoers.d/020_other
Una volta creato il file sei a posto.
 
Attenzione però che i comandi devono essere UGUALI a come sono scritti,
attenzione agli spazi e all'ordine delle opzioni.
 
E se, per esempio, "/sbin/iptables -n -L" viene accettato, un comando come
"/sbin/iptables -n -L INPUT", chiede la password!
 
Devo capire se sia possibile estendere "/sbin/iptables -n -L" in
"/sbin/iptables -n -L INPUT" et similia senza bisogno di inserire la password
(mi servirebbe in uno script).
 
 
-- 
--- PippEd
 * Origin: When the going gets tough, the tough get an UZI! (2:332/404.69)

 
 
Non importa in quale gruppo viene inserito l'utente (a proposito, io non 
ho un gruppo sudo ma root) ma che abbia l'opzione NOPASSWD: con la lista 
dei comandi eseguibili con privilegi di root.
Cosi' si limitano i privilegi ai soli comandi elencati, per tutti gli 
altri viene richiesta la pw di root.
 
angelo

 quello che fa root!
 
Come ti ha risposto angelo devi abilitare i comandi per l'utente specifico.
<user>	ALL = NOPASSWD: <lista dei comandi>
 
In questo esempio ho abilitato alcuni comandi per accedere ai file di 
log (normalmente di proprietà di root) per l'utente definito per il web 
server.
 
apache	ALL = NOPASSWD: /bin/cat,/bin/zcat,/bin/chown,/bin/chmod,/bin/rm
 
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   < 
http://giovanni.homelinux.net/
 >

 Giovanni
 
Perdona la mia ignoranza ma consentire all'utente apache i comandi chown 
e chmod non significa promuoverlo automaticamente a root?
Sempre nella mia ignoranza io limiterei l'ambito dei suddetti comandi 
solo nelle directory di competenza di apache creando uno script col 
comando limitato alla directory di lavoro e passando come parametro il 
percorso/nomefile, ad esempio:
 
#!/bin/sh
/usr/bin/chown apache /srv/cgi-bin/$1
 
naturalmente limitandone la scrittura a root ed elencarlo tra i 
consentiti in sudoers.
 
angelo

 /usr/bin/chown apache /srv/cgi-bin/$1
 
Naturalmente non consentendo /../ in $1
 
angelo

 e chmod non significa promuoverlo automaticamente a root?
 
Anche il semplice "/bin/cat", se e` per questo.
 
 
In generale, sarebbe meglio evitare che "httpd"
abbia qualunque permesso "speciale".
 
bye,
 
-- 
 
piergiorgio

 server.
 
E non sarebbe meglio, invece, dal
punto di vista della sicurezza.
Fare, di tanto in tanto, una copia
del log leggibile da "httpd", _senza_
dare ad "httpd" i permessi di root?
 
bye,
 
-- 
 
piergiorgio

 consentiti in sudoers.
 
 
Si hai ragione.  Indispensabili sono solo cat e zcat
 
Chown e chmod sono una rimanenza di vecchi test sul mio PC di lavoro.
In effetti sul server non sono abilitati.



Probabilmente ci saranno modi migliori ma per vedere i log in tempo 
reale da web (solo intranet) non ho trovato soluzione più semplice.
 
A differenza di quanto postato i comandi abilitati sono solo cat e zcat.
Gli altri sono da una copia su una altra macchina dove facevo test.


 Si hai ragione.  Indispensabili sono solo cat e zcat
 
a me pare una falla abnorme. un eventuale codice malevolo può esporre il 
contenuto di un qualsiasi file del file system, /etc e /dev inclusi, con 
effetti che stento anche a prevedere.
ma come può venire in mente di mettere apache fra i sudoers?
 

 A differenza di quanto postato i comandi abilitati sono solo cat e zcat.
 
Si, ma anche questi sono pericolosi.
 
Il semplice fatto che i log non siano
leggibili normalmente da tutti, cosi`
come altri file di sistema, dovrebbe
far pensare che abilitare un accesso
esterno a tali file richiede un certo
livello di sicurezza...
 
bye,
 
-- 
 
piergiorgio

 angelo
 
Saluti!
^Bart

 possono eseguire come root!
 
Di piu', oltre a limitare gli utenti "rootabili" puoi anche limitare per 
ciascuno i comandi consentiti.
 
angelo

> Io ho creato il file in /etc/sudoers.d/020_other (uso debian), in cui ho messo:
 
Nel file /etc/sudoers ho:
 
root ALL=(ALL:ALL) ALL
 
%sudo ALL=(ALL:ALL) ALL
 
mio_utente ALL=NOPASSWD:/path/to/my_script
 
Poi non ho capito come dire a sudo di andare a leggere un eventuale file 
in /etc/sudoers.d/mio_utente
 
Come già accennato ho bisogno solo di far partire determinati script 
come root ma così tutti gli altri software che richiedono la password di 
root ora chiedono quella dell'utente... :\
 
^Bart
 

 in /etc/sudoers.d/mio_utente
 
così come il file sudoers principale anche questi vanno editati 
utilizzando visudo: 
 
sudo visudo -f /etc/sudoers.d/mio_utente

 sudo visudo -f /etc/sudoers.d/mio_utente
 
Ricapitoliamo:
 
1) ho rimosso mio_utente dal gruppo sudo
2) ho editato con visudo /etc/sudoers
3) questo è il mio sudoers:
 
root    ALL=(ALL:ALL) ALL
 
# Allow members of group sudo to execute any command
%sudo  ALL=(ALL:ALL) ALL
 
mio_utente ALL = (root) NOPASSWD: /home/mio_utente/Documenti/dhcp.sh
mio_utente ALL = (root) NOPASSWD: 
/home/mio_utente/Documenti/dhcpserver-ftp-samba.sh
mio_utente ALL = (root) NOPASSWD: /home/mio_utente/Documenti/allwired.sh
mio_utente ALL = (root) NOPASSWD: 
/home/mio_utente/Documenti/dhcpserver-eth-forw-wifi.sh
 
E così tutto funziona, gli script vengono lanciati da desktop 
anteponendo sudo e vengono eseguiti senza richiedere la password mentre 
tutti gli altri programmi come ad esempio Zenmap e Bleachbit che 
richiedono la password di root continuano a richiederla e va bene.
 
4) ho creato /etc/sudoers.d/mio_utente dove ho provato ad inserire gli 
script di cui sopra "commentando" quelli presenti in /etc/sudoers, ho 
riavviato ma così facendo sudo non legge il file /etc/sudoers.d/mio_utente
 
5) come posso fare a dire a sudo di leggere la directory del punto 4 
come hai fatto te? Dovrò mettere qualche path in /etc/sudoers?
 
Saluti e grazie ancora per tutte le dritte! :)
^Bart

 come hai fatto te? Dovrò mettere qualche path in /etc/sudoers?
 
deve esserci la riga:
 
#includedir /etc/sudoers.d
 
nota bene, il cancelletto in questo caso *non* è commento.