View Full Version : `su` in automatico?
Gandalf_BD
11-11-2005, 18:27
ciao a tutti...
una piccola curiosità...
è possibile realizzare uno script bash che dia la possibilità ad un utente preciso di avviarlo e loggarsi come root?
nel senso che per l'utente, lanciare il suddetto script sarebbe come fare `su passwd`...
è possibile?
io ho già provato a mandare echo passwd in pipe a su, ma mi dice che su deve essere avviato da terminale...
se non sbaglio, qualcuno di voi l'ha fatto poco tempo fa, ma non sono più riuscito a trovare il post... riguardava la configurazione di linux per la mamma :D
così che potesse collegarsi ad internet senza fare niente... :)
grazie! :)
usare sudo no?
spero che nessuno ti aiuti a fare una cosa del genere :sofico:
Alberto_y
11-11-2005, 20:10
Secondo me se ti serve "su" quando ti loggi devi loggarti come root, altrimenti dai all'utente che ti serve i diritti dei quali ha bisogno e basta.
Nel senso che se fai "su" in automatico è come se fosse root, a quel punto tanto vale essere root...o sbaglio?
Però essere root nell'uso normale del pc è sbagliato IMHO, quindi se hai bisogno che quando un utente si logga possa fare determinate azioni tanto vale dargli solo i diritti per fare quelle azioni e basta!;)
In ogni caso basta trovare nella home un file chiamato .bashrc e dentro scrivere ciò che deve eseguire al login e dovrebbe andare.
Io uso sui server dentro .bash_logout di root un bel "clear" per esempio, così quando esco mi pulisce la schermata automaticamente al logout (lo tengo senza grafica e mi scoccia che si veda cosa stavo facendo).
Gandalf_BD
12-11-2005, 08:54
no... a me serve uno script diverso..
mi serve uno script che esegua su, avvii uno script avviabile solo da root e poi ritorni in modalità utente...
no... a me serve uno script diverso..
mi serve uno script che esegua su, avvii uno script avviabile solo da root e poi ritorni in modalità utente...
Lancia da root il programma
visudo
serve per modificare le regole di sudo (ovviamente devi averlo installato)
a quel punto nella sezione
# Cmnd alias specification
aggiungi un alias per lo script che vuoi venga eseguito da un utente con i privilegi di root
un esempio
Cmnd_Alias SCRIPT=/usr/local/tuo_script
la sintassi è abbastanza chiara,
Cmnd_Alias ALIA=path dello script
A questo punto dove parla di
# User privilege specification
aggiungi una voce del tipo
gandalf ALL=SCRIPT,NOPASSWD: ALL
la sintassi in questo caso è un pò complicata ma significa che l'utente gandalf può eseguire su ogni host (il primo ALL) il comando SCRIPT senza che gli venga richiesta la password (NOPASSWD) con i permessi di qualsiasi altro utente (l'ultimo ALL)
A questo punto salva il file appena modificato
l'utente gandalf può quindi eseguire lo script come root senza che gli venga chiesta la password purchè esegua
sudo /usr/local/tuo_script
se vuoi capirne di più
man sudoers
Gandalf_BD
12-11-2005, 12:40
ok, proverò...
grazie! :)
no... a me serve uno script diverso..
mi serve uno script che esegua su, avvii uno script avviabile solo da root e poi ritorni in modalità utente...
Credo che ci sia una soluzione molto più facile: settando i permessi giusti... Non credi?
Credo che ci sia una soluzione molto più facile: settando i permessi giusti... Non credi?
non so pensa se lo script in questione è un rc.httpd oppure quello di samba, mettere i permessi giusti mi sembra un pò difficile, soprattutto se voglio permettere a più utenti di usare ad esempio il restart, credo che in certi casi sia più conveniente il sudo e fingere (con cautela) di avere più root
Puoi per esempio creare un gruppo restart dove mettere gli utenti che possono eseguire reboot. La situazione è un po' + complicata se QUALCHE utente deve potere fare qualcosa e qualcun altro no, allora devi creare i gruppi. Altrimenti se TUTTI gli utenti devono potere eseguire un comando basta settare i permessi dell'applicativo.
Ma in ogni caso mi sembra + semplice, e anche + in accordo con la filosofia del so che non fare uno script che lancia uno script... poi fai tu, a volte ci sono tante soluzioni ugualmente efficaci ad un problema.
qui manifesto la mia ignoranza, se l'eseguibile deve fare il bind su una porta bassa? tipo se devo far partire il server ftp come metto i permessi?
:confused:
Non ti so dire niente di bind e ftp. Per me un eseguibile ha 9 permessi normali più i bit speciali, al di là di quello che fa. Se è un eseguibile di sistema (tipo quelli in /sbin per intenderci) e deve potere essere eseguito da chiunque con permessi di root allora io gli aggiungo il bit suid con chmod +s.
Se quello che vuoi fare non è fatto da un eseguibile specifico allora fai uno script foo.sh che fa quello che vuoi che faccia e poi con chmod +s foo.sh lo rendi eseguibile da chiunque con i permessi di root.
Mentre scrivo mi viene in mente un'idea per renderlo eseguibile solo da alcuni. Crei un gruppo pippo, ci metti dentro gli user che vuoi. Poi crei una directory che non sia nelle PATH degli utenti che non devono eseguire lo script (tipo /usr/local/sbin ad esempio) e cambi il gruppo proprietario della directory in pippo con chgrp. Dai permessi ristretti (tipo 770) a questa directory e il gioco è fatto: ora basta spostare foo.sh nella directoty pippo.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.