\begin{figure}[!htb]
\footnotesize \centering
- \begin{minipage}[c]{\textwidth}
+ \begin{minipage}[c]{0.80\textwidth}
\includestruct{listati/file_system_type.h}
\end{minipage}
\normalsize
\begin{figure}[!htb]
\footnotesize \centering
- \begin{minipage}[c]{\textwidth}
+ \begin{minipage}[c]{0.8\textwidth}
\includestruct{listati/inode.h}
\end{minipage}
\normalsize
\begin{figure}[!htb]
\footnotesize \centering
- \begin{minipage}[c]{\textwidth}
+ \begin{minipage}[c]{0.8\textwidth}
\includestruct{listati/file.h}
\end{minipage}
\normalsize
\textsl{\code{llseek}} & Sposta la posizione corrente sul file (vedi
sez.~\ref{sec:file_lseek}).\\
\textsl{\code{ioctl}} & Accede alle operazioni di controllo
- (vedi sez.~\ref{sec:file_ioctl}).\\
+ (vedi sez.~\ref{sec:file_fcntl_ioctl}).\\
\textsl{\code{readdir}}& Legge il contenuto di una directory (vedi
sez.~\ref{sec:file_dir_read}).\\
\textsl{\code{poll}} & Usata nell'I/O multiplexing (vedi
tutte le directory del filesystem, ma su alcuni filesystem è possibile
impostarla a livello di singole directory o per i sottorami di una directory
con il comando \cmd{chattr}.\footnote{questo avviene tramite delle opportune
- \texttt{ioctl} (vedi sez.~\ref{sec:file_ioctl}).}
+ \texttt{ioctl} (vedi sez.~\ref{sec:file_fcntl_ioctl}).}
Questo consente di ridurre al minimo il rischio di perdita dei dati delle
directory in caso di crollo improvviso del sistema, al costo di una certa
\end{funcproto}
\footnotetext{più precisamente la \itindex{capabilities} capacità
- \const{CAP\_SYS\_ADMIN}.}
+ \const{CAP\_SYS\_ADMIN}, vedi sez.~\ref{sec:proc_capabilities}.}
La funzione prende il nome della directory su cui il filesystem è montato e
non il file o il dispositivo che è stato montato,\footnote{questo è vero a
\textbf{Costante} & \textbf{Descrizione}\\
\hline
\hline
- \const{MNT\_FORCE} & forza lo smontaggio del filesystem anche se questo è
+ \const{MNT\_FORCE} & Forza lo smontaggio del filesystem anche se questo è
occupato (presente dai kernel della serie 2.2).\\
- \const{MNT\_DETACH} & esegue uno smontaggio ``\textsl{pigro}'', in cui si
+ \const{MNT\_DETACH} & Esegue uno smontaggio ``\textsl{pigro}'', in cui si
blocca l'accesso ma si aspetta che il filesystem si
liberi (presente dal kernel 2.4.11 e dalla
\acr{glibc} 2.11).\\
- \const{MNT\_EXPIRE} & se non occupato marca un \itindex{mount~point}
+ \const{MNT\_EXPIRE} & Se non occupato marca un \itindex{mount~point}
\textit{mount point} come ``\textsl{in scadenza}'' in
modo che ad una successiva chiamata senza utilizzo
del filesystem questo venga smontato (presente dal
kernel 2.6.8 e dalla \acr{glibc} 2.11).\\
- \const{UMOUNT\_NOFOLLOW}& non dereferenzia \param{target} se questo è un
+ \const{UMOUNT\_NOFOLLOW}& Non dereferenzia \param{target} se questo è un
collegamento simbolico (vedi
sez.~\ref{sec:link_symlink_rename}) evitando
problemi di sicurezza (presente dal kernel 2.6.34).\\
\begin{figure}[!htb]
\footnotesize \centering
- \begin{minipage}[c]{\textwidth}
+ \begin{minipage}[c]{0.8\textwidth}
\includestruct{listati/statfs.h}
\end{minipage}
\normalsize
\begin{figure}[!htb]
\footnotesize \centering
- \begin{minipage}[c]{\textwidth}
+ \begin{minipage}[c]{0.8\textwidth}
\includestruct{listati/dirent.c}
\end{minipage}
\normalsize
della parte iniziale della struttura, basterà sommarci la dimensione massima
dei nomi dei file nel filesystem che si sta usando, che si può ottenere
attraverso la funzione \func{pathconf} (per la quale si rimanda a
-sez.~\ref{sec:sys_pathconf}) più un ulteriore carattere per la terminazione
-della stringa.
+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
\begin{figure}[!htb]
\footnotesize
\centering
- \begin{minipage}[c]{\textwidth}
+ \begin{minipage}[c]{0.8\textwidth}
\includestruct{listati/stat.h}
\end{minipage}
\normalsize
Benché la descrizione dei commenti di fig.~\ref{fig:file_stat_struct} sia
abbastanza chiara, vale la pena illustrare maggiormente il significato dei
-campi di \structd{stat} su cui non torneremo in maggior dettaglio nel resto di
+campi di \struct{stat} su cui non torneremo in maggior dettaglio nel resto di
questa sezione:
\begin{itemize*}
\textbf{Macro} & \textbf{Tipo del file} \\
\hline
\hline
- \macro{S\_ISREG}\texttt{(m)} & file normale.\\
- \macro{S\_ISDIR}\texttt{(m)} & directory.\\
- \macro{S\_ISCHR}\texttt{(m)} & dispositivo a caratteri.\\
- \macro{S\_ISBLK}\texttt{(m)} & dispositivo a blocchi.\\
- \macro{S\_ISFIFO}\texttt{(m)} & fifo.\\
- \macro{S\_ISLNK}\texttt{(m)} & collegamento simbolico.\\
- \macro{S\_ISSOCK}\texttt{(m)} & socket.\\
+ \macro{S\_ISREG}\texttt{(m)} & File normale.\\
+ \macro{S\_ISDIR}\texttt{(m)} & Directory.\\
+ \macro{S\_ISCHR}\texttt{(m)} & Dispositivo a caratteri.\\
+ \macro{S\_ISBLK}\texttt{(m)} & Dispositivo a blocchi.\\
+ \macro{S\_ISFIFO}\texttt{(m)} & Fifo.\\
+ \macro{S\_ISLNK}\texttt{(m)} & Collegamento simbolico.\\
+ \macro{S\_ISSOCK}\texttt{(m)} & Socket.\\
\hline
\end{tabular}
\caption{Macro per i tipi di file (definite in \headfile{sys/stat.h}).}
\const{S\_IFCHR} & 0020000 & Dispositivo a caratteri.\\
\const{S\_IFIFO} & 0010000 & Fifo.\\
\hline
- \const{S\_ISUID} & 0004000 & \itindex{suid~bit} \acr{suid} bit.\\
- \const{S\_ISGID} & 0002000 & \itindex{sgid~bit} \acr{sgid} bit.\\
- \const{S\_ISVTX} & 0001000 & \itindex{sticky~bit} \acr{sticky} bit.\\
+ \const{S\_ISUID} & 0004000 & Set user ID \itindex{suid~bit} (\acr{suid})
+ bit.\\
+ \const{S\_ISGID} & 0002000 & Set group ID \itindex{sgid~bit}
+ (\acr{sgid}) bit.\\
+ \const{S\_ISVTX} & 0001000 & \itindex{sticky~bit} \acr{Sticky} bit.\\
\hline
\const{S\_IRWXU} & 00700 & Maschera per i permessi del proprietario.\\
\const{S\_IRUSR} & 00400 & Il proprietario ha permesso di lettura.\\
\begin{figure}[!htb]
\footnotesize \centering
- \begin{minipage}[c]{\textwidth}
+ \begin{minipage}[c]{0.8\textwidth}
\includestruct{listati/utimbuf.h}
\end{minipage}
\normalsize
proprietari del file o avere i privilegi di amministratore. Se invece si è
specificato un valore diverso la funzione avrà successo solo se si è
proprietari del file o se si hanno i privilegi di amministratore.\footnote{per
- essere precisi la \itindex{capabilities} capacità \const{CAP\_FOWNER}.} In
-entrambi i casi per verificare la proprietà del file viene utilizzato
-l'\ids{UID} effettivo del processo.
+ essere precisi la \itindex{capabilities} capacità \const{CAP\_FOWNER}, vedi
+ sez.~\ref{sec:proc_capabilities}.} In entrambi i casi per verificare la
+proprietà del file viene utilizzato l'\ids{UID} effettivo del processo.
Si tenga presente che non è possibile modificare manualmente il tempo di
cambiamento di stato del file, che viene aggiornato direttamente dal kernel
\begin{figure}[!htb]
\footnotesize \centering
- \begin{minipage}[c]{\textwidth}
+ \begin{minipage}[c]{0.8\textwidth}
\includestruct{listati/timeval.h}
\end{minipage}
\normalsize
\begin{figure}[!htb]
\footnotesize \centering
- \begin{minipage}[c]{\textwidth}
+ \begin{minipage}[c]{0.8\textwidth}
\includestruct{listati/timespec.h}
\end{minipage}
\normalsize
per cui a differenza dei permessi ordinari esse varranno per qualunque utente
compreso l'amministratore. L'amministratore è l'unico che può attivare o
disattivare questi attributi,\footnote{più precisamente un processo con la
- \itindex{capabilities} capacità \const{CAP\_LINUX\_IMMUTABLE}.} e potendo
-rimuoverli è comunque capace di tornare in grado di eseguire qualunque
-operazione su un file immutabile o \textit{append-only}.
+ \itindex{capabilities} capacità \const{CAP\_LINUX\_IMMUTABLE}, vedi
+ sez.~\ref{sec:proc_capabilities}.} e potendo rimuoverli è comunque capace di
+tornare in grado di eseguire qualunque operazione su un file immutabile o
+\textit{append-only}.
\itindend{file~attributes}
\textbf{\param{mode}} & \textbf{Valore} & \textbf{Significato} \\
\hline
\hline
- \const{S\_ISUID} & 04000 & Set user ID \itindex{suid~bit}.\\
- \const{S\_ISGID} & 02000 & Set group ID \itindex{sgid~bit}.\\
- \const{S\_ISVTX} & 01000 & Sticky bit \itindex{sticky~bit}.\\
+ \const{S\_ISUID} & 04000 & Set user ID \itindex{suid~bit} bit.\\
+ \const{S\_ISGID} & 02000 & Set group ID \itindex{sgid~bit} bit.\\
+ \const{S\_ISVTX} & 01000 & Sticky \itindex{sticky~bit} bit.\\
\hline
\const{S\_IRWXU} & 00700 & L'utente ha tutti i permessi.\\
\const{S\_IRUSR} & 00400 & L'utente ha il permesso di lettura.\\
\textbf{Tipo} & \textbf{Descrizione} \\
\hline
\hline
- \const{ACL\_USER\_OBJ} & voce che contiene i diritti di accesso del
+ \const{ACL\_USER\_OBJ} & Voce che contiene i diritti di accesso del
proprietario del file.\\
- \const{ACL\_USER} & voce che contiene i diritti di accesso per
+ \const{ACL\_USER} & Voce che contiene i diritti di accesso per
l'utente indicato dal rispettivo
qualificatore.\\
- \const{ACL\_GROUP\_OBJ}& voce che contiene i diritti di accesso del
+ \const{ACL\_GROUP\_OBJ}& Voce che contiene i diritti di accesso del
gruppo proprietario del file.\\
- \const{ACL\_GROUP} & voce che contiene i diritti di accesso per
+ \const{ACL\_GROUP} & Voce che contiene i diritti di accesso per
il gruppo indicato dal rispettivo
qualificatore.\\
- \const{ACL\_MASK} & voce che contiene la maschera dei massimi
+ \const{ACL\_MASK} & Voce che contiene la maschera dei massimi
permessi di accesso che possono essere garantiti
da voci del tipo \const{ACL\_USER},
\const{ACL\_GROUP} e \const{ACL\_GROUP\_OBJ}.\\
- \const{ACL\_OTHER} & voce che contiene i diritti di accesso di chi
+ \const{ACL\_OTHER} & Voce che contiene i diritti di accesso di chi
non corrisponde a nessuna altra voce dell'ACL.\\
\hline
\end{tabular}
\textbf{Tipo} & \textbf{Descrizione} \\
\hline
\hline
- \const{ACL\_TYPE\_ACCESS} & indica una ACL di accesso.\\
- \const{ACL\_TYPE\_DEFAULT}& indica una ACL di default.\\
+ \const{ACL\_TYPE\_ACCESS} & Indica una ACL di accesso.\\
+ \const{ACL\_TYPE\_DEFAULT}& Indica una ACL di default.\\
\hline
\end{tabular}
\caption{Le costanti che identificano il tipo di ACL.}
\textbf{Tipo} & \textbf{Descrizione} \\
\hline
\hline
- \const{TEXT\_ABBREVIATE} & stampa le voci in forma abbreviata.\\
+ \const{TEXT\_ABBREVIATE} & Stampa le voci in forma abbreviata.\\
\const{TEXT\_NUMERIC\_IDS} & non effettua la risoluzione numerica di
\ids{UID} e \ids{GID}.\\
- \const{TEXT\_SOME\_EFFECTIVE}& per ciascuna voce che contiene permessi che
+ \const{TEXT\_SOME\_EFFECTIVE}& Per ciascuna voce che contiene permessi che
vengono eliminati dalla \const{ACL\_MASK}
viene generato un commento con i permessi
effettivamente risultanti; il commento è
separato con un tabulatore.\\
- \const{TEXT\_ALL\_EFFECTIVE} & viene generato un commento con i permessi
+ \const{TEXT\_ALL\_EFFECTIVE} & Viene generato un commento con i permessi
effettivi per ciascuna voce che contiene
permessi citati nella \const{ACL\_MASK},
anche quando questi non vengono modificati
da essa; il commento è separato con un
tabulatore.\\
- \const{TEXT\_SMART\_INDENT} & da usare in combinazione con le precedenti
- \const{TEXT\_SOME\_EFFECTIVE} e
- \const{TEXT\_ALL\_EFFECTIVE} aumenta
+ \const{TEXT\_SMART\_INDENT} & Da usare in combinazione con le precedenti
+ opzioni \const{TEXT\_SOME\_EFFECTIVE} e
+ \const{TEXT\_ALL\_EFFECTIVE}, aumenta
automaticamente il numero di spaziatori
prima degli eventuali commenti in modo da
mantenerli allineati.\\
}
\end{funcproto}
-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 è:
+Ottenuta con \func{acl\_size} la dimensione per il buffer di una ACL lo si
+potrà allocare direttamente con \func{malloc}. La rappresentazione binaria di
+una ACL si potrà invece ottenere con la funzione \funcd{acl\_copy\_ext}, il
+cui prototipo è:
\begin{funcproto}{
\fhead{sys/types.h}
\begin{figure}[!htb]
\footnotesize \centering
- \begin{minipage}[c]{\textwidth}
+ \begin{minipage}[c]{0.9\textwidth}
\includestruct{listati/dqblk.h}
\end{minipage}
\normalsize
\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
+ \const{QFMT\_VFS\_OLD}& Il vecchio (ed obsoleto) formato delle quote.\\
+ \const{QFMT\_VFS\_V0} & La versione 0 usata dal VFS di Linux, supporta
\ids{UID} e \ids{GID} 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
+ \const{QFMT\_VFS\_V1} & La versione 1 usata dal VFS di Linux, supporta
\ids{UID} e \ids{GID} a 32 bit e limiti fino a
$2^{64}$ byte e $2^{64}$ file.\\
\hline
\begin{figure}[!htb]
\footnotesize \centering
- \begin{minipage}[c]{\textwidth}
+ \begin{minipage}[c]{0.8\textwidth}
\includestruct{listati/dqinfo.h}
\end{minipage}
\normalsize
\itindex{sticky~bit} \textit{sticky bit} nella cancellazione dei file (vedi
sez.~\ref{sec:file_special_perm}), la possibilità di impostare il flag di
\const{O\_NOATIME} con \func{open} e \func{fcntl} (vedi
-sez.~\ref{sec:file_open_close} e sez.~\ref{sec:file_fcntl}) senza restrizioni.
+sez.~\ref{sec:file_open_close} e sez.~\ref{sec:file_fcntl_ioctl}) senza
+restrizioni.
Una seconda capacità che copre diverse operazioni, in questo caso riguardanti
la rete, è \const{CAP\_NET\_ADMIN}, che consente di impostare le opzioni
\begin{figure}[!htb]
\footnotesize
\centering
- \begin{minipage}[c]{\textwidth}
+ \begin{minipage}[c]{0.8\textwidth}
\includestruct{listati/cap_user_header_t.h}
\end{minipage}
\normalsize