Autore Topic: Permessi di scrittura dei file  (Letto 1066 volte)

  • Visitatore
Permessi di scrittura dei file
« il: 27 Giugno 2009, 17:23:57 »
Qualcuno mi sa' spiegare come ricavare i permessi di scrittura/lettura/esecuzione di un file dell'utente attualmente loggato ???
Stat(path).Perm.User mi dà i permessi del propietario le file
Stat(path).Perm.Group mi dà i permessi del propietario gruppo
Stat(path).Perm.other mi dà i permessi non ho capito de che

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: Permessi di scrittura dei file
« Risposta #1 il: 27 Giugno 2009, 23:33:01 »
other sono gli altri utenti che non siano il proprietario o appartengano al gruppo. Cioè, se
un file ha il proprietario "giulio" e gruppo "amicidigiulio", other ti da i permessi dell'utente
"paperino" che non è il proprietario e non fa parte del gruppo "amicidigiulio" perché l'ho cacciato. Cerca su google "permessi file gnu linux" per i dettagli.
Per la prima domanda non ho capito. Do per scontato che sai interpretare r-w-x, quindi
suppongo che tu voglia sapere come si fa a capire quali permessi ha un utente loggato su un qualsiasi file. Io farei così:

Codice: [Seleziona]

DIM sFile AS String
  DIM sGruppiUtente AS String
  DIM arsGruppi AS String[]
 
  sFile = "/home/pippo/file"
 
  'Senza argomenti groups ti da i gruppi dell'utente loggato.
  'Se vuoi sapere altri utenti, "groups utente". In
  'questo caso però devi ripulire la risposta prima di creare
  'l'array.
 
  SHELL "groups" TO sGruppiUtente
   
  'Creo un'array con i gruppi cui appartiene l'utente loggato,
  'poiché InStr può dare falsi positivi.  
 
  arsGruppi = Split(Trim$(sGruppiUtente), " ")
   
  IF Stat(sfile).user = User.Name THEN
 
  'l'utente loggato è il proprietario e quindi
  'ha i permessi di Stat(sFile).Perm.User
  'e puoi finirla qui, perché in genere il proprietario
  'ha i maggiori permessi (anche se non è certo).
 
  ENDIF

  'Cerco se l'user loggato appartiene al gruppo del file
 
  IF arsGruppi.Exist(Stat(sfile).Group) THEN  
 
  'l'utente loggato è nel gruppo del file e quindi
  'ha i permessi di Stat(sFile).Perm.Group
 
  ENDIF
 
  'Alla fine se l'utente non è il proprietario
  'e non appartiene al gruppo i suoi permesi su quel file sono:
  'Stat(sFile).Perm.Other
   
END


Ciao.

EDIT: allego piccolo esempio. Scegli un file e in console ti scrive che permessi ha su quel file l'utente che sta usando il programma.
Scrive tutti i permessi, se ce ne sono. Sta a te decidere quali vuoi tenere in considerazione, come filtrarli et cetera et cetera. Insomma è un esempio delle cose scritte su.

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Permessi di scrittura dei file
« Risposta #2 il: 27 Giugno 2009, 23:37:56 »
User/Group/Other sono i permessi standard di Linux, per l'utente, per il gruppo a cui appartiene l'utente e per tutti gli altri utenti che non sono del gruppo dell'utente ("other").

Per sapere a chi appartiene il file (il "proprietario") devi usare Stat(Path).User

P.S.:
ops.. postata in ritardo.
Visita il mio sito personale: http://www.leonardomiliani.com

  • Visitatore
Re: Permessi di scrittura dei file
« Risposta #3 il: 28 Giugno 2009, 11:29:17 »
la "prima domanda" : io essenzialmente voglio sapere se ho i diritti di scrittura/lettura su dei files in maniera tale da evitare che il programma mi vada in crash ....  
tu mi consigli di incrociare un controllo fra gruppo di appartenenza dell'utente corrente ... se sono del gruppo faccio riferimento ai permessi del gruppo altrimenti ai permessi other ....

EDIT :
Esiste la funzione Access ()        :evil:

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: Permessi di scrittura dei file
« Risposta #4 il: 28 Giugno 2009, 11:59:15 »
Va bene, se vuoi sapere se hai i permessi di lettura/scrittura, io modificherei
l'esempio che ho postato così:

Codice: [Seleziona]

PUBLIC SUB Form_Open()
   
  DIM sFile AS String
  DIM sGruppiUtente AS String
  DIM arsGruppi AS String[]
  DIM sPermessi AS String
 
 
  SHELL "groups" TO sGruppiUtente
  arsGruppi = Split(Trim$(sGruppiUtente), " ")
 
  IF NOT Dialog.OpenFile() THEN
    sFile = Dialog.Path
  ELSE
    Message.Error("Devi scegliere un file!", "Esci")
    ME.Close
  ENDIF  
   
  IF Stat(sfile).user = User.Name THEN sPermessi = sPermessi & Stat(sFile).Perm.User
   
  IF arsGruppi.Exist(Stat(sfile).Group) THEN sPermessi = sPermessi & Stat(sFile).Perm.Group
   
  sPermessi = sPermessi & Stat(sFile).Perm.Other
 
  IF InStr(sPermessi, "r") THEN PRINT "permesso di lettura"
  IF InStr(sPermessi, "w") THEN PRINT "permesso di scrittura"

END


In pratica modifichi la stringa sPermessi dopo la verifica per user, group, other
e alla fine con Instr valuti se puoi leggere ("r") il file e scriverci sopra ("w").
Allego l'esempio modificato.

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: Permessi di scrittura dei file
« Risposta #5 il: 28 Giugno 2009, 12:03:14 »
Citazione

giac_fab ha scritto:
la "prima domanda" : io essenzialmente voglio sapere se ho i diritti di scrittura/lettura su dei files in maniera tale da evitare che il programma mi vada in crash ....  
tu mi consigli di incrociare un controllo fra gruppo di appartenenza dell'utente corrente ... se sono del gruppo faccio riferimento ai permessi del gruppo altrimenti ai permessi other ....

EDIT :
Esiste la funzione Access ()        :evil:


:lol:   :lol:   :lol:   :lol:   :lol:   :lol:   :lol:   che fesso che sono :lol:   :lol:   :lol:   :lol:   :lol:   :lol:   :lol:

dovevo saperlo che ci doveva essere una funzione per queste cose

:lol:   :lol:   :lol:   :lol:   :lol:   :lol:

ciao

  • Visitatore
Re: Permessi di scrittura dei file
« Risposta #6 il: 29 Giugno 2009, 13:51:57 »
Eh il problema è nella ricerca nella guida .... tante volte mi imbatto per sbaglio in funzioni che a conoscerle prima mi avrebbero semplificato non poco la vita .....

In gambas 1 c'era una bella guida on-line che permetteva la ricerca di una singola parola ... non capisco perchè l'hanno depennata ....

Grazie comunque dell'aiuto ....

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Permessi di scrittura dei file
« Risposta #7 il: 29 Giugno 2009, 21:40:13 »
La guida sensibile ci sarebbe ancora. Basta selezionare una parola chiave o un metodo o qualcos'altro nell'editor di codice e poi premere F2.
Però sulle ultime versioni di Gambas fa alle volte un po' di bizze (va configurato esplicitamente il browser da usare).
Visita il mio sito personale: http://www.leonardomiliani.com