Autore Topic: Dare una volta sola la password di root per aprire un file protetto  (Letto 705 volte)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.326
  • Ne mors quidem nos iunget
    • Mostra profilo
Vi sarà capitato di aver realizzato un programma Gambas che preveda  nella medesima sessione di sistema operativo l'inserimento della propria password di root per aprire un determinato file con accesso protetto.
Come è noto, per far immettere la propria password di root, con Exec o Shell si utilizza il comando gksu (o gksudo):
Codice: gambas [Seleziona]

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 !

Ho scritto il seguente codice nell'intento di ottenere come mero esempio libero accedere al file-device del Mouse:
Codice: gambas [Seleziona]

flPro As Process


Public Sub Form_Open()

 Dim num As Byte
 
' 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", "/dev/input/mouse0"] Wait
     File.Save("/tmp/chmod.txt", "c'è")
   Endif

 ' va a gestire il file-device:
   flPro = Exec ["cat", "/dev/input/mouse0"] 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


...che ne pensate ?  :-[
« Ultima modifica: 06 Aprile 2012, 01:01:09 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Dare una volta sola la password di root per aprire un file protetto
« Risposta #1 il: 26 Marzo 2012, 17:13:00 »
Impostare i permessi, anche se in modo temporaneo, risulta alquanto pericoloso.
Dipendentemente dalla logica della propria applicazione, si potrebbe memorizzare la password a livello Gambas, in memoria, fino alla chiusura della stessa.
Se ho capito bene, però, tu avresti intenzione di usare la password solo la prima volta che lanci l'applicativo, e quindi la logica di cui sopra non avrebbe più senso.
Scriverla su un file di testo risulterebbe ancor più deleterio...
Se, però, la tua intenzione è quella di usare il sistema a livello di test, potrebbe anche andare bene scriverla da qualche parte, ma sicuramente non sarebbe corretto una volta che il programma và in giro.
Tieni anche conto che non tutti hanno la possibilità o le conoscenze per andare a modificare impostazioni di sistema, e la cosa limiterebbe alquanto la sicurezza e la dinamicità del sistema.
Come ultimo, se trattasi di evitare ripetitività in fase di test, và bene qualsiasi cosa, però è da prevedere l'uso in esercizio.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.326
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Dare una volta sola la password di root per aprire un file protetto
« Risposta #2 il: 26 Marzo 2012, 17:31:37 »
Scriverla su un file di testo risulterebbe ancor più deleterio...
Se, però, la tua intenzione è quella di usare il sistema a livello di test, potrebbe anche andare bene scriverla da qualche parte, ma sicuramente non sarebbe corretto una volta che il programma và in giro.
Attenzione però, perché nel codice sopra esposto non è prevista la scrittura della password nel file temporaneo ! Il testo lì visibile "c'è" è puramente contingente: il file temporaneo, che si va a creare, potrebbe essere anche privo di caratteri all'interno. La logica sta nel cercare il file in quanto tale, e non già di leggere un codice alfanumerico o comunque qualsiasi byte al suo interno. Ciò al fine di sapere se il programma è stato già lanciato almeno una volta nell'attuale sessione del sistema operativo.

Impostare i permessi, anche se in modo temporaneo, risulta alquanto pericoloso.
Tieni anche conto che non tutti hanno la possibilità o le conoscenze per andare a modificare impostazioni di sistema, e la cosa limiterebbe alquanto la sicurezza e la dinamicità del sistema.
Come ultimo, se trattasi di evitare ripetitività in fase di test, và bene qualsiasi cosa, però è da prevedere l'uso in esercizio.
Immaginavo tali dubbi.

Proporrei di lasciare questa discussione semplicemente per fini didattici e teorici; e sulla scorta di quanto già sottolineato da md9327, raccomandando agli utenti di prestare la massima attenzione e la opportuna cura per il suo eventuale uso !  :danger:
« Ultima modifica: 26 Marzo 2012, 18:58:38 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »