X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=filedir.tex;h=f413356e1bbe840c00e38120cae29e80fab32989;hb=0b501298da2110ee71c619dde324bb7a4e04ddda;hp=18bbdc04692e6cb1b66c9ae180762e097dfb203e;hpb=af288d909f7313db7ba2c8092a219695de34821d;p=gapil.git diff --git a/filedir.tex b/filedir.tex index 18bbdc0..f413356 100644 --- a/filedir.tex +++ b/filedir.tex @@ -1,4 +1,4 @@ -4%% filedir.tex +%% filedir.tex %% %% Copyright (C) 2000-2011 Simone Piccardi. Permission is granted to %% copy, distribute and/or modify this document under the terms of the GNU Free @@ -1484,7 +1484,7 @@ il suo prototipo è: \end{errlist}} \end{prototype} -La funzionne genera un nome univoco sostituendo le \code{XXXXXX} finali di +La funzionane genera un nome univoco sostituendo le \code{XXXXXX} finali di \param{template}; dato che \param{template} deve poter essere modificata dalla funzione non si può usare una stringa costante. Tutte le avvertenze riguardo alle possibili \itindex{race~condition} \textit{race condition} date per @@ -1597,7 +1597,7 @@ funzioni \funcd{stat}, \funcd{fstat} e \funcd{lstat}, i cui prototipi sono: \errval{EACCES}, \errval{ENOMEM}, \errval{ENAMETOOLONG}.} \end{functions} -La funzione \func{stat} legge le informazion del file il cui pathname è +La funzione \func{stat} legge le informazioni del file il cui pathname è specificato dalla stringa puntata da \param{file\_name} e le inserisce nel buffer puntato dall'argomento \param{buf}; la funzione \func{lstat} è identica a \func{stat} eccetto che se \param{file\_name} è un link simbolico vengono @@ -1793,9 +1793,9 @@ dimensione si possono usare le due funzioni \funcd{truncate} e \errval{EROFS}, \errval{EIO}, \errval{EFAULT}, \errval{ELOOP}.} \end{functions} -Emtrambe le funzioni fan sì che la dimensione del file sia troncata ad un +Entrambe le funzioni fan sì che la dimensione del file sia troncata ad un valore massimo specificato da \param{length}, e si distinguono solo per il -fatto che il file viene indicato con il pathame \param{file\_name} per +fatto che il file viene indicato con il pathname \param{file\_name} per \func{truncate} e con il file descriptor \param{fd} per \funcd{ftruncate}; se il file è più lungo della lunghezza specificata i dati in eccesso saranno perduti. @@ -1806,7 +1806,7 @@ lunghezza scelta; nel caso di Linux viene esteso con la creazione di un \index{file!\textit{hole}} \textsl{buco} nel \itindex{sparse~file} file e ad una lettura si otterranno degli zeri; si tenga presente però che questo comportamento è supportato solo per filesystem nativi, ad esempio su un -filesystem non nativo come il VFAT di windows questo non è possibile. +filesystem non nativo come il VFAT di Windows questo non è possibile. \subsection{I tempi dei file} \label{sec:file_file_times} @@ -1996,7 +1996,7 @@ I tempi di ultimo accesso e modifica possono essere modificati esplicitamente usando la funzione \funcd{utime}, il cui prototipo è: \begin{prototype}{utime.h} {int utime(const char *filename, struct utimbuf *times)} - Modidica i tempi di ultimo accesso e modifica di un file. + Modifica i tempi di ultimo accesso e modifica di un file. \bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di errore, nel qual caso \var{errno} assumerà uno dei valori: @@ -2058,7 +2058,7 @@ precisione; il suo prototipo è: \begin{prototype} {sys/time.h} {int utimes(const char *filename, struct timeval times[2])} - Modidica i tempi di ultimo accesso e modifica di un file. + Modifica i tempi di ultimo accesso e modifica di un file. \bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di errore, nel qual caso \var{errno} assumerà uno dei valori: @@ -2709,7 +2709,7 @@ in particolare accade che: \end{enumerate} Per alcuni filesystem\footnote{i filesystem più comuni (\textsl{ext2}, - \textsl{ext3}, \textsl{ext4}, \textsl{reiserfs}) supportano questa + \textsl{ext3}, \textsl{ext4}, \textsl{ReiserFS}) supportano questa caratteristica, che è mutuata da BSD.} è inoltre prevista un'ulteriore misura di sicurezza, volta a scongiurare l'abuso dei \itindex{suid~bit} bit \acr{suid} e \acr{sgid}; essa consiste nel cancellare automaticamente questi @@ -4151,30 +4151,32 @@ ad un altra con \funcd{acl\_copy\_entry} o eliminare una voce da una ACL con \label{sec:disk_quota} Quella delle quote disco è una funzionalità introdotta inizialmente da BSD, e -presente in Linux fino dalla serie 2.0, che consente di porre dei tetti -massimi al consumo delle risorse di un filesystem (spazio disco e -\textit{inode}) da parte degli utenti e dei 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 abilitata -esplicitamente, questo si fa tramite due distinte opzioni di montaggio, -\texttt{usrquota} e \texttt{grpquota} che la attivano rispettivamente per gli -utenti e per i gruppi, cosa che consente di abilitare solo quelle che -interessano veramente. - -Il meccanismo delle quote prevede che per ciascun filesystem che le supporta +presente in Linux fino dai kernel dalla serie 2.0, che consente di porre dei +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 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. + +Il meccanismo prevede che per ciascun filesystem che supporta le quote disco (i vari \textit{extN}, \textit{btrfs}, \textit{XFS}, \textit{JFS}, \textit{ReiserFS}) il kernel provveda sia a mantenere aggiornati i dati relativi al consumo delle risorse da parte di utenti e/o gruppi che a far -rispettare i limiti imposti dal sistema con la generazione di un errore di +rispettare i limiti imposti dal sistema, con la generazione di un errore di \errval{EDQUOT} per tutte le operazioni sui file che porterebbero ad un -superamento degli stessi. +superamento degli stessi. Si tenga presente che questi due compiti sono +separati, il primo si attiva al montaggio del filesystem con le quote +attivate, il secondo deve essere abilitato esplicitamente. Per il mantenimento dei dati di consumo delle risorse vengono usati due file riservati (uno per le quote utente e l'altro per le quote gruppo) nella -directory radice del filesytem su cui si sono attivate le quote;\footnote{la - cosa vale per tutti i fileystem tranne \textit{XFS} che mantiene i dati +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 @@ -4182,9 +4184,9 @@ 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 un filesystem su cui sono abilitate le quote -viene utilizzato il comando \cmd{quotacheck} per verificare e aggiornare i -dati. +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 @@ -4202,28 +4204,28 @@ delle quote è \funcd{quotactl}, ed il suo prototipo è: \headdecl{sys/types.h} \headdecl{sys/quota.h} - \funcdecl{quotactl(int cmd, const char *special, int id, caddr\_t addr)} + \funcdecl{quotactl(int cmd, const char *dev, int id, caddr\_t addr)} Esegue una operazione di controllo sulle quote disco. \bodydesc{La funzione restituisce $0$ in caso di successo e $-1$ in caso di errore, nel qual caso \var{errno} assumerà uno dei valori: \begin{errlist} - \item[\errcode{EACCES}] il file delle quote non è un file normale. + \item[\errcode{EACCES}] il file delle quote 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{EIO}] errore di lettura/scrittura sul file delle quote. - \item[\errcode{EMFILE}] non si può aprire il file delle quote avando + \item[\errcode{EMFILE}] non si può aprire il file delle quote avendo superato il limite sul numero di file aperti nel sistema. \item[\errcode{EINVAL}] o \param{cmd} non è un comando valido, - o il dispositivo \param{special} non esiste. - \item[\errcode{ENODEV}] \param{special} non corrisponde ad un \textit{mount + o il dispositivo \param{dev} non esiste. + \item[\errcode{ENODEV}] \param{dev} non corrisponde ad un \textit{mount point} attivo. \item[\errcode{ENOPKG}] il kernel è stato compilato senza supporto per le quote. - \item[\errcode{ENOTBLK}] \param{special} non è un dispositivo a blocchi. - \item[\errcode{EPERM}] il . + \item[\errcode{ENOTBLK}] \param{dev} non è un dispositivo a blocchi. + \item[\errcode{EPERM}] non si hanno i permessi per l'operazione richiesta. \item[\errcode{ESRCH}] è stato richiesto uno fra \const{Q\_GETQUOTA}, \const{Q\_SETQUOTA}, \const{Q\_SETUSE}, \const{Q\_SETQLIM} per un filesystem senza quote attivate. @@ -4231,27 +4233,273 @@ delle quote è \funcd{quotactl}, ed il suo prototipo è: } \end{functions} -La funzione richiede che si indichi il filesystem sul quale si vuole operare -tramite il secondo argomento \param{special} che deve indicare il nome del -file di dispositivo ad esso associato, la funzione richiede che il filesystem -sia montato con il supporto per le quote. Il terzo argomento \param{id} -indica, per le operazioni che lo richiedono l'utente o il gruppo (specificati -rispettivamente per \acr{uid} e \acr{gid}) su cui si vuole operare, infine -l'ultimo argomento specifica l'indirizzo di una struttura dati che dipende di -nuovo dal comando. +La funzione richiede che il filesystem sul quale si vuole operare sia montato +con il supporto delle quote abilitato; esso deve essere specificato con il +nome del file di dispositivo nell'argomento \param{dev}. Per le operazioni che +lo richiedono inoltre si dovrà indicare con l'argomento \param{id} l'utente o +il gruppo (specificati rispettivamente per \acr{uid} e \acr{gid}) su cui si +vuole operare. Alcune operazioni usano l'argomento \param{addr} per indicare +un indirizzo ad un area di memoria il cui utilizzo dipende dall'operazione +stessa. + +Il tipo di operazione che si intende effettuare deve essere indicato tramite +il primo argomento \param{cmd}, questo in genere viene specificato con +l'ausilio della macro \macro{QCMD}: +\begin{functions} + \funcdecl{int QCMD(subcmd,type)} Imposta il comando \param{subcmd} per il + tipo di quote (utente o gruppo) \param{type}. +\end{functions} +\noindent che consente di specificare, oltre al tipo di operazione, se questa +deve applicarsi alle quote utente o alle quote gruppo, nel qual +caso \param{type} deve essere rispettivamente \const{USRQUOTA} o +\const{GRPQUOTA}. -Il funzionamento di \func{quotactl} è controllato dal valore del primo -argomento, che indica l'operazione che si vuole eseguire e se la si vuole -eseguire per le quote disco o le quote gruppo (posto che siano entrm +\begin{table}[htb] + \centering + \footnotesize + \begin{tabular}{|l|p{10cm}|} + \hline + \textbf{Comando} & \textbf{Descrizione} \\ + \hline + \hline + \const{Q\_QUOTAON} & Attiva l'applicazione delle quote disco per il + filesystem indicato da \param{dev}, si deve passare + in \param{addr} il pathname al file che mantiene le + quote, che deve esistere, e \param{id} deve indicare + la versione del formato con uno dei valori di + tab.~\ref{tab:quotactl_id_format}; l'operazione + richiede i privilegi di amministratore.\\ + \const{Q\_QUOTAOFF} & Disattiva l'applicazione delle quote disco per il + filesystem indicato da \param{dev}, \param{id} + e \param{addr} vengono ignorati; l'operazione + richiede i privilegi di amministratore.\\ + \const{Q\_GETQUOTA} & Legge i limiti ed i valori correnti delle quote nel + filesystem indicato da \param{dev} per l'utente o + il gruppo specificato da \param{id}; si devono avere + i privilegi di amministratore per leggere i dati + relativi ad altri utenti o a gruppi di cui non si fa + parte, il risultato viene restituito in una struttura + \struct{dqblk} all'indirizzo indicato + da \param{addr}.\\ + \const{Q\_SETQUOTA} & Imposta i limiti per le quote nel filesystem + indicato da \param{dev} per l'utente o il gruppo + specificato da \param{id} secondo i valori ottenuti + dalla struttura \struct{dqblk} puntata + da \param{addr}; l'operazione richiede i privilegi + di amministratore.\\ + \const{Q\_GETINFO} & Legge le informazioni (in sostanza i \textit{grace + time}) delle quote del filesystem indicato + da \param{dev} sulla struttura \struct{dqinfo} + puntata da \param{addr}, \param{id} viene ignorato.\\ + \const{Q\_SETINFO} & Imposta le informazioni delle quote del filesystem + indicato da \param{dev} come ottenuti dalla + struttura \struct{dqinfo} puntata + da \param{addr}, \param{id} viene ignorato; + l'operazione richiede i privilegi di amministratore.\\ + \const{Q\_GETFMT} & Richiede il valore identificativo (quello di + tab.~\ref{tab:quotactl_id_format}) per il formato + delle quote attualmente in uso sul filesystem + indicato da \param{dev}, che sarà memorizzato + sul buffer di 4 byte puntato da \param{addr}.\\ + \const{Q\_SYNC} & Aggiorna la copia su disco dei dati delle quote del + filesystem indicato da \param{dev}; in questo + caso \param{dev} può anche essere \val{NULL} nel + qual caso verranno aggiornati i dati per tutti i + filesystem con quote attive, \param{id} + e \param{addr} vengono comunque ignorati.\\ + \const{Q\_GETSTATS} & Ottiene statistiche ed altre informazioni generali + relative al sistema delle quote per il filesystem + indicato da \param{dev}, richiede che si + passi come argomento \param{addr} l'indirizzo di una + struttura \struct{dqstats}, mentre i valori + di \param{id} e \param{dev} vengono ignorati; + l'operazione è obsoleta e non supportata nei kernel + più recenti, che espongono la stessa informazione + nei file sotto \procfile{/proc/self/fs/quota/}.\\ +% \const{} & .\\ + \hline + \end{tabular} + \caption{Possibili valori per l'argomento \param{subcommand} di + \macro{QCMD}.} + \label{tab:quotactl_commands} +\end{table} +Le diverse operazioni supportate da \func{quotactl}, da indicare con +l'argomento \param{subcmd} di \macro{QCMD}, sono riportate in +tab.~\ref{tab:quotactl_commands}. In generale le operazione di attivazione, +disattivazione e di modifica dei limiti delle quote sono riservate e +richiedono i privilegi di amministratore.\footnote{per essere precisi tutte le + operazionie indicate come privilegiate in tab.~\ref{tab:quotactl_commands} + richiedono la \textit{capability} \const{CAP\_SYS\_ADMIN}.} Inoltre gli +utenti possono soltanto richiedere i dati relativi alle proprie quote, solo +l'amministratore può ottenere i dati di tutti. -% TODO trattare quote disco -% vedi man quotactl +\begin{table}[htb] + \centering + \footnotesize + \begin{tabular}{|l|p{10cm}|} + \hline + \textbf{Identificatore} & \textbf{Descrizione} \\ + \hline + \hline + \const{QFMT\_VFS\_OLD}& il vecchio (ed obsoleto) formato delle quote.\\ + \const{QFMT\_VFS\_V0} & la versione 0 usata dal VFS di Linux (supporta + \acr{uid} e \acr{gis} a 32 bit e limiti fino a + $2^{42}$ byte e $2^{32}$ file.\\ + \const{QFMT\_VFS\_V1} & la versione 1 usata dal VFS di Linux (supporta + \acr{uid} e \acr{gis} a 32 bit e limiti fino a + $2^{64}$ byte e $2^{64}$ file.\\ + \hline + \end{tabular} + \caption{Valori di identificazione del formato delle quote.} + \label{tab:quotactl_id_format} +\end{table} + +Alcuni dei comandi di tab.~\ref{tab:quotactl_commands} sono alquanto complessi +e richiedono un approfondimento maggiore, in particolare \const{Q\_GETQUOTA} e +\const{Q\_SETQUOTA} fanno riferimento ad una specifica struttura +\struct{dqblk}, la cui definizione è riportata in +fig.~\ref{fig:dqblk_struct},\footnote{la definizione mostrata è quella usata + fino dal kernel 2.4.22, non prenderemo in considerazione le versioni + obsolete.} nella quale vengono inseriti i dati relativi alle quote di un +singolo utente. + +\begin{figure}[!htb] + \footnotesize \centering + \begin{minipage}[c]{15cm} + \includestruct{listati/dqblk.h} + \end{minipage} + \normalsize + \caption{La struttura \structd{dqblk} per i dati delle quote disco.} + \label{fig:dqblk_struct} +\end{figure} + +La struttura viene usata sia con \const{Q\_GETQUOTA} per ottenere i valori +correnti dei limiti e dell'occupazione delle risorse, che con +\const{Q\_SETQUOTA} per effettuare modifiche ai limiti; come si può notare ci +sono alcuni campi (in sostanza \val{dqb\_curspace}, \val{dqb\_curinodes}, +\val{dqb\_btime}, \val{dqb\_itime}) che hanno senso solo in lettura in quanto +riportano uno stato non modificabile da \func{quotactl}, come l'uso corrente +di spazio e \textit{inode} o il tempo che resta nel caso si sia superato un +\textit{soft limit}. + +\begin{table}[htb] + \centering + \footnotesize + \begin{tabular}{|l|p{10cm}|} + \hline + \textbf{Costante} & \textbf{Descrizione} \\ + \hline + \hline + \const{QIF\_BLIMITS}& Limiti sui blocchi di + spazio disco (\val{dqb\_bhardlimit} e + \val{dqb\_bsoftlimit}).\\ + \const{QIF\_SPACE} & Uso corrente + dello spazio disco (\val{dqb\_curspace}).\\ + \const{QIF\_ILIMITS}& Limiti sugli \textit{inode} + (\val{dqb\_ihardlimit} e \val{dqb\_isoftlimit}).\\ + \const{QIF\_INODES} & Uso corrente + degli \textit{inode} (\val{dqb\_curinodes}).\\ + \const{QIF\_BTIME} & Tempo di + sforamento del \textit{soft limit} sul numero di + blocchi (\val{dqb\_btime}).\\ + \const{QIF\_ITIME} & Tempo di + sforamento del \textit{soft limit} sul numero di + \textit{inode} (\val{dqb\_itime}).\\ + \const{QIF\_LIMITS} & L'insieme di \const{QIF\_BLIMITS} e + \const{QIF\_ILIMITS}.\\ + \const{QIF\_USAGE} & L'insieme di \const{QIF\_SPACE} e + \const{QIF\_INODES}.\\ + \const{QIF\_TIMES} & L'insieme di \const{QIF\_BTIME} e + \const{QIF\_ITIME}.\\ + \const{QIF\_ALL} & Tutti i precedenti.\\ + \hline + \end{tabular} + \caption{Costanti per il campo \val{dqb\_valid} di \struct{dqblk}.} + \label{tab:quotactl_qif_const} +\end{table} + + +Inoltre in caso di modifica di un limite si può voler operare solo su una +delle risorse (blocchi o \textit{inode});\footnote{non è possibile modificare + soltanto uno dei limiti (\textit{hard} o \textit{soft}, occorre sempre + rispecificarli entrambi.} per questo la struttura prevede un campo apposito, +\val{dqb\_valid}, il cui scopo è quello di indicare quali sono gli altri campi +che devono essere considerati validi. Questo campo è una maschera binaria che +deve essere espressa nei termini di OR aritmetico delle apposite costanti di +tab.~\ref{tab:quotactl_qif_const}, dove si è riportato il significato di +ciascuna di esse ed i campi a cui fanno riferimento. + +In lettura con \const{Q\_SETQUOTA} eventuali valori presenti in \struct{dqblk} +vengono comunque ignorati, al momento la funzione sovrascrive tutti i campi e +li marca come validi in \val{dqb\_valid}. Si possono invece usare +\const{QIF\_BLIMITS} o \const{QIF\_ILIMITS} per richiedere di impostare solo +la rispettiva tipologia di limiti con \const{Q\_SETQUOTA}. Si tenga presente +che il sistema delle quote richiede che l'occupazione di spazio disco sia +indicata in termini di blocchi e non di byte; dato che questo dipende da come +si è creato il filesystem potrà essere necessario effettuare qualche +controllo.\footnote{in genere viene usato un default di 1024 byte per blocco, + ma quando si hanno file di dimensioni medie maggiori può convenire usare + valori più alti per ottenere prestazioni migliori in conseguenza di un + minore frazionamento dei dati e di indici più corti.} + +Altre due operazioni che necessitano di un approfondimento sono +\const{Q\_GETINFO} e \const{Q\_SETINFO}, che sostanzialmente consentono di +ottenere i dati relativi alle impostazioni delle altre proprietà delle quote, +che si riducono poi alla durata del \textit{grace time} per i due tipi di +limiti. In questo caso queste si proprietà generali sono identiche per tutti +gli utenti, per cui viene usata una operazione distinta dalle +precedenti. Anche in questo caso le due operazioni richiedono l'uso di una +apposita struttura \struct{dqinfo}, la cui definizione è riportata in +fig.~\ref{fig:dqinfo_struct}. + +\begin{figure}[!htb] + \footnotesize \centering + \begin{minipage}[c]{15cm} + \includestruct{listati/dqinfo.h} + \end{minipage} + \normalsize + \caption{La struttura \structd{dqinfo} per i dati delle quote disco.} + \label{fig:dqinfo_struct} +\end{figure} + +Come per \struct{dqblk} anche in questo caso viene usato un campo della +struttura, \val{dqi\_valid} come maschera binaria per dichiarare quale degli +altri campi sono validi; le costanti usate per comporre questo valore sono +riportate in tab.~\ref{tab:quotactl_iif_const} dove si è riportato il +significato di ciascuna di esse ed i campi a cui fanno riferimento. + +\begin{table}[htb] + \centering + \footnotesize + \begin{tabular}{|l|l|} + \hline + \textbf{Costante} & \textbf{Descrizione} \\ + \hline + \hline + \const{IIF\_BGRACE}& Il \textit{grace period} per i blocchi + (\val{dqi\_bgrace}).\\ + \const{IIF\_IGRACE}& Il \textit{grace period} per gli \textit{inode} + (\val{dqi\_igrace}).\\ + \const{IIF\_FLAGS} & I flag delle quote (\val{dqi\_flags}) (inusato ?).\\ + \const{IIF\_ALL} & Tutti i precedenti.\\ + \hline + \end{tabular} + \caption{Costanti per il campo \val{dqi\_valid} di \struct{dqinfo}.} + \label{tab:quotactl_iif_const} +\end{table} +Come in precedenza con \const{Q\_GETINFO} tutti i valori vengono letti +sovrascrivendo il contenuto di \struct{dqinfo} e marcati come validi in +\val{dqi\_valid}. In scrittura con \const{Q\_SETINFO} si può scegliere quali +impostare, si tenga presente che i tempi dei campi \val{dqi\_bgrace} e +\val{dqi\_igrace} devono essere specificati in secondi. +% TODO trattare quote disco +% vedi man quotactl \subsection{La gestione delle \textit{capabilities}} \label{sec:proc_capabilities} @@ -4302,8 +4550,8 @@ livello di sistema operativo, come \index{SELinux} SELinux. Con questo supporto e con le ulteriori modifiche introdotte con il kernel 2.6.25 il meccanismo delle \textit{capabilities} è stato totalmente -rivoluzionato, rendendolo più aderente alle intezioni originali dello standard -POSIX, rimovendo il significato che fino ad allora aveva avuto la capacità +rivoluzionato, rendendolo più aderente alle intenzioni originali dello standard +POSIX, rimuovendo il significato che fino ad allora aveva avuto la capacità \macro{CAP\_SETPCAP} e le modalità di funzionamento del cosiddetto \itindex{capabilities~bounding~set} \textit{capabilities bounding set}. Ulteriori modifiche sono state apportate con il kernel 2.6.26 per @@ -4333,7 +4581,7 @@ L'utilizzo di tre distinti insiemi serve a fornire una interfaccia flessibile per l'uso delle \textit{capabilities}, con scopi analoghi a quelli per cui sono mantenuti i diversi insiemi di identificatori di sez.~\ref{sec:proc_setuid}; il loro significato, che è rimasto sostanzialmente -lo stesso anche dopo le modifiche seguite alla instroduzione delle +lo stesso anche dopo le modifiche seguite alla introduzione delle \textit{file capabilities} è il seguente: \begin{basedescript}{\desclabelwidth{2.1cm}\desclabelstyle{\nextlinelabel}} \item[\textit{permitted}] l'insieme delle \textit{capabilities} @@ -4364,7 +4612,7 @@ altri tre insiemi associabili a ciascun file.\footnote{la realizzazione viene soltanto quando il file che le porta viene eseguito come programma con una \func{exec}, e forniscono un meccanismo che consente l'esecuzione dello stesso con maggiori privilegi; in sostanza sono una sorta di estensione dell'uso del -\acr{suid} di root. Anche questi tre insiemi sono identicati con gli stessi +\acr{suid} di root. Anche questi tre insiemi sono identificati con gli stessi nomi, ma il loro significato è diverso: \begin{basedescript}{\desclabelwidth{2.1cm}\desclabelstyle{\nextlinelabel}} \item[\textit{permitted}] (chiamato originariamente \textit{forced}) l'insieme @@ -4413,7 +4661,7 @@ non sarà più disponibile per nessun processo a meno di un riavvio, eliminando così in forma definitiva quella capacità per tutti, compreso l'amministratore.\footnote{la qual cosa, visto il default usato per il \textit{capabilities bounding set}, significa anche che \const{CAP\_SETPCAP} - non è stata praticamente mai usata nella sua forma orginale.} + non è stata praticamente mai usata nella sua forma originale.} Con il kernel 2.6.25 e le \textit{file capabilities} il \textit{bounding set} è diventato una proprietà di ciascun processo, che viene propagata invariata @@ -4731,7 +4979,7 @@ messaggi delle code del SysV IPC (vedi sez.~\ref{sec:ipc_sysv_mq}). Questo modo di intendere ... da fare ... per cui a partire dal 2.6.24/5 è divenuta quella di impostare una capacità del -\textit{bounding set} nelle proprie \textit{inheritable} o rimoverla dal +\textit{bounding set} nelle proprie \textit{inheritable} o rimuoverla dal \textit{bounding set} stesso. Per la gestione delle \textit{capabilities} il kernel mette a disposizione due @@ -5261,15 +5509,15 @@ programmi e librerie) di cui il server potrebbe avere bisogno. % LocalWords: int const char oldpath newpath errno EXDEV EPERM st Smack SysV % LocalWords: EEXIST EMLINK EACCES ENAMETOOLONG ENOTDIR EFAULT ENOMEM EROFS ls % LocalWords: ELOOP ENOSPC EIO pathname nlink stat vfat fsck EISDIR ENOENT cap -% LocalWords: POSIX socket fifo sticky root system call count crash nell' init +% LocalWords: POSIX socket fifo sticky root system call count crash init linux % LocalWords: descriptor remove rename rmdir stdio glibc libc NFS DT obj dup % LocalWords: ENOTEMPTY EBUSY mount point EINVAL soft symbolic tab symlink fig % LocalWords: dangling access chdir chmod chown creat exec lchown lstat mkdir % LocalWords: mkfifo mknod opendir pathconf readlink truncate path buff size -% LocalWords: grub bootloader grep linux MAXSYMLINKS cat VFS sys dirname fcntl +% LocalWords: grub bootloader grep MAXSYMLINKS cat VFS sys dirname fcntl % LocalWords: dev umask IFREG IFBLK IFCHR IFIFO SVr sgid BSD SVID NULL from to % LocalWords: stream dirent EMFILE ENFILE dirfd SOURCE fchdir readdir struct -% LocalWords: EBADF namlen HAVE thread entry result value argument fileno ino +% LocalWords: EBADF namlen HAVE thread entry result value argument fileno % LocalWords: name TYPE OFF RECLEN UNKNOWN REG SOCK CHR BLK type IFTODT DTTOIF % LocalWords: DTYPE off reclen seekdir telldir void rewinddir closedir select % LocalWords: namelist compar malloc qsort alphasort versionsort strcoll myls @@ -5279,21 +5527,21 @@ programmi e librerie) di cui il server potrebbe avere bisogno. % LocalWords: EINTR mktemp mkstemp stlib template filename XXXXXX OpenBSD buf % LocalWords: mkdtemp fstat filedes nell'header padding ISREG ISDIR ISCHR IFMT % LocalWords: ISBLK ISFIFO ISLNK ISSOCK IFSOCK IFLNK IFDIR ISUID UID ISGID GID -% LocalWords: ISVTX IRUSR IWUSR IXUSR IRGRP IWGRP IXGRP IROTH IWOTH IXOTH du -% LocalWords: blocks blksize holes lseek TRUNC ftruncate length lenght ETXTBSY +% LocalWords: ISVTX IRUSR IWUSR IXUSR IRGRP IWGRP IXGRP IROTH IWOTH IXOTH +% LocalWords: blocks blksize holes lseek TRUNC ftruncate ETXTBSY length % LocalWords: hole atime read utime mtime write ctime modification leafnode cp % LocalWords: make fchmod fchown utimbuf times actime modtime Mac owner uid fs % LocalWords: gid Control List patch mandatory control execute group other all -% LocalWords: dell' effective passwd IGID locking swap saved text IRWXU IRWXG -% LocalWords: IRWXO ext reiser capability FSETID mask capabilities chroot jail -% LocalWords: FTP Di filter reiserfs Attributes Solaris FreeBSD libacl hash +% LocalWords: effective passwd IGID locking swap saved text IRWXU IRWXG +% LocalWords: IRWXO capability FSETID mask capabilities chroot jail +% LocalWords: FTP filter Attributes Solaris FreeBSD libacl hash at % LocalWords: XFS SELinux namespace attribute security trusted Draft Modules % LocalWords: attributes mime ADMIN FOWNER libattr lattr getxattr lgetxattr of % 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 tv +% LocalWords: removexattr lremovexattr fremovexattr attributename acl % LocalWords: OBJ setfacl len any prefix separator options NUMERIC IDS SMART -% LocalWords: INDENT major number IDE Documentation makedev proc copy +% LocalWords: INDENT major number IDE Documentation makedev proc copy LNK long % LocalWords: euidaccess eaccess delete def tag qualifier permset calendar NOW % LocalWords: mutt noatime relatime strictatime atim nsec mtim ctim atimensec % LocalWords: mtimensec utimes timeval futimes lutimes ENOSYS futimens OMIT @@ -5306,8 +5554,13 @@ programmi e librerie) di cui il server potrebbe avere bisogno. % LocalWords: LEASE lease SETFCAP AUDIT permitted inherited inheritable AND % LocalWords: bounding execve fork capget capset header hdrp datap ESRCH undef % LocalWords: version libcap lcap clear ncap caps pag capgetp CapInh CapPrm -% LocalWords: fffffeff CapEff getcap dell'IPC scheduling dell'I lookup dcookie +% LocalWords: fffffeff CapEff getcap scheduling lookup % LocalWords: NEWNS unshare nice NUMA ioctl journaling close XOPEN fdopendir +% LocalWords: btrfs mkostemp extN ReiserFS JFS Posix usrquota grpquota EDQUOT +% LocalWords: aquota quotacheck limit grace period quotactl cmd caddr addr +% LocalWords: QUOTAON ENODEV ENOPKG ENOTBLK GETQUOTA SETQUOTA SETUSE SETQLIM +% LocalWords: forced allowed sendmail SYSLOG WAKE ALARM CLOCK BOOTTIME +% LocalWords: REALTIME securebits %%% Local Variables: %%% mode: latex