%% filedir.tex
%%
-%% Copyright (C) 2000-2015 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2016 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",
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
\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}
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}
\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.
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
\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
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
\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
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
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]
}
\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,
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
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
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}).
(\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
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
\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}
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
\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}