Differenze tra le versioni di "Inserire le password per lanciare comandi"

Da Gambas-it.org - Wikipedia.
(Uso di sudo)
Riga 1: Riga 1:
 
A volte può capitare che per poter utilizzare alcuni comandi, sia necessario inserire la propria parola-chiave di ''root''.
 
A volte può capitare che per poter utilizzare alcuni comandi, sia necessario inserire la propria parola-chiave di ''root''.
  
A seconda delle circostanze vi sono alcune modilità:
+
A seconda delle circostanze vi sono alcune modilità.
  
  
==Far aprire un terminale per inserire la propria password con ''su''==
+
==Utilizzo della funzione Gambas: ''Desktop.RunAsRoot''==
 +
Innanzitutto possiamo lanciare un comando bash attraverso la funzione propria di Gambas: ''Desktop.RunAsRoot''. Essa presuppone innanzitutto che sia stato impostato il componente ''gb.desktop'', e che sia presente nel sistema il programma ''xterm''.
 +
<BR>Nelle parentesi va scritta fra virgolette l'intera linea di comando da lanciare, e non il solo comando:
 +
'''Public''' Sub Button1_Click()
 +
 +
  Desktop.RunAsRoot("''Intera_linea_di_comando''")
 +
 +
'''End'''
 +
 
 +
 
 +
 
 +
 
 +
==Uso diretto di comandi ''bash'' lanciati mediante ''Shell''==
 +
===Far aprire un terminale per inserire la propria password con ''su''===
 
La seguente riga di comando farà aprire una finestra di Terminale, nella quale si potrà inserire la propria parola-chiave:
 
La seguente riga di comando farà aprire una finestra di Terminale, nella quale si potrà inserire la propria parola-chiave:
 
  '''Public''' Sub Button1_Click()
 
  '''Public''' Sub Button1_Click()
Riga 21: Riga 34:
 
   c = Open "/tmp/c" For Read Watch
 
   c = Open "/tmp/c" For Read Watch
 
   
 
   
 +
  Shell "xterm -e su -c \"''comando_da_lanciare'' > ''percorso_file_d'appoggio''\" \"$user\""
 +
 +
<FONT color=#006400>' ''oppure anche con "x-terminal-emulator":''</font>
 
   Shell "/usr/bin/x-terminal-emulator -e su -c \"''comando_da_lanciare'' > ''percorso_file_d'appoggio''\" \"$user\""
 
   Shell "/usr/bin/x-terminal-emulator -e su -c \"''comando_da_lanciare'' > ''percorso_file_d'appoggio''\" \"$user\""
 
   
 
   
Riga 39: Riga 55:
  
  
==Uso di ''gksu''==
+
===Uso di ''gksu''===
 
Si potrà utilizzare semplicemente il comando ''gksu'' lanciato con ''Shell''. Nel primo spazio presente nella finestra, che sarà mostrata, si dovrà inserire l'intera riga di comando che si intende lanciare come ''root''.
 
Si potrà utilizzare semplicemente il comando ''gksu'' lanciato con ''Shell''. Nel primo spazio presente nella finestra, che sarà mostrata, si dovrà inserire l'intera riga di comando che si intende lanciare come ''root''.
 
  '''Public''' Sub Button1_Click()
 
  '''Public''' Sub Button1_Click()
Riga 49: Riga 65:
  
  
==Dare una volta sola la password di root per aprire un file protetto==
+
===Dare una volta sola la password di root per aprire un file protetto===
 
Per far immettere la propria password di root, con Exec o Shell si utilizza il comando gksu (o gksudo):
 
Per far immettere la propria password di root, con Exec o Shell si utilizza il comando gksu (o gksudo):
  
Riga 65: Riga 81:
 
Vediamo di seguito un paio di esempi con l'intento di ottenere libero accedesso ai file-device.
 
Vediamo di seguito un paio di esempi con l'intento di ottenere libero accedesso ai file-device.
  
===Uso di ''Process''===
+
====Uso di ''Process''====
 
  Private flPro As Process
 
  Private flPro As Process
 
   
 
   
Riga 98: Riga 114:
  
  
===Uso di ''Open.... For''===
+
====Uso di ''Open.... For''====
 
  '''Private''' fl As File
 
  '''Private''' fl As File
 
   
 
   
Riga 133: Riga 149:
  
  
==Uso di ''sudo''==
+
===Uso di ''sudo''===
 
Si potrà utilizzare anche il comando ''sudo'', da far lanciare però all'interno di un terminale, per sbloccare sino alla chiusura della sessione un file protetto:
 
Si potrà utilizzare anche il comando ''sudo'', da far lanciare però all'interno di un terminale, per sbloccare sino alla chiusura della sessione un file protetto:
  

Versione delle 08:10, 23 set 2012

A volte può capitare che per poter utilizzare alcuni comandi, sia necessario inserire la propria parola-chiave di root.

A seconda delle circostanze vi sono alcune modilità.


Utilizzo della funzione Gambas: Desktop.RunAsRoot

Innanzitutto possiamo lanciare un comando bash attraverso la funzione propria di Gambas: Desktop.RunAsRoot. Essa presuppone innanzitutto che sia stato impostato il componente gb.desktop, e che sia presente nel sistema il programma xterm.
Nelle parentesi va scritta fra virgolette l'intera linea di comando da lanciare, e non il solo comando:

