Impostazione dei permessi di un file con la funzione 'g chmod' del API di libglib-2.0

Da Gambas-it.org - Wikipedia.
Versione del 9 ago 2015 alle 17:08 di Vuott (Discussione | contributi) (Creata pagina con "La funzione ''g_chmod()'' della libreria esterna ''libglib-2.0'' consente di impostare/modificare i permessi di un file in riferimento ai suoi tre possibili utenti: ''Propriet...")

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

La funzione g_chmod() della libreria esterna libglib-2.0 consente di impostare/modificare i permessi di un file in riferimento ai suoi tre possibili utenti: Proprietario, Gruppo ed Altri.


La sua sintassi è:

int g_chmod (const gchar *filename, int mode)

laddove il parametro mode è un valore intero formato dalla somma dei valori delle impostazioni dei permessi per i tre utenti.

In particolare va chiarito che:

  • il valore zero significa negazione di ogni permesso sul file per l'utente considerato;
  • i valori riferiti all'utente Altri sono: 0, 2, 4, 6 (quindi partendo da 0 un comando ogni 2 valori). Aggiungendo 1 ad uno dei predetti valori, si consente anche l'esecuzione del file.
  • i valori riferiti all'utente Gruppo sono: 0, 16, 32, 48 (quindi partendo da 0 un comando ogni 16 valori). Aggiungendo 8 ad uno dei predetti valori, si consente anche l'esecuzione del file.
  • i valori riferiti all'utente Proprietario sono: 0, 128, 256, 384 (quindi partendo da 0 un comando ogni 128 valori). Aggiungendo 8 ad uno dei predetti valori, si consente anche l'esecuzione del file.


Mostriamo alcuni esempi, nei quali - per maggiore chiarezza didattica - nel parametro Mode si porranno visibili, come addendi di una somma, i valori di tutti e tre gli utenti.

Esempio in cui si consentono a tutti e tre gli utenti sia la scrittura che la lettura, ma non l'eseguibilità di un file:

Library "libglib-2.0"

' int g_chmod (const gchar *filename, int mode)
' Sets the permissions of a file system object.
Private Extern g_chmod(filename As String, mode As Integer) As Integer


Public Sub Main()
 
 Dim err As Integer
 
  err = g_chmod("/percorso/del/file", 384 + 48 + 6)
  If err < 0 Then Error.Raise("Impossibile modificare i permessi del file !")
  
End


Esempio in cui si nega ogni azione su un file a tutti e tre gli utenti:

Library "libglib-2.0"

' int g_chmod (const gchar *filename, int mode)
' Sets the permissions of a file system object.
Private Extern g_chmod(filename As String, mode As Integer) As Integer


Public Sub Main()
 
 Dim err As Integer
 
  err = g_chmod("/percorso/del/file", 0 + 0 + 0)
  If err < 0 Then Error.Raise("Impossibile modificare i permessi del file !")
  
End


Esempio in cui si consente la sola lettura ed eseguibilità di un file al solo utente Proprietario:

Library "libglib-2.0"

' int g_chmod (const gchar *filename, int mode)
' Sets the permissions of a file system object.
Private Extern g_chmod(filename As String, mode As Integer) As Integer


Public Sub Main()
 
 Dim err As Integer
 
  err = g_chmod("/percorso/del/file", 264 + 0 + 0)
  If err < 0 Then Error.Raise("Impossibile modificare i permessi del file !")
  
End


Esempio in cui si consente la sola lettura di un file a tutti e tre gli utenti:

Library "libglib-2.0"

' int g_chmod (const gchar *filename, int mode)
' Sets the permissions of a file system object.
Private Extern g_chmod(filename As String, mode As Integer) As Integer


Public Sub Main()
 
 Dim err As Integer
 
  err = g_chmod("/percorso/del/file", 256 + 32 + 4)
  If err < 0 Then Error.Raise("Impossibile modificare i permessi del file !")
  
End



Riferimenti