From b3d5494270f6a6b917c23a38f5f4e8c5061c50a3 Mon Sep 17 00:00:00 2001 From: Simone Piccardi Date: Fri, 6 Jun 2008 07:08:03 +0000 Subject: [PATCH] Prosecuzione trattazione ACL --- filedir.tex | 83 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 76 insertions(+), 7 deletions(-) diff --git a/filedir.tex b/filedir.tex index 8513682..db57506 100644 --- a/filedir.tex +++ b/filedir.tex @@ -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 -- 2.30.2