From 38e861ad46d836f985323de8667f98f107a07d86 Mon Sep 17 00:00:00 2001 From: Simone Piccardi Date: Wed, 19 Sep 2018 23:31:17 +0200 Subject: [PATCH] Finite ACL, inizio revisione quote --- filedir.tex | 73 ++++++++++++++++++++++++++++------------------------- 1 file changed, 38 insertions(+), 35 deletions(-) diff --git a/filedir.tex b/filedir.tex index 5b00cc8..8874577 100644 --- a/filedir.tex +++ b/filedir.tex @@ -5387,7 +5387,7 @@ devono essere attivate esplicitamente montando il filesystem\footnote{che deve supportarle, ma questo è ormai vero per praticamente tutti i filesystem più comuni, con l'eccezione di NFS per il quale esiste però il supporto per le versioni NFSv2 e NFSv3 del protocollo, con NFSv4 esistono invece delle ACL - native che hannno una semantica diversa, su di esse possono mappare le ACL + native che hanno una semantica diversa, su di esse possono mappare le ACL POSIX, ma l'inverso è possibile solo in forma incompleta.} su cui le si vogliono utilizzare con l'opzione \texttt{acl} attiva. Dato che si tratta di una estensione è infatti opportuno utilizzarle soltanto laddove siano @@ -5799,7 +5799,7 @@ tipo:qualificatore:permessi dove il tipo può essere uno fra \texttt{user}, \texttt{group}, \texttt{other} e \texttt{mask}. Il qualificatore è presente solo per \texttt{user} e \texttt{group} ed indica l'utente o il gruppo a cui la voce si riferisce, -mentrei permessi sono espressi con una tripletta di lettere analoga a quella +mentre i permessi sono espressi con una tripletta di lettere analoga a quella usata per i permessi dei file, 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 @@ -6063,21 +6063,21 @@ usando un file descriptor; i rispettivi prototipi sono: \errval{ENOENT}, \errval{ENOTDIR} per \func{acl\_set\_file}.} \end{funcproto} -Con \func{acl\_set\_file} si assegnara la ACL contenuta in \param{acl} al file -o alla directory indicate da \param{path} con \param{type} che indica il tipo +Con \func{acl\_set\_file} si assegna la ACL contenuta in \param{acl} al file o +alla directory indicate da \param{path}, con \param{type} che indica il tipo di ACL con le costanti di tab.~\ref{tab:acl_type}; si tenga presente però 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, con l'eccezione di quando in -caso di directory si specifica una ACL vuota per cancellare la ACL di default -associata a \param{path}.\footnote{questo però è una estensione della +una directory. Inoltre perché la funzione abbia successo la ACL dovrà essere +valida, e contenere tutti le voci necessarie, con l'eccezione si specifica una +ACL vuota per cancellare la ACL di default associata a \param{path}, valida +solo in caso di directory.\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 \textit{pathname} della directory di cui si vuole cancellare l'ACL di default, per i dettagli si ricorra alla pagina di manuale.} -La seconda funzione, \func{acl\_set\_fd} è del tutto è analoga alla prima, ma +La seconda funzione, \func{acl\_set\_fd}, è del tutto è analoga alla prima, ma non dovendo avere a che fare con directory (e la conseguente possibilità di avere una ACL di default) non necessita che si specifichi il tipo di ACL, che sarà sempre di accesso, e prende come unico argomento, a parte il file @@ -6090,7 +6090,7 @@ 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 -descrizione sommaria; chi fosse interessato potrà ricorrere alle pagine di +descrizione sommaria; chi fosse interessato può ricorrere alle pagine di manuale. Se si vuole operare direttamente sui contenuti di un oggetto di tipo @@ -6101,6 +6101,16 @@ funzione \funcm{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. +\begin{figure}[!htb] + \footnotesize \centering + \begin{minipage}[c]{\codesamplewidth} + \includecodesample{listati/mygetfacl.c} + \end{minipage} + \normalsize + \caption{Corpo principale del programma \texttt{mygetfacl.c}.} + \label{fig:proc_mygetfacl} +\end{figure} + Una volta ottenuti detti puntatori si potrà operare sui contenuti delle singole voci: con le funzioni \funcm{acl\_get\_tag\_type}, \funcm{acl\_get\_qualifier}, \funcm{acl\_get\_permset} si potranno leggere @@ -6119,16 +6129,6 @@ Come esempio di utilizzo di queste funzioni nei sorgenti allegati alla guida si è distribuito il programma \texttt{mygetfacl.c}, che consente di leggere le ACL di un file, passato come argomento. -\begin{figure}[!htb] - \footnotesize \centering - \begin{minipage}[c]{\codesamplewidth} - \includecodesample{listati/mygetfacl.c} - \end{minipage} - \normalsize - \caption{Corpo principale del programma \texttt{mygetfacl.c}.} - \label{fig:proc_mygetfacl} -\end{figure} - La sezione principale del programma, da cui si è rimossa la sezione sulla gestione delle opzioni, è riportata in fig.~\ref{fig:proc_mygetfacl}. Il programma richiede un unico argomento (\texttt{\small 16-20}) che indica il @@ -6154,13 +6154,13 @@ tetti massimi al consumo delle risorse di un filesystem (spazio disco e \textit{inode}) da parte di utenti e gruppi. Dato che la 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 -attivata esplicitamente. 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 +dati degli utenti essa deve essere attivata esplicitamente.\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.} 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 delle quote o sugli utenti o sui gruppi o su entrambi. Il meccanismo prevede che per ciascun filesystem che supporta le quote disco @@ -6224,10 +6224,12 @@ gestione delle quote è \funcd{quotactl}, ed il suo prototipo è: caso \var{errno} assumerà uno dei valori: \begin{errlist} \item[\errcode{EACCES}] si è richiesto \const{Q\_QUOTAON}, ma il file delle - quote indicato da \param{addr} non esiste o non è un file ordinario. + quote indicato da \param{addr} esiste ma non è un file ordinario o no sta + su \param{dev}. \item[\errcode{EBUSY}] si è richiesto \const{Q\_QUOTAON}, ma le quote sono già attive. - \item[\errcode{EFAULT}] \param{addr} non è un puntatore valido. + \item[\errcode{EFAULT}] \param{addr} o \param{dev} non sono un puntatori + validi. \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. @@ -6277,7 +6279,7 @@ macro \macro{QCMD}: } La macro consente di specificare, oltre al tipo di operazione, da indicare con -l'argomento \param{subcmd} se questa deve applicarsi alle quote utente o alle +l'argomento \param{subcmd}, se questa deve applicarsi alle quote utente o alle quote gruppo. Questo viene indicato dall'argomento \param{type} che deve essere sempre definito ed assegnato ad uno fra i due valori \const{USRQUOTA} o \const{GRPQUOTA}. @@ -6451,11 +6453,12 @@ effettuare qualche conversione per avere un valore in byte.\footnote{in genere prestazioni migliori in conseguenza di un minore frazionamento dei dati e di indici più corti.} -Come accennato realizzazione delle quote disco ha visto diverse revisioni, con -modifiche sia del formato delle stesse che dei nomi dei file utilizzate. Per -questo alcune operazioni di gestione (in particolare \const{Q\_QUOTAON} e -\const{Q\_GETFMT}) e possono fare riferimento a queste versioni, che vengono -identificate tramite le costanti di tab.~\ref{tab:quotactl_id_format}. +Come accennato la realizzazione delle quote disco ha visto diverse revisioni, +con modifiche sia del formato delle stesse che dei nomi dei file +utilizzati. Per questo alcune operazioni di gestione (in particolare +\const{Q\_QUOTAON} e \const{Q\_GETFMT}) e possono fare riferimento a queste +versioni, che vengono identificate tramite le costanti di +tab.~\ref{tab:quotactl_id_format}. \begin{table}[htb] \centering -- 2.30.2