From fc24bf1eb54950ec4cf5a3955f5ce730d24e5255 Mon Sep 17 00:00:00 2001 From: Simone Piccardi Date: Fri, 27 Jan 2012 02:28:31 +0000 Subject: [PATCH] Correzioni --- filedir.tex | 113 +++++++++++++++++++++++++++------------------------- 1 file changed, 59 insertions(+), 54 deletions(-) diff --git a/filedir.tex b/filedir.tex index e84514d..11a25fc 100644 --- a/filedir.tex +++ b/filedir.tex @@ -5406,7 +5406,7 @@ attraverso una chiamata alla funzione \funcd{acl\_free}, il cui prototipo è: } {La funzione ritorna $0$ in caso di successo e $-1$ per un errore, nel qual - caso \var{errno} assumerà il valore: + caso \var{errno} può assumere solo il valore: \begin{errlist} \item[\errcode{EINVAL}] \param{obj\_p} non è valido. \end{errlist} @@ -5471,8 +5471,8 @@ di permessi ordinari, il prototipo della funzione è: } {La funzione ritorna un oggetto di tipo \type{acl\_t} in caso di successo e - \val{NULL} per un errore, nel qual caso \var{errno} potra assumere - solo il valore \errval{ENOMEM} nel suo significato generico.} + \val{NULL} per un errore, nel qual caso \var{errno} può assumere solo + il valore \errval{ENOMEM}.} \end{funcproto} @@ -5501,12 +5501,14 @@ sono: dei valori: \begin{errlist} \item[\errcode{ENOMEM}] non c'è memoria sufficiente per allocare i dati. + \item[\errcode{EINVAL}] \param{type} non ha un valore valido (solo per + \func{acl\_get\_file}). \item[\errcode{ENOTSUP}] il filesystem cui fa riferimento il file non supporta le ACL. \end{errlist} - ed inoltre \errval{EBADF} per \func{acl\_get\_fd}, ed \errval{EINVAL} per - valori scorretti di \param{type} e tutti i possibili errori per l'accesso ad - un file per \func{acl\_get\_file}. } + ed inoltre \errval{EBADF} per \func{acl\_get\_fd}, e \errval{EACCES}, + \errval{ENAMETOOLONG}, \errval{ENOENT}, \errval{ENOTDIR}, per + \func{acl\_get\_file}. } \end{funcproto} Le due funzioni ritornano, con un oggetto di tipo \type{acl\_t}, il valore @@ -5560,8 +5562,7 @@ testuale con la funzione \funcd{acl\_from\_text}, il cui prototipo è: \item[\errcode{EINVAL}] la rappresentazione testuale all'indirizzo \param{buf\_p} non è valida. \end{errlist} - ed inoltre -nel loro significato generico.} +} \end{funcproto} La funzione prende come argomento il puntatore ad un buffer dove si è inserita @@ -5586,7 +5587,17 @@ permessi sono espressi con una tripletta di lettere analoga a quella usata per 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.} + l'assenza del permesso.} + +Un possibile esempio di rappresentazione della ACL di un file ordinario a cui, +oltre ai permessi ordinari, si è aggiunto un altro utente con un accesso in +lettura, è il seguente: +\begin{Example} +user::rw- +group::r-- +other::r-- +user:piccardi:r-- +\end{Example} Va precisato che i due tipi \texttt{user} e \texttt{group} sono usati rispettivamente per indicare delle voci relative ad utenti e @@ -5606,8 +5617,8 @@ iniziali dei valori usati nella forma estesa (cioè ``\texttt{u}'', 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 è: +testuale di una ACL, sono invece disponibili due funzioni. La prima delle due, +di uso più immediato, è \funcd{acl\_to\_text}, ed il suo prototipo è: \begin{funcproto}{ \fhead{sys/types.h} @@ -5635,9 +5646,10 @@ intera in questa verrà restituita (come \itindex{value~result~argument} \textit{value result argument}) 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 è: +La seconda funzione, che permette di controllare con dovizia di dettagli la +generazione della stringa contenente la rappresentazione testuale della ACL, è +\funcd{acl\_to\_any\_text}, ed il suo prototipo è: + \begin{funcproto}{ \fhead{sys/types.h} \fhead{sys/acl.h} @@ -5733,23 +5745,16 @@ buffer di dimensione sufficiente, il suo prototipo è: {La funzione ritorna la dimensione in byte della rappresentazione binaria della ACL in caso di successo e $-1$ per un errore, nel qual caso - \var{errno} assumerà uno dei valori: + \var{errno} può assumere solo il valore: \begin{errlist} \item[\errcode{EINVAL}] la ACL indicata da \param{acl} non è valida. \end{errlist} } \end{funcproto} -Prima di effettuare la lettura della rappresentazione binaria è sempre -necessario allocare un buffer di dimensione sufficiente a contenerla, pertanto -prima si dovrà far ricorso a \funcd{acl\_size} per ottenere tale dimensione e -poi allocare il buffer con una delle funzioni di -sez.~\ref{sec:proc_mem_alloc}. Una volta terminato l'uso della -rappresentazione binaria, il buffer dovrà essere esplicitamente disallocato, -in questo caso con \func{free}. - -La funzione che consente di leggere la rappresentazione binaria di una ACL è -\funcd{acl\_copy\_ext}, il cui prototipo è: +Ottenuta con \func{acl\_size} la dimensione per il buffer lo si potrà allocare +direttamente con \func{malloc}. La rappresentazione binaria di una ACL si +potrà poi ottenere con la funzione \funcd{acl\_copy\_ext}, il cui prototipo è: \begin{funcproto}{ \fhead{sys/types.h} @@ -5770,22 +5775,22 @@ La funzione che consente di leggere la rappresentazione binaria di una ACL è } \end{funcproto} -La funzione salverà la rappresentazione binaria della ACL indicata da -\param{acl} sul buffer posto all'indirizzo \param{buf\_p} e lungo \param{size} -byte, restituendo la dimensione della stessa come valore di ritorno. Qualora -la dimensione della rappresentazione ecceda il valore di \param{size} la -funzione fallirà con un errore di \errcode{ERANGE}. La funzione non ha nessun -effetto sulla ACL indicata da \param{acl}. +La funzione scriverà la rappresentazione binaria della ACL indicata da +\param{acl} sul buffer di dimensione \param{size} +all'indirizzo \param{buf\_p}, restituendo la dimensione della stessa come +valore di ritorno. Qualora la dimensione della rappresentazione ecceda il +valore di \param{size} la funzione fallirà con un errore di +\errcode{ERANGE}. La funzione non ha nessun effetto sulla ACL indicata +da \param{acl}. -Viceversa se si vuole ripristinare una ACL a partire dalla rappresentazione -binaria della stessa disponibile in un buffer si potrà usare la funzione -\funcd{acl\_copy\_int}, il cui prototipo è: +Viceversa se si vuole ripristinare una ACL a partire da una rappresentazione +binaria si potrà usare la funzione \funcd{acl\_copy\_int}, il cui prototipo è: \begin{funcproto}{ \fhead{sys/types.h} \fhead{sys/acl.h} \fdecl{acl\_t acl\_copy\_int(const void *buf\_p)} -\fdesc{.} +\fdesc{Ripristina la rappresentazione binaria di una ACL.} } {La funzione ritorna un oggetto di tipo \type{acl\_t} in caso di successo e @@ -5799,12 +5804,10 @@ binaria della stessa disponibile in un buffer si potrà usare la funzione } \end{funcproto} -La funzione in caso di successo alloca autonomamente un oggetto di tipo -\type{acl\_t} che viene restituito come valore di ritorno con il contenuto -della ACL rappresentata dai dati contenuti nel buffer puntato da -\param{buf\_p}. Si ricordi che come per le precedenti funzioni l'oggetto -\type{acl\_t} dovrà essere disallocato esplicitamente al termine del suo -utilizzo. +La funzione alloca autonomamente un oggetto di tipo \type{acl\_t}, restituito +come valore di ritorno, con il contenuto della ACL rappresentata dai dati del +buffer puntato da \param{buf\_p}. Al solito l'oggetto \type{acl\_t} dovrà +essere disallocato esplicitamente al termine del suo utilizzo. Una volta che si disponga della ACL desiderata, questa potrà essere impostata su un file o una directory. Per impostare una ACL sono disponibili due @@ -5923,10 +5926,11 @@ funzionalità ha senso solo per i filesystem su cui si mantengono i dati degli utenti\footnote{in genere la si attiva sul filesystem che contiene le \textit{home} degli utenti, dato che non avrebbe senso per i file di sistema che in genere appartengono all'amministratore.} essa deve essere -esplicitamente richiesta; questo si fa tramite due distinte opzioni di -montaggio, \texttt{usrquota} e \texttt{grpquota} che abilitano le quote -rispettivamente per gli utenti e per i gruppi. Grazie a questo è possibile -usare le limitazioni sulle quote solo sugli utenti o solo sui gruppi. +esplicitamente richiesta. Questo si fa, per tutti i filesystem che le +supportano, tramite due distinte opzioni di montaggio, \texttt{usrquota} e +\texttt{grpquota} che abilitano le quote rispettivamente per gli utenti e per +i gruppi. Così è possibile usare le limitazioni sulle quote o sugli utenti o +sui gruppi o su entrambi. Il meccanismo prevede che per ciascun filesystem che supporta le quote disco (i vari \textit{extN}, \textit{btrfs}, \textit{XFS}, \textit{JFS}, @@ -5944,14 +5948,15 @@ directory radice del filesystem su cui si sono attivate le quote;\footnote{la cosa vale per tutti i filesystem tranne \textit{XFS} che mantiene i dati internamente.} con la versione 2 del supporto delle quote, l'unica rimasta in uso, questi file sono \texttt{aquota.user} e \texttt{aquota.group}, in -precedenza erano \texttt{quota.user} e \texttt{quota.group}. Dato che i file -vengono aggiornati soltanto se il filesystem è stato montato con il supporto -delle quote, se si abilita questo in un secondo tempo (o se si eseguono -operazioni sul filesystem senza averlo abilitato) i dati contenuti possono non -corrispondere esattamente allo stato corrente del consumo delle risorse; per -questo in genere prima di montare in scrittura un filesystem su cui sono -abilitate le quote in genere viene utilizzato il comando \cmd{quotacheck} per -verificare e aggiornare i dati. +precedenza erano \texttt{quota.user} e \texttt{quota.group}. + +Dato che i file vengono aggiornati soltanto se il filesystem è stato montato +con il supporto delle quote, se si abilita questo in un secondo tempo, o se si +eseguono operazioni sul filesystem senza averlo abilitato, i dati contenuti +possono non corrispondere esattamente allo stato corrente del consumo delle +risorse. Per questo in genere prima di montare in scrittura un filesystem su +cui sono abilitate le quote in genere viene utilizzato il comando +\cmd{quotacheck} per verificare e aggiornare i dati. Le restrizioni sul consumo delle risorse prevedono due limiti, il primo viene detto \textit{soft limit} e può essere superato per brevi periodi di tempo, il @@ -5980,7 +5985,6 @@ gestione delle quote è \funcd{quotactl}, ed il suo prototipo è: quote indicato da \param{addr} non esiste o non è un file ordinario. \item[\errcode{EBUSY}] si è richiesto \const{Q\_QUOTAON}, ma le quote sono già attive. - \item[\errcode{EFAULT}] l'indirizzo \param{addr} non è valido. \item[\errcode{EINVAL}] o \param{cmd} non è un comando valido, o il dispositivo \param{dev} non esiste. \item[\errcode{EIO}] errore di lettura/scrittura sul file delle quote. @@ -5996,6 +6000,7 @@ gestione delle quote è \funcd{quotactl}, ed il suo prototipo è: \const{Q\_SETQUOTA}, \const{Q\_SETUSE}, \const{Q\_SETQLIM} per un filesystem senza quote attivate. \end{errlist} + ed inoltre \errval{EFAULT} e nel suo significato generico. } \end{funcproto} -- 2.30.2