X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=filedir.tex;h=369a396168df76be28ba1900f4d7fcd7e5ff42c8;hp=5bf70964b66b52774db287d41342556f87f8edc9;hb=bea2fb49cde45c3841bffac4769d095c82a1c40e;hpb=be0113897fdc6774f0dcc3f9c91fe5e76c5dd0a5 diff --git a/filedir.tex b/filedir.tex index 5bf7096..369a396 100644 --- a/filedir.tex +++ b/filedir.tex @@ -1,6 +1,6 @@ %% filedir.tex %% -%% Copyright (C) 2000-2015 Simone Piccardi. Permission is granted to +%% Copyright (C) 2000-2018 Simone Piccardi. Permission is granted to %% copy, distribute and/or modify this document under the terms of the GNU Free %% Documentation License, Version 1.1 or any later version published by the %% Free Software Foundation; with the Invariant Sections being "Un preambolo", @@ -107,7 +107,7 @@ restituisce una \textit{dentry}, abbreviazione che sta per \textit{directory entry}. Le \textit{dentry} sono gli oggetti che il kernel usa per eseguire la \textit{pathname resolution}, ciascuna di esse corrisponde ad un \textit{pathname} e contiene il riferimento ad un \textit{inode}, che come -vedremo a breve è l'oggetto usato dal kernel per identificare un un +vedremo a breve è l'oggetto usato dal kernel per identificare un file.\footnote{in questo caso si parla di file come di un qualunque oggetto generico che sta sul filesystem e non dell'oggetto file del VFS cui accennavamo prima.} La \textit{dentry} ottenuta dalla chiamata alla funzione @@ -232,7 +232,7 @@ tab.~\ref{tab:file_inode_operations} le più rilevanti. \hline \end{tabular} \caption{Le principali operazioni sugli \textit{inode} definite tramite - \kstruct{inode\_operation}.} + \kstructd{inode\_operation}.} \label{tab:file_inode_operations} \end{table} @@ -328,7 +328,7 @@ tab.~\ref{tab:file_file_operations} le più significative. sez.~\ref{sec:file_asyncronous_io}) sul file.\\ \hline \end{tabular} - \caption{Operazioni sui file definite tramite \kstruct{file\_operation}.} + \caption{Operazioni sui file definite tramite \kstructd{file\_operation}.} \label{tab:file_file_operations} \end{table} @@ -345,11 +345,11 @@ Il VFS realizza la quasi totalità delle operazioni relative ai file grazie alle funzioni presenti nelle due strutture \kstruct{inode\_operation} e \kstruct{file\_operation}. Ovviamente non è detto che tutte le operazioni possibili siano poi disponibili in tutti i casi, ad esempio \code{llseek} non -sarà presente per un dispositivo come la porta seriale o per una fifo, mentre -sui file del filesystem \texttt{vfat} non saranno disponibili i permessi, ma -resta il fatto che grazie al VFS le \textit{system call} per le operazioni sui -file possono restare sempre le stesse nonostante le enormi differenze che -possono esserci negli oggetti a cui si applicano. +sarà presente per un dispositivo come la porta seriale o per una +\textit{fifo}, mentre sui file del filesystem \texttt{vfat} non saranno +disponibili i permessi, ma resta il fatto che grazie al VFS le \textit{system + call} per le operazioni sui file possono restare sempre le stesse nonostante +le enormi differenze che possono esserci negli oggetti a cui si applicano. \itindend{Virtual~File~System~(VFS)} @@ -1692,11 +1692,11 @@ La funzione elimina il nome specificato dall'argomento \param{pathname} nella directory che lo contiene e decrementa il numero di riferimenti nel relativo \textit{inode}.\footnote{come per \func{link} queste due operazioni sono effettuate all'interno della \textit{system call} in maniera atomica.} Nel -caso di socket, fifo o file di dispositivo rimuove il nome, ma come per i file -normali i processi che hanno aperto uno di questi oggetti possono continuare -ad utilizzarli. Nel caso di cancellazione di un collegamento simbolico, che -consiste solo nel rimando ad un altro file, questo viene immediatamente -eliminato. +caso di socket, \textit{fifo} o file di dispositivo rimuove il nome, ma come +per i file normali i processi che hanno aperto uno di questi oggetti possono +continuare ad utilizzarli. Nel caso di cancellazione di un collegamento +simbolico, che consiste solo nel rimando ad un altro file, questo viene +immediatamente eliminato. Per cancellare una voce in una directory è necessario avere il permesso di scrittura su di essa, dato che si va a rimuovere una voce dal suo contenuto, e @@ -2005,7 +2005,7 @@ sez.~\ref{sec:files_std_interface}. La prima funzione di questa interfaccia è \end{funcproto} La funzione apre un \textit{directory stream} per la directory -\param{dirname}, ritornando il puntatore ad un oggetto di tipo \type{DIR} (che +\param{dirname}, ritornando il puntatore ad un oggetto di tipo \typed{DIR} (che è il tipo opaco usato dalle librerie per gestire i \textit{directory stream}) da usare per tutte le operazioni successive, la funzione inoltre posiziona lo \textit{stream} sulla prima voce contenuta nella directory. @@ -2211,8 +2211,8 @@ sez.~\ref{sec:sys_file_limits}) più un ulteriore carattere per la terminazione della stringa. Per quanto riguarda il significato dei campi opzionali, il campo \var{d\_type} -indica il tipo di file (se fifo, directory, collegamento simbolico, ecc.), e -consente di evitare una successiva chiamata a \func{lstat} (vedi +indica il tipo di file (se \textit{fifo}, directory, collegamento simbolico, +ecc.), e consente di evitare una successiva chiamata a \func{lstat} (vedi sez.~\ref{sec:file_stat}) per determinarlo. I suoi possibili valori sono riportati in tab.~\ref{tab:file_dtype_macro}. Si tenga presente che questo valore è disponibile solo per i filesystem che ne supportano la restituzione @@ -2234,7 +2234,7 @@ valore è disponibile solo per i filesystem che ne supportano la restituzione \constd{DT\_REG} & File normale.\\ \constd{DT\_DIR} & Directory.\\ \constd{DT\_LNK} & Collegamento simbolico.\\ - \constd{DT\_FIFO} & Fifo.\\ + \constd{DT\_FIFO} & \textit{Fifo}.\\ \constd{DT\_SOCK} & Socket.\\ \constd{DT\_CHR} & Dispositivo a caratteri.\\ \constd{DT\_BLK} & Dispositivo a blocchi.\\ @@ -2643,7 +2643,7 @@ ha il permesso di attraversamento alla directory specificata da \param{fd}. Finora abbiamo parlato esclusivamente di file, directory e collegamenti simbolici, ma in sez.~\ref{sec:file_file_types} abbiamo visto che il sistema prevede anche degli altri tipi di file, che in genere vanno sotto il nome -generico di \textsl{file speciali}, come i file di dispositivo, le fifo ed i +generico di \textsl{file speciali}, come i file di dispositivo, le \textit{fifo} ed i socket. La manipolazione delle caratteristiche di questi file speciali, il cambiamento @@ -2666,7 +2666,7 @@ funzione di sistema \funcd{mknod}, il cui prototipo è: \item[\errcode{EEXIST}] \param{pathname} esiste già o è un collegamento simbolico. \item[\errcode{EINVAL}] il valore di \param{mode} non indica un file, una - fifo, un socket o un dispositivo. + \textit{fifo}, un socket o un dispositivo. \item[\errcode{EPERM}] non si hanno privilegi sufficienti a creare l'\texttt{inode}, o il filesystem su cui si è cercato di creare \param{pathname} non supporta l'operazione. @@ -2689,8 +2689,8 @@ Per il tipo di file può essere specificato solo uno fra i seguenti valori: \const{S\_IFREG} per un file regolare (che sarà creato vuoto), \const{S\_IFBLK} per un dispositivo a blocchi, \const{S\_IFCHR} per un dispositivo a caratteri, \const{S\_IFSOCK} per un socket e \const{S\_IFIFO} -per una fifo;\footnote{con Linux la funzione non può essere usata per creare - directory o collegamenti simbolici, si dovranno usare le funzioni +per una \textit{fifo};\footnote{con Linux la funzione non può essere usata per + creare directory o collegamenti simbolici, si dovranno usare le funzioni \func{mkdir} e \func{symlink} a questo dedicate.} un valore diverso comporterà l'errore \errcode{EINVAL}. Inoltre \param{pathname} non deve esistere, neanche come collegamento simbolico. @@ -2705,9 +2705,9 @@ dispositivo usando questa funzione (il processo deve avere la capacità mentre è presente in SVr4 e 4.4BSD, ma esistono differenze nei comportamenti e nei codici di errore, tanto che questa è stata introdotta in POSIX.1-2001 con una nota che la definisce portabile solo quando viene usata per creare - delle fifo, ma comunque deprecata essendo utilizzabile a tale scopo la - specifica \func{mkfifo}.} l'uso per la creazione di un file ordinario, di -una fifo o di un socket è consentito anche agli utenti normali. + delle \textit{fifo}, ma comunque deprecata essendo utilizzabile a tale scopo + la specifica \func{mkfifo}.} l'uso per la creazione di un file ordinario, di +una \textit{fifo} o di un socket è consentito anche agli utenti normali. I nuovi \textit{inode} creati con \func{mknod} apparterranno al proprietario e al gruppo del processo (usando \ids{UID} e \ids{GID} del gruppo effettivo) che @@ -2792,17 +2792,17 @@ macro \macro{makedev}: Dato che la funzione di sistema \func{mknod} presenta diverse varianti nei vari sistemi unix-like, lo standard POSIX.1-2001 la dichiara portabile solo in -caso di creazione delle fifo, ma anche in questo caso alcune combinazioni -degli argomenti restano non specificate, per cui nello stesso standard è stata -introdotta una funzione specifica per creare una fifo deprecando l'uso di -\func{mknod} a tale riguardo. La funzione è \funcd{mkfifo} ed il suo -prototipo è: +caso di creazione delle \textit{fifo}, ma anche in questo caso alcune +combinazioni degli argomenti restano non specificate, per cui nello stesso +standard è stata introdotta una funzione specifica per creare una +\textit{fifo} deprecando l'uso di \func{mknod} a tale riguardo. La funzione è +\funcd{mkfifo} ed il suo prototipo è: \begin{funcproto}{ \fhead{sys/types.h} \fhead{sys/stat.h} \fdecl{int mkfifo(const char *pathname, mode\_t mode)} -\fdesc{Crea una fifo.} +\fdesc{Crea una \textit{fifo}.} } {La funzione ritorna $0$ in caso di successo e $-1$ per un errore, nel qual caso \var{errno} assumerà \errval{EACCES}, \errval{EEXIST}, @@ -2810,11 +2810,11 @@ prototipo è: \errval{EROFS} nel loro significato generico.} \end{funcproto} -La funzione crea la fifo \param{pathname} con i permessi \param{mode}. Come -per \func{mknod} il file \param{pathname} non deve esistere (neanche come -collegamento simbolico); al solito i permessi specificati da \param{mode} -vengono modificati dal valore di \textit{umask} (vedi -sez.~\ref{sec:file_perm_management}). +La funzione crea la \textit{fifo} \param{pathname} con i +permessi \param{mode}. Come per \func{mknod} il file \param{pathname} non deve +esistere (neanche come collegamento simbolico); al solito i permessi +specificati da \param{mode} vengono modificati dal valore di \textit{umask} +(vedi sez.~\ref{sec:file_perm_management}). \index{file!speciali|)} @@ -3124,7 +3124,7 @@ sez.~\ref{sec:file_file_times}). Si noti come i vari membri della struttura siano specificati come tipi primitivi del sistema, di quelli definiti in tab.~\ref{tab:intro_primitive_types}, e dichiarati in \headfile{sys/types.h}, -con l'eccezione di \type{blksize\_t} e \type{blkcnt\_t} che sono nuovi tipi +con l'eccezione di \typed{blksize\_t} e \typed{blkcnt\_t} che sono nuovi tipi introdotti per rendersi indipendenti dalla piattaforma. Benché la descrizione dei commenti di fig.~\ref{fig:file_stat_struct} sia @@ -3161,6 +3161,9 @@ questa sezione: \end{itemize*} +% TODO trattare anche statx, aggiunta con il kernel 4.11 (vedi +% https://lwn.net/Articles/707602/ e +% https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a528d35e8bfcc521d7cb70aaf03e1bd296c8493f) \subsection{I tipi di file} @@ -3193,7 +3196,7 @@ tipo di file in maniera standardizzata. \macrod{S\_ISDIR}\texttt{(m)} & Directory.\\ \macrod{S\_ISCHR}\texttt{(m)} & Dispositivo a caratteri.\\ \macrod{S\_ISBLK}\texttt{(m)} & Dispositivo a blocchi.\\ - \macrod{S\_ISFIFO}\texttt{(m)} & Fifo.\\ + \macrod{S\_ISFIFO}\texttt{(m)} & \textit{Fifo}.\\ \macrod{S\_ISLNK}\texttt{(m)} & Collegamento simbolico.\\ \macrod{S\_ISSOCK}\texttt{(m)} & Socket.\\ \hline @@ -3226,7 +3229,7 @@ come argomento il valore di \var{st\_mode}. \constd{S\_IFBLK} & 0060000 & Dispositivo a blocchi.\\ \constd{S\_IFDIR} & 0040000 & Directory.\\ \constd{S\_IFCHR} & 0020000 & Dispositivo a caratteri.\\ - \constd{S\_IFIFO} & 0010000 & Fifo.\\ + \constd{S\_IFIFO} & 0010000 & \textit{Fifo}.\\ \hline \constd{S\_ISUID} & 0004000 & Set user ID (\acr{suid}) bit, vedi sez.~\ref{sec:file_special_perm}).\\ @@ -3293,7 +3296,7 @@ Abbiamo visto in fig.~\ref{fig:file_stat_struct} che campo \var{st\_size} di una struttura \struct{stat} contiene la dimensione del file in byte. Questo però è vero solo se si tratta di un file regolare, mentre nel caso di un collegamento simbolico la dimensione è quella del \textit{pathname} che il -collegamento stesso contiene, infine per le fifo ed i file di dispositivo +collegamento stesso contiene, infine per le \textit{fifo} ed i file di dispositivo questo campo è sempre nullo. Il campo \var{st\_blocks} invece definisce la lunghezza del file in blocchi di @@ -3921,17 +3924,17 @@ in tab.~\ref{tab:file_bit_perm}. \textbf{\var{st\_mode}} bit & \textbf{Significato} \\ \hline \hline - \constd{S\_IRUSR} & \textit{user-read}, l'utente può leggere.\\ - \constd{S\_IWUSR} & \textit{user-write}, l'utente può scrivere.\\ - \constd{S\_IXUSR} & \textit{user-execute}, l'utente può eseguire.\\ + \const{S\_IRUSR} & \textit{user-read}, l'utente può leggere.\\ + \const{S\_IWUSR} & \textit{user-write}, l'utente può scrivere.\\ + \const{S\_IXUSR} & \textit{user-execute}, l'utente può eseguire.\\ \hline - \constd{S\_IRGRP} & \textit{group-read}, il gruppo può leggere.\\ - \constd{S\_IWGRP} & \textit{group-write}, il gruppo può scrivere.\\ - \constd{S\_IXGRP} & \textit{group-execute}, il gruppo può eseguire.\\ + \const{S\_IRGRP} & \textit{group-read}, il gruppo può leggere.\\ + \const{S\_IWGRP} & \textit{group-write}, il gruppo può scrivere.\\ + \const{S\_IXGRP} & \textit{group-execute}, il gruppo può eseguire.\\ \hline - \constd{S\_IROTH} & \textit{other-read}, tutti possono leggere.\\ - \constd{S\_IWOTH} & \textit{other-write}, tutti possono scrivere.\\ - \constd{S\_IXOTH} & \textit{other-execute}, tutti possono eseguire.\\ + \const{S\_IROTH} & \textit{other-read}, tutti possono leggere.\\ + \const{S\_IWOTH} & \textit{other-write}, tutti possono scrivere.\\ + \const{S\_IXOTH} & \textit{other-execute}, tutti possono eseguire.\\ \hline \end{tabular} \caption{I bit dei permessi di accesso ai file, come definiti in @@ -4347,8 +4350,8 @@ filename e su un file descriptor, i loro prototipi sono: Entrambe le funzioni utilizzano come secondo argomento \param{mode}, una variabile dell'apposito tipo primitivo \type{mode\_t} (vedi -tab.~\ref{tab:intro_primitive_types}) utilizzato per specificare i permessi sui -file. +tab.~\ref{tab:intro_primitive_types}) utilizzato per specificare i permessi +sui file. \begin{table}[!htb] \centering @@ -4358,24 +4361,24 @@ file. \textbf{\param{mode}} & \textbf{Valore} & \textbf{Significato} \\ \hline \hline - \constd{S\_ISUID} & 04000 & Set user ID bit.\\ - \constd{S\_ISGID} & 02000 & Set group ID bit.\\ - \constd{S\_ISVTX} & 01000 & Sticky bit.\\ + \const{S\_ISUID} & 04000 & Set user ID bit.\\ + \const{S\_ISGID} & 02000 & Set group ID bit.\\ + \const{S\_ISVTX} & 01000 & Sticky bit.\\ \hline - \constd{S\_IRWXU} & 00700 & L'utente ha tutti i permessi.\\ - \constd{S\_IRUSR} & 00400 & L'utente ha il permesso di lettura.\\ - \constd{S\_IWUSR} & 00200 & L'utente ha il permesso di scrittura.\\ - \constd{S\_IXUSR} & 00100 & L'utente ha il permesso di esecuzione.\\ + \const{S\_IRWXU} & 00700 & L'utente ha tutti i permessi.\\ + \const{S\_IRUSR} & 00400 & L'utente ha il permesso di lettura.\\ + \const{S\_IWUSR} & 00200 & L'utente ha il permesso di scrittura.\\ + \const{S\_IXUSR} & 00100 & L'utente ha il permesso di esecuzione.\\ \hline - \constd{S\_IRWXG} & 00070 & Il gruppo ha tutti i permessi.\\ - \constd{S\_IRGRP} & 00040 & Il gruppo ha il permesso di lettura.\\ - \constd{S\_IWGRP} & 00020 & Il gruppo ha il permesso di scrittura.\\ - \constd{S\_IXGRP} & 00010 & Il gruppo ha il permesso di esecuzione.\\ + \const{S\_IRWXG} & 00070 & Il gruppo ha tutti i permessi.\\ + \const{S\_IRGRP} & 00040 & Il gruppo ha il permesso di lettura.\\ + \const{S\_IWGRP} & 00020 & Il gruppo ha il permesso di scrittura.\\ + \const{S\_IXGRP} & 00010 & Il gruppo ha il permesso di esecuzione.\\ \hline - \constd{S\_IRWXO} & 00007 & Gli altri hanno tutti i permessi.\\ - \constd{S\_IROTH} & 00004 & Gli altri hanno il permesso di lettura.\\ - \constd{S\_IWOTH} & 00002 & Gli altri hanno il permesso di scrittura.\\ - \constd{S\_IXOTH} & 00001 & Gli altri hanno il permesso di esecuzione.\\ + \const{S\_IRWXO} & 00007 & Gli altri hanno tutti i permessi.\\ + \const{S\_IROTH} & 00004 & Gli altri hanno il permesso di lettura.\\ + \const{S\_IWOTH} & 00002 & Gli altri hanno il permesso di scrittura.\\ + \const{S\_IXOTH} & 00001 & Gli altri hanno il permesso di esecuzione.\\ \hline \end{tabular} \caption{Valori delle costanti usate per indicare i vari bit di @@ -4869,7 +4872,7 @@ tab.~\ref{tab:extended_attribute_class}, si hanno i seguenti casi: due casi hanno a che fare con il contenuto del file, e nella discussione relativa all'uso degli \textit{extended user attributes} nessuno è mai stato capace di indicare una qualche forma sensata di utilizzo degli stessi per - collegamenti simbolici o file di dispositivo, e neanche per le fifo o i + collegamenti simbolici o file di dispositivo, e neanche per le \textit{fifo} o i socket. Per questo motivo essi sono stati completamente disabilitati per tutto ciò che non sia un file regolare o una directory.\footnote{si può verificare la semantica adottata consultando il file \texttt{fs/xattr.c} @@ -5334,11 +5337,11 @@ queste funzioni che prendiamo in esame è \funcd{acl\_init}, il cui prototipo La funzione alloca ed inizializza un'area di memoria che verrà usata per mantenere i dati di una ACL contenente fino ad un massimo di \param{count} -voci. La funzione ritorna un valore di tipo \type{acl\_t} da usare in tutte le +voci. La funzione ritorna un valore di tipo \typed{acl\_t} da usare in tutte le altre funzioni che operano sulla ACL. La funzione si limita alla allocazione iniziale e non inserisce nessun valore nella ACL che resta vuota. -Si tenga presente che pur essendo \type{acl\_t} un tipo opaco che identifica +Si tenga presente che pur essendo \typed{acl\_t} un tipo opaco che identifica ``\textsl{l'oggetto}'' ACL, il valore restituito dalla funzione non è altro che un puntatore all'area di memoria allocata per i dati richiesti. Pertanto in caso di fallimento verrà restituito un puntatore nullo di tipo @@ -5473,7 +5476,7 @@ tramite un file descriptor usando \func{acl\_get\_fd} o con un funzione, che può richiedere anche la ACL relativa ad una directory, il secondo argomento \param{type} consente di specificare se si vuole ottenere la ACL di default o quella di accesso. Questo argomento deve essere di tipo -\type{acl\_type\_t} e può assumere solo i due valori riportati in +\typed{acl\_type\_t} e può assumere solo i due valori riportati in tab.~\ref{tab:acl_type}. \begin{table}[htb] @@ -5832,7 +5835,7 @@ prototipo è: } \end{funcproto} -La funzione è del tutto è analoga a \funcd{acl\_set\_file} ma opera +La funzione è del tutto è analoga a \func{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, @@ -5851,7 +5854,7 @@ manuale. Se si vuole operare direttamente sui contenuti di un oggetto di tipo \type{acl\_t} infatti occorre fare riferimento alle singole voci tramite gli -opportuni puntatori di tipo \type{acl\_entry\_t}, che possono essere ottenuti +opportuni puntatori di tipo \typed{acl\_entry\_t}, che possono essere ottenuti dalla funzione \funcm{acl\_get\_entry} (per una voce esistente) o dalla 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 @@ -6509,7 +6512,7 @@ casistica assai complessa. Per i kernel fino al 2.6.25, o se non si attiva il supporto per le \textit{file capabilities}, il \textit{capabilities bounding set} è un parametro generale di sistema, il cui valore viene riportato nel file -\sysctlfile{kernel/cap-bound}. Il suo valore iniziale è definito in sede di +\sysctlfiled{kernel/cap-bound}. Il suo valore iniziale è definito in sede di compilazione del kernel, e da sempre ha previsto come default la presenza di tutte le \textit{capabilities} eccetto \const{CAP\_SETPCAP}. In questa situazione solo il primo processo eseguito nel sistema (quello con @@ -6534,7 +6537,7 @@ tutti, compreso l'amministratore.\footnote{la qual cosa, visto il default 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 sia attraverso una \func{fork} che una \func{exec}. In questo caso il file -\sysctlfilem{kernel/cap-bound} non esiste e \texttt{init} non ha nessun +\sysctlfile{kernel/cap-bound} non esiste e \texttt{init} non ha nessun ruolo speciale, inoltre in questo caso all'avvio il valore iniziale prevede la presenza di tutte le capacità (compresa \const{CAP\_SETPCAP}). @@ -6976,7 +6979,7 @@ sez.~\ref{sec:socket_credential_xxx}), assegnare classi privilegiate (\const{IOPRIO\_CLASS\_RT} e prima del kernel 2.6.25 anche \const{IOPRIO\_CLASS\_IDLE}) per lo scheduling dell'I/O (vedi sez.~\ref{sec:io_priority}), superare il limite di sistema sul numero massimo -di file aperti,\footnote{quello indicato da \sysctlfile{fs/file-max}.} +di file aperti,\footnote{quello indicato da \sysctlfiled{fs/file-max}.} effettuare operazioni privilegiate sulle chiavi mantenute dal kernel (vedi sez.~\ref{sec:keyctl_management}), usare la funzione \func{lookup\_dcookie}, usare \const{CLONE\_NEWNS} con \func{unshare} e \func{clone}, (vedi @@ -7120,7 +7123,7 @@ della suddetta libreria attraverso l'opzione \texttt{-lcap}. Le funzioni dell'interfaccia alle \textit{capabilities} definite nelle bozze dello standard POSIX.1e prevedono l'uso di un tipo di dato opaco, -\type{cap\_t}, come puntatore ai dati mantenuti nel cosiddetto +\typed{cap\_t}, come puntatore ai dati mantenuti nel cosiddetto \textit{capability state},\footnote{si tratta in sostanza di un puntatore ad una struttura interna utilizzata dalle librerie, i cui campi non devono mai essere acceduti direttamente.} in sono memorizzati tutti i dati delle @@ -7263,7 +7266,7 @@ tab.~\ref{tab:cap_set_identifier}. \constd{CAP\_INHERITABLE}& Capacità dell'insieme \textsl{ereditabile}.\\ \hline \end{tabular} - \caption{Valori possibili per il tipo di dato \type{cap\_flag\_t} che + \caption{Valori possibili per il tipo di dato \typed{cap\_flag\_t} che identifica gli insiemi delle \textit{capabilities}.} \label{tab:cap_set_identifier} \end{table} @@ -7335,7 +7338,7 @@ In entrambe le funzioni l'argomento \param{cap\_p} indica il puntatore al indica su quale dei tre insiemi si intende operare, sempre con i valori di tab.~\ref{tab:cap_set_identifier}. La capacità che si intende controllare o impostare invece deve essere specificata attraverso una variabile di tipo -\type{cap\_value\_t}, che può prendere come valore uno qualunque di quelli +\typed{cap\_value\_t}, che può prendere come valore uno qualunque di quelli riportati in tab.~\ref{tab:proc_capabilities}, in questo caso però non è possibile combinare diversi valori in una maschera binaria, una variabile di tipo \type{cap\_value\_t} può indicare una sola capacità.\footnote{in @@ -7360,7 +7363,7 @@ tab.~\ref{tab:cap_value_type}. \constd{CAP\_SET} & La capacità è impostata.\\ \hline \end{tabular} - \caption{Valori possibili per il tipo di dato \type{cap\_flag\_value\_t} che + \caption{Valori possibili per il tipo di dato \typed{cap\_flag\_value\_t} che indica lo stato di una capacità.} \label{tab:cap_value_type} \end{table}