Public Sub Button1_Click()

  Desktop.RunAsRoot("Intera_linea_di_comando")

End



Uso diretto di comandi bash lanciati mediante Shell

Far aprire un terminale per inserire la propria password con su

La seguente riga di comando farà aprire una finestra di Terminale, nella quale si potrà inserire la propria parola-chiave:

Public Sub Button1_Click()

  Shell "/usr/bin/x-terminal-emulator -e su -c \"comando_da_lanciare\" \"$user\""

End

Il risultato del comando però si svolgerà tutto all'interno della finestra del terminale. Altrimenti potremo deviare il flusso di dati verso un qualsiasi file d'appoggio:

Shell "/usr/bin/x-terminal-emulator -e su -c \"comando_da_lanciare > percorso_file_d'appoggio\" \"$user\""

e raccogliere successivamente i dati salvati nel file d'appoggio:

Private c As File


Public Sub Form_Open()

  c = Open "/tmp/c" For Read Watch

  Shell "xterm -e su -c \"comando_da_lanciare > percorso_file_d'appoggio\" \"$user\""

' oppure anche con "x-terminal-emulator": 
  Shell "/usr/bin/x-terminal-emulator -e su -c \"comando_da_lanciare > percorso_file_d'appoggio\" \"$user\""

End


Public Sub File_Read()

 Dim s As String
 

  s = File.Load("percorso_file_d'appoggio")
 
  Print s
 
End


Uso di gksu

Si potrà utilizzare semplicemente il comando gksu lanciato con Shell. Nel primo spazio presente nella finestra, che sarà mostrata, si dovrà inserire l'intera riga di comando che si intende lanciare come root.

Public Sub Button1_Click()

  Shell "gksu"

End


Dare una volta sola la password di root per aprire un file protetto

Per far immettere la propria password di root, con Exec o Shell si utilizza il comando gksu (o gksudo):

 Exec ["gksu", "file_ad_accesso_protetto"]

che fa aprire un'apposita finestra. Diventa, però, alquanto noioso e sgradevole dover inserire ogni volta la password, se dobbiamo o vogliamo lanciare il nostro applicativo più volte - magari per provarlo e testarlo - nella medesima sessione di sistema.

Si può ovviare a questo fastidio, utilizzando il comando chmod una volta sola per impostare il setUID. Tale comando consentirà con effetto temporaneo, limitato alla sola attuale sessione di sistema, che tutti possano eseguire tranquillamente un programma o accedere ad un file che richiede i permessi di root. In sostanza, la password verrà sì inserita, ma 1 volta soltanto !

Se il comando che dobbiamo lanciare prevede delle opzioni indicate con il segno – (come ad esempio: wmctrl -l -p) il comando da eseguire dovrà inserito tra degli apici semplici es:

gksu 'wmctrl -l -p'


Vediamo di seguito un paio di esempi con l'intento di ottenere libero accedesso ai file-device.

Uso di Process

Private flPro As Process


Public Sub Form_Open()

' Riconosce se il programma è stato già lanciato nell'attuale sessione di sistema operativo.
' Se non è stato lanciato almeno una volta, fa inserire la password di root
' per impostare il setUID e consentire l'apertura del file protetto:
  If Not Exist("/tmp/chmod.txt") Then
    Exec ["gksu", "chmod 4777", "percorso_del_file-device"] Wait
    File.Save("/tmp/chmod.txt", "c'è")
  Endif

' Va a gestire il file-device:
  flPro = Exec ["cat", "percorso_del_file-device"] For Read As "flPro"

End


Public Sub flPro_Read()
 
 Dim b As Byte

' legge i dati provenienti dal file-device del mouse...
 Read #flPro, b

' ...e li mostra in console: 
 Print b
 
End


Uso di Open.... For

Private fl As File


Public Sub Form_Open()

' Riconosce se il programma è stato già lanciato nell'attuale
' sessione di sistema operativo. *Se non* è stato lanciato almeno
' una volta, fa inserire la password di root per impostare il setUID
' e consentire l'apertura del file protetto:
  If Not Exist("/tmp/chmod.txt") Then
    Exec ["gksu", "chmod 4777", "percorso_del_file-device"] Wait
    File.Save("/tmp/chmod.txt", "c'è")
  Endif

' va a gestire il file-device:
   fl = Open "percorso_del_file-device" For Read Watch

End


Public Sub File_Read()
 
 Dim b As Byte

' legge i dati provenienti dal file-device della porta...
  Read #fl, b

' ...e li mostra in console:
  Print b

End


Uso di sudo

Si potrà utilizzare anche il comando sudo, da far lanciare però all'interno di un terminale, per sbloccare sino alla chiusura della sessione un file protetto:

Shell "/etc/alternatives/x-terminal-emulator -e sudo -u password chmod 4777 file_protetto_da_sbloccare"

oppure se si vuole lanciare un comando che necessita dell'inserimento della parola-chiave:

Shell "/etc/alternatives/x-terminal-emulator -e sudo -u password comando_da_lanciare"

Anche in questo i dati saranno mostrati all'interno della finestra del terminale.