Prosecuzione trattazione ACL
authorSimone Piccardi <piccardi@gnulinux.it>
Fri, 6 Jun 2008 07:08:03 +0000 (07:08 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Fri, 6 Jun 2008 07:08:03 +0000 (07:08 +0000)
filedir.tex

index 85136824e5997eba5306ae4a25d7ffcbe99031e7..db57506f0c9a340f2e13f9097255f3a415b4a672 100644 (file)
@@ -3385,18 +3385,87 @@ per riga, nella forma:
   tipo:qualificatore:permessi
 \end{Verbatim}
 dove il tipo può essere uno fra \texttt{user}, \texttt{group}, \texttt{other}
-e \texttt{mask}, il qualificatore è presente solo per \texttt{user},
-\texttt{group} e indica l'utente o il gruppo a cui la voce si riferisce e i
+e \texttt{mask}. Il qualificatore è presente solo per \texttt{user} e
+\texttt{group} e indica l'utente o il gruppo a cui la voce si riferisce; i
 permessi sono espressi con una tripletta di lettere analoga a quella usata per
-i permessi dei file.
+i permessi dei file.\footnote{vale a dire \texttt{r} per il permesso di
+  lettura, \texttt{w} per il permesso di scrittura, \texttt{x} per il permesso
+  di esecuzione (scritti in quest'ordine) e \texttt{-} per l'assenza del
+  permesso.}
 
-Va precisato che i due tipi \texttt{user}, \texttt{group} sono usati
+Va precisato che i due tipi \texttt{user} e \texttt{group} sono usati
 rispettivamente per indicare delle voci relative ad utenti e
 gruppi,\footnote{cioè per voci di tipo \const{ACL\_USER\_OBJ} e
   \const{ACL\_USER} per \texttt{user} e \const{ACL\_GROUP\_OBJ} e
   \const{ACL\_GROUP} per \texttt{group}.} applicate sia a quelli proprietari
-del file che a quelli generici (quelle dei proprietari si riconoscono per
-l'assenza di un qualificatore). 
+del file che a quelli generici; quelle dei proprietari si riconoscono per
+l'assenza di un qualificatore, ed in genere si scrivono per prima delle altre.
+Il significato delle voci di tipo \texttt{mask} e \texttt{mark} è evidente. In
+questa forma si possono anche inserire dei commenti precedendoli con il
+carattere ``\texttt{\#}''.
+
+La forma breve prevede invece la scrittura delle singole voci su una riga,
+separate da virgole; come specificatori del tipo di voce si possono usare le
+iniziali dei valori usati nella forma estesa (cioè ``\texttt{u}'',
+``\texttt{g}'', ``\texttt{o}'' e ``\texttt{m}''), mentre le altri parte della
+voce sono le stesse. In questo caso non sono consentiti permessi.
+
+Per la conversione inversa, che consente di ottenere la rappresentazione
+testuale di una ACL, sono invece disponibili due funzioni, la prima delle due,
+di uso più immediato, è \funcd{acl\_to\_text}, il cui prototipo è:
+\begin{functions}
+  \headdecl{sys/types.h} 
+  \headdecl{sys/acl.h}
+  
+  \funcdecl{char * acl\_to\_text(acl\_t acl, ssize\_t *len\_p)}
+
+  Produce la rappresentazione testuale di una ACL.
+  
+  \bodydesc{La funzione restituisce il puntatore ad una stringa con la
+    rappresentazione testuale della ACL in caso di successo e \code{NULL} in
+    caso di errore, nel qual caso \var{errno} assumerà uno dei valori:
+  \begin{errlist}
+  \item[\errcode{ENOMEM}] non c'è memoria sufficiente per allocare i dati.
+  \item[\errcode{EINVAL}] la ACL indicata da \param{acl} non è valida.
+  \end{errlist}
+
+}
+\end{functions}
+
+La funzione restituisce il puntatore ad una stringa terminata da NUL
+contenente la rappresentazione in forma estesa della ACL passata come
+argomento, ed alloca automaticamente la memoria necessaria. Questa dovrà poi
+essere liberata, quando non più necessaria, con \func{acl\_free}. Se
+nell'argomento \param{len\_p} si passa un valore puntatote ad una variabile
+intera in questa verrà restituita la dimensione della stringa con la
+rappresentazione testuale (non comprendente il carattere nullo finale). 
+
+La seconda funzione, \funcd{acl\_to\_any\_text}, permette di controllare con
+dovizia di dettagli la generazione della stringa contenente la
+rappresentazione testuale della ACL, il suo prototipo è:
+\begin{functions}
+  \headdecl{sys/types.h} 
+  \headdecl{sys/acl.h}
+  
+  \funcdecl{char * acl\_to\_any\_text(acl\_t acl, const char *prefix, char
+    separator, int options)}
+
+  Produce la rappresentazione testuale di una ACL.
+
+  \bodydesc{La funzione restituisce il puntatore ad una stringa con la
+    rappresentazione testuale della ACL in caso di successo e \code{NULL} in
+    caso di errore, nel qual caso \var{errno} assumerà uno dei valori:
+  \begin{errlist}
+  \item[\errcode{ENOMEM}] non c'è memoria sufficiente per allocare i dati.
+  \item[\errcode{EINVAL}] la ACL indicata da \param{acl} non è valida.
+  \end{errlist}
+
+}
+\end{functions}
+
+
+
+
 
 \itindend{Access~Control~List}
 
@@ -3532,9 +3601,9 @@ programmi e librerie) di cui il server potrebbe avere bisogno.
 % LocalWords:  fgetxattr attr ssize ENOATTR ENOTSUP NUL setxattr lsetxattr list
 % LocalWords:  fsetxattr flags XATTR REPLACE listxattr llistxattr flistxattr by
 % LocalWords:  removexattr lremovexattr fremovexattr attributename  lacl acl
+% LocalWords:  OBJ
 
 %%% Local Variables: 
 %%% mode: latex
 %%% TeX-master: "gapil"
 %%% End: 
-% LocalWords:  OBJ