X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=filedir.tex;h=0bae59c04094304df39739d08d4c0fe8c9cecec7;hb=f8766706e9000d5de140b1670aebc6a76cf9f02d;hp=050dcf7a5866dd51b2e7a4630a24387a737df041;hpb=5d2f43482c192e29b4e0039adf1de81d5f3e54b9;p=gapil.git diff --git a/filedir.tex b/filedir.tex index 050dcf7..0bae59c 100644 --- a/filedir.tex +++ b/filedir.tex @@ -260,13 +260,13 @@ tab.~\ref{tab:file_file_operations}.\footnote{essa può essere comunque detta funzione.} Questo avviene perché su Linux l'apertura di un file richiede comunque un'altra operazione che mette in gioco l'omonimo oggetto del VFS: l'allocazione di una struttura di tipo \kstruct{file} che viene associata -ad ogni file aperto nel sistema. - -I motivi per cui viene usata una struttura a parte sono diversi, anzitutto, -come illustrato in sez.~\ref{sec:file_fd}, questa è necessaria per le -operazioni eseguite dai processi con l'interfaccia dei file descriptor; ogni -processo infatti mantiene il riferimento ad una struttura \kstruct{file} per -ogni file che ha aperto, ed è tramite essa che esegue le operazioni di I/O. +ad ogni file aperto nel sistema. I motivi per cui viene usata una struttura a +parte sono diversi, anzitutto, come illustrato in sez.~\ref{sec:file_fd}, +questa è necessaria per le operazioni eseguite dai processi con l'interfaccia +dei file descriptor. Ogni processo infatti mantiene il riferimento ad una +struttura \kstruct{file} per ogni file che ha aperto, ed è tramite essa che +esegue le operazioni di I/O. Inoltre il kernel mantiene un elenco di tutti i +file aperti nella \itindex{file~table} \textit{file table}. Inoltre se le operazioni relative agli \textit{inode} fanno riferimento ad oggetti posti all'interno di un filesystem e vi si applicano quindi le @@ -1722,7 +1722,7 @@ sono stati cancellati: solo quando il numero di collegamenti mantenuto lo spazio occupato su disco viene liberato. Si tenga presente comunque che a questo si aggiunge sempre un'ulteriore condizione e cioè che non ci siano processi che abbiano il suddetto file aperto.\footnote{come vedremo in - cap.~\ref{cha:file_unix_interface} il kernel mantiene anche una tabella dei + sez.~\ref{sec:file_unix_interface} il kernel mantiene anche una tabella dei file aperti nei vari processi, che a sua volta contiene i riferimenti agli \itindex{inode} \textit{inode} ad essi relativi; prima di procedere alla cancellazione dello spazio occupato su disco dal contenuto di un file il @@ -2001,7 +2001,7 @@ Tutto questo si riflette nello standard POSIX\footnote{le funzioni erano che ha introdotto una apposita interfaccia per la lettura delle directory, basata sui cosiddetti \textit{directory stream}, chiamati così per l'analogia con i \textit{file stream} dell'interfaccia standard ANSI C che vedremo in -cap.~\ref{cha:files_std_interface}. La prima funzione di questa interfaccia è +sez.~\ref{sec:files_std_interface}. La prima funzione di questa interfaccia è \funcd{opendir}, il cui prototipo è: \begin{funcproto}{ @@ -3057,11 +3057,11 @@ In OpenBSD è stata introdotta un'altra funzione simile alle precedenti, più gli altri eventuali codici di errore di \func{mkdir}.} \end{funcproto} -La funzione genera una directory il cui nome è ottenuto sostituendo le -\code{XXXXXX} finali di \param{template} con permessi \code{0700} (al solito -si veda cap.~\ref{cha:file_unix_interface} per i dettagli). Dato che la -creazione della directory è sempre esclusiva i precedenti problemi di -\itindex{race~condition} \textit{race condition} non si pongono. +La funzione crea una directory temporanea il cui nome è ottenuto sostituendo +le \code{XXXXXX} finali di \param{template} con permessi \code{0700} (si veda +sez.~\ref{sec:file_perm_overview} per i dettagli). Dato che la creazione della +directory è sempre esclusiva i precedenti problemi di \itindex{race~condition} +\textit{race condition} non si pongono. @@ -3984,8 +3984,8 @@ crearlo o rinominarlo o cancellarlo invece occorrerà avere anche il permesso di scrittura per la directory. Avere il permesso di lettura per un file consente di aprirlo con le opzioni -(si veda quanto riportato in tab.~\ref{tab:file_open_flags}) di sola lettura o -di lettura/scrittura e leggerne il contenuto. Avere il permesso di scrittura +(si veda quanto riportato in sez.~\ref{sec:file_open}) di sola lettura o di +lettura/scrittura e leggerne il contenuto. Avere il permesso di scrittura consente di aprire un file in sola scrittura o lettura/scrittura e modificarne il contenuto, lo stesso permesso è necessario per poter troncare il file o per aggiornare il suo tempo di ultima modifica al tempo corrente, ma non per @@ -4517,8 +4517,8 @@ utenti non hanno motivi per modificarlo. \subsection{La gestione della titolarità dei file} \label{sec:file_ownership_management} -Vedremo in sez.~\ref{sec:file_base_func} con quali funzioni si possono creare -nuovi file, in tale occasione vedremo che è possibile specificare in sede di +Vedremo in sez.~\ref{sec:file_open} con quali funzioni si possono creare nuovi +file, in tale occasione vedremo che è possibile specificare in sede di creazione quali permessi applicare ad un file, però non si può indicare a quale utente e gruppo esso deve appartenere. Lo stesso problema si presenta per la creazione di nuove directory (procedimento descritto in @@ -5484,31 +5484,31 @@ estensione usata dalle ACL di Linux e non è portabile, ma consente di semplificare l'inizializzazione in maniera molto comoda. Altre due funzioni che consentono di creare una ACL già inizializzata sono -\funcd{acl\_get\_fd} e \funcd{acl\_get\_file}, che però sono per lo più -utilizzate per leggere la ACL corrente di un file; i rispettivi prototipi -sono: +\funcd{acl\_get\_fd} e \funcd{acl\_get\_file}, che consentono di leggere la +ACL di un file; i rispettivi prototipi sono: \begin{funcproto}{ \fhead{sys/types.h} \fhead{sys/acl.h} \fdecl{acl\_t acl\_get\_file(const char *path\_p, acl\_type\_t type)} \fdecl{acl\_t acl\_get\_fd(int fd)} -\fdesc{Ottiene i dati delle ACL di un file.} +\fdesc{Leggono i dati delle ACL di un file.} } -{La funzione ritorna un oggetto di tipo \type{acl\_t} in caso di successo e - \val{NULL} per un errore, nel qual caso \var{errno} assumerà uno - dei valori: +{Le funzioni ritornano un oggetto di tipo \type{acl\_t} in caso di successo e + \val{NULL} per un errore, nel qual caso \var{errno} assumerà uno dei valori: \begin{errlist} - \item[\errcode{ENOMEM}] non c'è memoria sufficiente per allocare i dati. + \item[\errcode{ACCESS}] non c'è accesso per una componente di + \param{path\_p} o si è richiesta una ACL di default per un file (solo per + \func{acl\_get\_file}). \item[\errcode{EINVAL}] \param{type} non ha un valore valido (solo per \func{acl\_get\_file}). \item[\errcode{ENOTSUP}] il filesystem cui fa riferimento il file non supporta le ACL. \end{errlist} - ed inoltre \errval{EBADF} per \func{acl\_get\_fd}, e \errval{EACCES}, - \errval{ENAMETOOLONG}, \errval{ENOENT}, \errval{ENOTDIR}, per - \func{acl\_get\_file}. } + ed inoltre \errval{ENOMEM} per entrambe, \errval{EBADF} per + \func{acl\_get\_fd}, e \errval{ENAMETOOLONG}, \errval{ENOENT}, + \errval{ENOTDIR}, per \func{acl\_get\_file} nel loro significato generico. } \end{funcproto} Le due funzioni ritornano, con un oggetto di tipo \type{acl\_t}, il valore @@ -5939,10 +5939,10 @@ un messaggio di errore in caso contrario. Ottenuta la ACL la si converte in formato testuale (\texttt{\small 27}) con la funzione \func{acl\_to\_text}, controllando di nuovo se l'operazione ha -successo (\texttt{\small 23--26}) ed uscendo in caso contrario. Si provvede -infine a stampare la rappresentazione testuale (\texttt{\small 28}) e dopo -aver liberato (\texttt{\small 29--30}) le risorse allocate automaticamente, -si conclude l'esecuzione. +successo (\texttt{\small 28--31}) ed uscendo in caso contrario. Si provvede +infine a stampare la rappresentazione testuale (\texttt{\small 32}) e dopo +aver liberato (\texttt{\small 33--34}) le risorse allocate automaticamente, si +conclude l'esecuzione. \subsection{La gestione delle quote disco} @@ -7057,7 +7057,7 @@ basso livello; i loro rispettivi prototipi sono: \fdesc{Imposta le \textit{capabilities}.} } -{La funzione ritorna $0$ in caso di successo e $-1$ per un errore, nel qual +{Le funzioni ritornano $0$ in caso di successo e $-1$ per un errore, nel qual caso \var{errno} assumerà uno dei valori: \begin{errlist} \item[\errcode{EFAULT}] si è indicato un puntatore sbagliato o nullo @@ -7877,7 +7877,7 @@ librerie) di cui il server potrebbe avere bisogno. % LocalWords: lazy encfs sshfs setfsent getfsent getfsfile getfsspec endfsent % LocalWords: setmntent getmntent addmntent endmntent hasmntopt such offsetof % LocalWords: member scan attack EOVERFLOW BITS blkcnt rdev FDCWD functions -% LocalWords: faccessat grpid lacl AppArmor capsetp +% LocalWords: faccessat grpid lacl AppArmor capsetp mygetfacl %%% Local Variables: %%% mode: latex