Linux-magazine.it Forum
Febbraio 07, 2012, 11:50:12 am *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?
 
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: Creare lanciatore con Gnome per uno script  (Letto 2720 volte)
0 utenti e 2 Utenti non registrati stanno visualizzando questa discussione.
farthing
Full Member
***

Karma: +0/-0
Scollegato Scollegato

Messaggi: 123



Mostra profilo
« inserita:: Marzo 10, 2010, 11:37:41 am »

Ciao

Ho preparato un semplice script per iptables e l'ho salvato in un'apposita cartella nella mia home.
Con distro che usano KDE come ambiente grafico non ho avuto difficoltà nel creare un lanciatore da posizionare sul desktop. Lo script deve essere lanciato dall'utente root, e con KDE è bastato selezionare "Crea nuovo collegamento ad applicazione" e nel tab "Applicazione" cliccare sul pulsante "Opzioni avanzate" e poi selezionare "Esegui in un terminale " ed "Esegui come un altro utente" indicando l'utente root. In questo modo, ogni volta che utilizzo il lanciatore si apre una finestra nella quale digitare la password di root.

Con Ubuntu 9.10 (Gnome) la procedura di creazione di un lanciatore non prevede la possibilità di far eseguire lo script come un altro utente (nel mio caso, root). Almeno, io non l'ho trovata.
Ho creato il lanciatore, ma non funziona perché lo script viene avviato da un utente normale.
Può darsi che il problema sia causato dal fatto che Ubuntu di default non ha abilitato l'uso del "su". Comunque, io l'ho abilitato, pertanto posso dare sia il "sudo" sia il "su".

Grazie.
 
Registrato
michele.p
Global Moderator
Hero Member
*****

Karma: +49/-44
Scollegato Scollegato

Messaggi: 6630



Mostra profilo
« Risposta #1 inserita:: Marzo 10, 2010, 12:18:59 pm »

...prova ad associare allo (inserire nello) script il richiamo ad un programma che ti mostri la richiesta di inserimento della password affinché ti permetta il lancio da amministratore.

Bye  Fico
Registrato

farthing
Full Member
***

Karma: +0/-0
Scollegato Scollegato

Messaggi: 123



Mostra profilo
« Risposta #2 inserita:: Marzo 10, 2010, 12:32:27 pm »

Ciao Michele

Non saprei come fare.
Per cortesia, potresti darmi qualche dettaglio?

Grazie  Sorriso
Registrato
michele.p
Global Moderator
Hero Member
*****

Karma: +49/-44
Scollegato Scollegato

Messaggi: 6630



Mostra profilo
« Risposta #3 inserita:: Marzo 10, 2010, 12:49:25 pm »

...prova così (io utilizzo "su");

Codice:
if [ $UID -ne 0 ]; then
echo "Questo script può essere lanciato solo da utente root! Inserisci la password"
su -c "$0 $@"
exit
fi
echo "Ok, ora sei root ...non fare macelli :-)) "

 Ghigno ..naturalmente tu personalizzi il teso in echo come meglio credi...  Ghigno

Bye  Fico
Registrato

farthing
Full Member
***

Karma: +0/-0
Scollegato Scollegato

Messaggi: 123



Mostra profilo
« Risposta #4 inserita:: Marzo 10, 2010, 12:53:26 pm »

Un'ultima domanda: il codice che mi hai indicato deve essere inserito all'inizio o alla fine del mio script?
(Immagino che sia una domanda dalla risposta ovvia per molti, ma non vorrei commettere errori..)

Grazie ancora, ciao.
Registrato
michele.p
Global Moderator
Hero Member
*****

Karma: +49/-44
Scollegato Scollegato

Messaggi: 6630



Mostra profilo
« Risposta #5 inserita:: Marzo 10, 2010, 12:56:44 pm »

...va bene dopo la riga;

Codice:
#!/bin/bash

...considera, però, che il tuo script devi lanciarlo da shell altrimenti devi aggiungere altre righe che possano aprire una finestra che ti chiede la password e che in gnome non so quale sia o come si chiami...  Che?!?

Eventualmente riporta il tuo script.

Bye  Fico
Registrato

farthing
Full Member
***

Karma: +0/-0
Scollegato Scollegato

Messaggi: 123



Mostra profilo
« Risposta #6 inserita:: Marzo 10, 2010, 01:06:58 pm »

...va bene dopo la riga;

Codice:
#!/bin/bash
OK. grazie.

...considera, però, che il tuo script devi lanciarlo da shell altrimenti devi aggiungere altre righe che possano aprire una finestra che ti chiede la password e che in gnome non so quale sia o come si chiami...  Che?!?
Ma se devo lanciarlo da shell, in pratica non cambia nulla: anche adesso lo lancio da terminale anteponendo sudo, il terminale mi chiede la password dell'utente abilitato a dare il sudo e lo script viene lanciato.
Registrato
michele.p
Global Moderator
Hero Member
*****

Karma: +49/-44
Scollegato Scollegato

Messaggi: 6630



Mostra profilo
« Risposta #7 inserita:: Marzo 10, 2010, 02:42:16 pm »

...allora modifica il codice per richiamare la finestra per l'immissione della password che in ambiente Gnome è gksu;

http://www.nongnu.org/gksu/gksu2.png

http://linuxappfinder.com/package/gksu

In sostanza come clicchi sullo script, verifica se sei utente root e in caso contrario ti chiede la password con l'ausilio di gksu con la finestra che vedi nel link sopra. Praticamente questo è quello che serve a te;

