X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=filedir.tex;h=8bb46d76e4553405af3ca644ea6a3b79de2476df;hp=4c59dc1cbf458c7407cb470449d773434f2d1f04;hb=b34e359f722d553bc8e9a6808e0f3a48b57f052a;hpb=252147ac2ed5342d06d6cb0c13d6c3f956b128f3 diff --git a/filedir.tex b/filedir.tex index 4c59dc1..8bb46d7 100644 --- a/filedir.tex +++ b/filedir.tex @@ -3779,8 +3779,9 @@ della ACL rappresentata dai dati contenuti nel buffer puntato da utilizzo. Una volta che si disponga della ACL desiderata, questa potrà essere impostata -su un file o una directory. Per far questo sono disponibili due funzioni; la -prima è \funcd{acl\_set\_file}, il cui prototipo è: +su un file o una directory. Per impostare una ACL sono disponibili due +funzioni; la prima è \funcd{acl\_set\_file}, che opera sia su file che su +directory, ed il cui prototipo è: \begin{functions} \headdecl{sys/types.h} \headdecl{sys/acl.h} @@ -3788,7 +3789,7 @@ prima \funcdecl{int acl\_set\_file(const char *path, acl\_type\_t type, acl\_t acl)} - Imposta una ACL su un file. + Imposta una ACL su un file o una directory. \bodydesc{La funzione restituisce $0$ in caso di successo e $-1$ in caso di errore, nel qual caso \var{errno} assumerà uno dei valori: @@ -3808,12 +3809,20 @@ prima } \end{functions} -La funzione ... - -%TODO: finire - -La seconda funzione che consente di impostare una ACL è \funcd{acl\_set\_fd}, -il cui prototipo è: +La funzione consente di assegnare la ACL contenuta in \param{acl} al file o +alla directory indicate dal pathname \param{path}, mentre con \param{type} si +indica il tipo di ACL utilizzando le constanti di tab.~\ref{tab:acl_type}, ma +si tenga presente che le ACL di default possono essere solo impostate +qualora \param{path} indichi una directory. Inoltre perché la funzione abbia +successo la ACL dovrà essere valida, e contenere tutti le voci necessarie, +unica eccezione è quella in cui si specifica una ACL vuota per cancellare la +ACL di default associata a \func{path}.\footnote{questo però è una estensione + della implementazione delle ACL di Linux, la bozza di standard POSIX.1e + prevedeva l'uso della apposita funzione \funcd{acl\_delete\_def\_file}, che + prende come unico argomento il pathname della directory di cui si vuole + cancellare l'ACL di default, per i dettagli si ricorra alla pagina di + manuale.} La seconda funzione che consente di impostare una ACL è +\funcd{acl\_set\_fd}, ed il suo prototipo è: \begin{functions} \headdecl{sys/types.h} \headdecl{sys/acl.h} @@ -3837,10 +3846,17 @@ il cui prototipo } \end{functions} +La funzione è del tutto è analoga a \funcd{acl\_set\_file} ma opera +esclusivamente sui file identificati tramite un file descriptor. Non dovendo +avere a che fare con directory (e con la conseguente possibilità di avere una +ACL di default) la funzione non necessita che si specifichi il tipo di ACL, +che sarà sempre di accesso, e prende come unico argomento, a parte il file +descriptor, la ACL da impostare. + Le funzioni viste finora operano a livello di una intera ACL, eseguendo in una sola volta tutte le operazioni relative a tutte le voci in essa contenuta. In generale è possibile modificare un singolo valore all'interno di una singola -voce direttamente con le funzioni previste dallo standardo POSIX.1e. Queste +voce direttamente con le funzioni previste dallo standard POSIX.1e. Queste funzioni però sono alquanto macchinose da utilizzare per cui è molto più semplice operare direttamente sulla rappresentazione testuale. Questo è il motivo per non tratteremo nei dettagli dette funzioni, fornendone solo una @@ -3855,7 +3871,7 @@ funzione \funcd{acl\_create\_entry} per una voce da aggiungere. Nel caso della prima funzione si potrà poi ripetere la lettura per ottenere i puntatori alle singole voci successive alla prima. -Una volta ottenuti detti puntatori si porà operare sui contenuti delle singole +Una volta ottenuti detti puntatori si potrà operare sui contenuti delle singole voci; con le funzioni \funcd{acl\_get\_tag\_type}, \funcd{acl\_get\_qualifier}, \funcd{acl\_get\_permset} si potranno leggere rispettivamente tipo, qualificatore e permessi mentre con le corrispondente funzioni @@ -3866,13 +3882,9 @@ vengono utilizzati tipi di dato ad hoc.\footnote{descritti nelle singole ad un altra con \funcd{acl\_copy\_entry} o eliminare una voce da una ACL con \funcd{acl\_delete\_entry}. - - \itindend{Access~Control~List} - -% TODO trattare le ACL, la documentazione di sistema è nei pacchetti -% libacl1-dev e acl +% la documentazione di sistema è nei pacchetti libacl1-dev e acl % vedi anche http://www.suse.de/~agruen/acl/linux-acls/online/ @@ -4002,9 +4014,10 @@ programmi e librerie) di cui il server potrebbe avere bisogno. % LocalWords: fsetxattr flags XATTR REPLACE listxattr llistxattr flistxattr by % LocalWords: removexattr lremovexattr fremovexattr attributename lacl acl % LocalWords: OBJ setfacl len any prefix separator options NUMERIC IDS SMART -% LocalWords: INDENT major number IDE Documentation makedev fopendir proc +% LocalWords: INDENT major number IDE Documentation makedev fopendir proc copy %%% Local Variables: %%% mode: latex %%% TeX-master: "gapil" %%% End: +% LocalWords: euidaccess eaccess delete def tag qualifier permset