View Full Version : Subordinare l'esecuzione di uno script bash all'inserimento di una password
NeoTheAdvocate
09-04-2010, 10:13
Mi occorre una blanda protezione per l'esecuzione di un semplice script che monta un paio di posizioni in nfs. Poiché non è esattamente il mio campo, però, non sono riuscito a mettere insieme le poche righe opportune a ciò. :p
Ogni aiuto è gradito... :cool:
Thanx in advance.
Chiancheri
09-04-2010, 14:20
Mi occorre una blanda protezione per l'esecuzione di un semplice script che monta un paio di posizioni in nfs. Poiché non è esattamente il mio campo, però, non sono riuscito a mettere insieme le poche righe opportune a ciò. :p
Ogni aiuto è gradito... :cool:
Thanx in advance.
se è solo blanda, ad esempio salvando la password in chiaro, puoi usare semplicemente zenity per chiedere la password e poi con un pò di codice verifichi e vai avanti, altrimenti falla eseguire solo a root e chiedi prima la password di sudo con gksudo o simili.
Damage92
10-04-2010, 10:37
Ma le partizioni non possono essere montate solo da root? Vuol dire che comunque gli utenti dovrebbero essere sudoers per eseguire lo script...
Puoi comunque configurare /etc/sudoers in modo da permettere a certi utenti di eseguire solo il tuo script con i privilegi di root.
Ovviamente lo script deve appartenere a root, in modo che gli utenti non possano modificalo ed eseguire quello che vogliono! :D
In /etc/sudoers puoi inserire una riga così:
<nomeutente> ALL = <percorso/dello/script>
guida generale: http://www.gentoo.org/doc/it/sudo-guide.xml
Poi non so se è giusto o se funziona! Prova ;)
NeoTheAdvocate
12-04-2010, 11:40
Grazie per le risposte.
Entro nel merito.
Si tratta di pc di uso comune (in spazio comune: segreteria) la cui password per l'accesso dell'utente deve essere nota a tutti (così come la password di root: si tratta di Ubuntu 10.04, e vorrei non dover creare un altro utente... :P ).
Lo script in questione monta alcune unità di uso esclusivo, il cui accesso deve quindi essere limitato e protetto da password diversa da quella di accesso dell'utente. Non importa crittografia della chiave, solo appunto un limite all'accesso molto blando a livello di interfaccia utente.
Avevo pensato di impostare lato server (ubuntu 8.04) una password per il montaggio delle unità NFS ma mi pare che la cosa non possa esser fatta in modo così immediato e diretto come con Samba (e non vorrei dover passare a Samba).
Per cui la soluzione più semplice mi è sembrata quella di togliere le righe delle unità in questione da fstab (e in effetti mi giocherei il mount da user :( ), e impostare uno script che le monti il quale però prima di essere eseguito chieda la password, diversa da quella dell'utente in uso. :)
Damage92
12-04-2010, 15:19
Si tratta di pc di uso comune (in spazio comune: segreteria) la cui password per l'accesso dell'utente deve essere nota a tutti (così come la password di root: si tratta di Ubuntu 10.04, e vorrei non dover creare un altro utente... :P
se tutti conoscono la password di root (o più semplicemente c'è un solo utente che ed è anche sudoers) allora non ha senso "proteggere" il mount, dato che tutti possono comunque eseguirlo...
Se poi sei sicuro che gli utenti sono niubbi e non sanno di poterlo fare, allora il consiglio di Chiancheri è una buona soluzione.
Altrimenti penso che si possa di meglio fare mettendo le mani nel file /etc/sudoers ;)
NeoTheAdvocate
21-04-2010, 17:00
se tutti conoscono la password di root (o più semplicemente c'è un solo utente che ed è anche sudoers) allora non ha senso "proteggere" il mount, dato che tutti possono comunque eseguirlo...
Se poi sei sicuro che gli utenti sono niubbi e non sanno di poterlo fare, allora il consiglio di Chiancheri è una buona soluzione.
Altrimenti penso che si possa di meglio fare mettendo le mani nel file /etc/sudoers ;)
sono niubbissimi, basta l'ostacolo più banale :ciapet:
NeoTheAdvocate
21-04-2010, 17:06
se è solo blanda, ad esempio salvando la password in chiaro, puoi usare semplicemente zenity per chiedere la password e poi con un pò di codice verifichi e vai avanti, altrimenti falla eseguire solo a root e chiedi prima la password di sudo con gksudo o simili.
root non va bene per la coincidenza con la password di utente (ubuntu)
in concreto quale codice dovrei usare? :mc: :fagiano:
Damage92
21-04-2010, 19:15
Proporrei un'alternativa... i gruppi!
Se crei un gruppo apposta, e dai i permessi di esecuzione dello script solo a quel gruppo, poi puoi decidere chi può e chi non può eseguire lo script!
Forse non ci sarebbe neanche bisogno della password di root, perché tra le opzioni di fstab c'è:
# nouser - Impedisce ai normali user di montare il filesystem
che è abilitata di default. Togliendola, gli utenti potranno fare il mount di quel filesystem.
Cosa ne dite?
In pratica tutti quelli che accedono al computer usano lo stesso account utente, ma vuoi che solo alcuni di loro possano montare determinati dispostivi. Inoltre non vuoi creare un secondo utente. Allora:
1) non serve dare a nessuno la password di root, anzi sarebbe stupido... se per tua stessa ammissione sono tutti dei niubbi
2) la soluzione più pulita è avere due utenti, di cui solo ad uno dai il permesso di montare i suddetti dispositivi come root tramite sudo
3) se proprio non vuoi dover mantenere due account utente bisogna che mi spieghi il motivo, perchè non mi è affatto chiaro. Forse il problema è semplicemente che non vuoi, ogni volta che modifichi qualcosa per un utente, dover rifare tutto una seconda volta per l'altro. Se è così puoi utilizzare il secondo account come semplice "account d'appoggio". Dai a utente2 i permessi di montare i suddetti dispositivi come root tramite sudo e dai ad utente1 la possibilità di utilizzare sudo per montare i dispositivi come se fosse utente2. In concreto:
(a) aggiungi ad /etc/sudoers queste due righe:
utente2 ALL = ( root ) /sbin/mount <dispostivo>
utente1 ALL = ( utente2 ) NOPASSWD: /bin/sudo /sbin/mount <dispostivo>
(b) a questo punto utente1 può montare il dispositivo eseguendo (gli verrà chiesta la password di utente2):
/bin/sudo -u utente2 /bin/sudo /sbin/mount <dispositivo>
NeoTheAdvocate
22-04-2010, 12:58
In pratica tutti quelli che accedono al computer usano lo stesso account utente, ma vuoi che solo alcuni di loro possano montare determinati dispostivi. Inoltre non vuoi creare un secondo utente. Allora:
1) non serve dare a nessuno la password di root, anzi sarebbe stupido... se per tua stessa ammissione sono tutti dei niubbi
2) la soluzione più pulita è avere due utenti, di cui solo ad uno dai il permesso di montare i suddetti dispositivi come root tramite sudo
3) se proprio non vuoi dover mantenere due account utente bisogna che mi spieghi il motivo, perchè non mi è affatto chiaro. Forse il problema è semplicemente che non vuoi, ogni volta che modifichi qualcosa per un utente, dover rifare tutto una seconda volta per l'altro. Se è così puoi utilizzare il secondo account come semplice "account d'appoggio". Dai a utente2 i permessi di montare i suddetti dispositivi come root tramite sudo e dai ad utente1 la possibilità di utilizzare sudo per montare i dispositivi come se fosse utente2. In concreto:
(a) aggiungi ad /etc/sudoers queste due righe:
utente2 ALL = ( root ) /sbin/mount <dispostivo>
utente1 ALL = ( utente2 ) NOPASSWD: /bin/sudo /sbin/mount <dispostivo>
(b) a questo punto utente1 può montare il dispositivo eseguendo (gli verrà chiesta la password di utente2):
/bin/sudo -u utente2 /bin/sudo /sbin/mount <dispositivo>
Ho più o meno smanettato sulla base delle Tue indicazioni e ho più o meno raggiunto il risultato voluto. :D
Grazie a tutti. M.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.