http://a2.pluto.it/a2284.htm

paragrafo "228.7    Cambiare identità".

Bye  Fico
« Ultima modifica: Marzo 10, 2010, 03:10:55 pm da michele.p » Registrato

farthing
Full Member
***

Karma: +0/-0
Scollegato Scollegato

Messaggi: 123



Mostra profilo
« Risposta #8 inserita:: Marzo 10, 2010, 11:15:48 pm »

Grazie dei suggerimenti, farò qualche prova.

Ciao.
Registrato
michele.p
Global Moderator
Hero Member
*****

Karma: +49/-44
Scollegato Scollegato

Messaggi: 6630



Mostra profilo
« Risposta #9 inserita:: Marzo 11, 2010, 02:50:49 pm »

...com'è andata? ...sei risucito oppure hai avuto qualche problema?

Bye  Fico
Registrato

farthing
Full Member
***

Karma: +0/-0
Scollegato Scollegato

Messaggi: 123



Mostra profilo
« Risposta #10 inserita:: Marzo 14, 2010, 07:24:58 pm »

Ciao,
purtroppo ho trascorso questi ultimi giorni lontano dal pc: soltanto oggi ho potuto dedicarmi agli esperimenti.

Il problema di cui ho parlato è soltanto relativo a Ubuntu, perché tra le distro che uso è l'unica ad avere Gnome.
Ho controllato in Synaptic e il pacchetto gksu è installato; a suo tempo ho attivato l'utilizzo del "su" in aggiunta al "sudo".

lo script è molto semplice; l'ho tratto da un vecchio Wiki di Ubuntu (adesso mi sembra che sia stato rimosso) e di solito lo utilizzo nelle distro che non hanno un'interfaccia grafica a iptables già installata, nell'attesa di installare Firestarter o altro.

Codice:
#!/bin/bash
#
iptables -P INPUT DROP
#
iptables -P FORWARD DROP
#
iptables -A INPUT -i lo -j ACCEPT
#
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Di solito lo lancio da teminale, come root, usando il "sudo". Per riuscire a lanciarlo dal desktop, con un lanciatore, ho modificato le prime righe dello script nel seguente modo:
Codice:
#!/bin/bash
#
gksu -u root /home/nomeutente/script/iptables.sh
#
iptables -P INPUT DROP
#

Ho anche provato a modificarlo nel seguente modo:
Codice:
#!/bin/bash
#
gksudo -u root /home/nomeutente/script/iptables.sh
#
iptables -P INPUT DROP
#

Mi viene chiesta la password dell'utente abilitato a dare i comandi con il "sudo", e quindi compare una finestra di terminale con il seguente output:
Codice:
Errore di GConf: Contatto col server di configurazione non riuscito;
tra le possibili cause la necessità di abilitare il supporto TCP/IP per ORBit
o la presenza di un vecchio blocco NFS causato da un crash del sistema.
Consultare http://www.gnome.org/projects/gconf/ per ulteriori informazioni
(dettagli -  1: Recupero delle connessione alla sessione non riuscito:
/bin/dbus-launch terminated abnormally with the following error:
Maximum number of clients reachedAutolaunch error: X11 initialization failed.).

(gksu:5723): GConf-CRITICAL **: gconf_value_free: assertion `value != NULL' failed
Maximum number of clients reached
(gksu:5729): Gtk-WARNING **: cannot open display: :0.0
Dopo di ciò, se controllo sul terminale con sudo iptables -L ottengo un output differente da quello che ottengo dopo aver lanciato lo script nel modo normale, cioè da terminale con sudo /home/nomeutente/script/iptables.sh
E' probabile (anzi, quasi certo  Occhiolino ) che abbia commesso qualche errore nell'aggiungere il comando gksu. D'altra parte, se non avessi indicato l'utente al quale voglio sostituirmi (root) e se non avessi indicato il percorso dello script, avrei dovuto inserire questi dati ad ogni utilizzo del lanciatore.
« Ultima modifica: Marzo 14, 2010, 07:30:02 pm da farthing » Registrato
michele.p
Global Moderator
Hero Member
*****

Karma: +49/-44
Scollegato Scollegato

Messaggi: 6630



Mostra profilo
« Risposta #11 inserita:: Marzo 15, 2010, 06:18:51 pm »

Quest'errore;

Citazione
Gtk-WARNING **: cannot open display: :0.0
che dovrebbe essere lo stesso che hai se provi a lanciare un programma grafico da terminale, lo puoi evitare utilizzando il comando;

xhost +local:local

Bye  Fico
Registrato

farthing
Full Member
***

Karma: +0/-0
Scollegato Scollegato

Messaggi: 123



Mostra profilo
« Risposta #12 inserita:: Marzo 16, 2010, 01:11:02 pm »

Ho risolto, girovagando un po' per la rete.

La soluzione più semplice è aggiungere "sudo" al percorso dello script durante la creazione del lanciatore, in pratica come se dessi il comando da terminale.
Quando in Ubuntu con Gnome si crea un lanciatore, occorre scegliere "Applicazione nel terminale" e alla voce "Comando" inserire, nel mio caso, sudo /home/nomeutente/script/iptables.sh.
Ad ogni utilizzo del lanciatore verrà soltanto chiesta la password.  Sorriso

Ciao, e grazie
Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  


Powered by SMF 1.1.8 | SMF © 2006-2007, Simple Machines LLC -->