Correzioni varie a figure, altre correzioni di D. Masini, inizio di una
authorSimone Piccardi <piccardi@gnulinux.it>
Sun, 24 Nov 2002 15:47:41 +0000 (15:47 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Sun, 24 Nov 2002 15:47:41 +0000 (15:47 +0000)
riassunto sui permessi con tanto di tabelle.

ChangeLog
filedir.tex
fileintro.tex
fileunix.tex
img/ipv4_head.dia
img/ipv6_head.dia

index 1dfa3b3f897dae4684ce51b84137219dc0d91363..57a102f5e1acb0ce26df0d8a38d30fe90448676c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2002-11-24  Simone Piccardi  <piccardi@gont.earthsea.ea>
+
+       * filedir.tex Correzioni varie da D. Masini
+
 2002-11-21  Simone Piccardi  <piccardi@firenze.linux.it>
 
        * prochand.tex: Correzioni e chiarimenti su suggerimento di D. Masini.
index cc4b004d72f53b73dd92bdabe46d9ceeba3f0700..3774978bdcb7d3256d2f3e29053d08b1a84abb56 100644 (file)
@@ -80,7 +80,7 @@ principali, come risultano dalla pagina di manuale, sono le seguenti:
 
 La creazione di un nuovo collegamento diretto non copia il contenuto del file,
 ma si limita a creare una voce nella directory specificata con \var{newpath} e
-ad aumentare di uno il numero di referenze al file (riportato nel campo
+ad aumentare di uno il numero di riferimenti al file (riportato nel campo
 \var{st\_nlink} della struttura \var{stat}, vedi \secref{sec:file_stat})
 aggiungendo il nuovo nome ai precedenti. Si noti che uno stesso file può
 essere così chiamato con vari nomi in diverse directory.
@@ -168,7 +168,7 @@ processo (quando tutti i file vengono chiusi).
 \subsection{Le funzioni \func{remove} e \func{rename}}
 \label{sec:file_remove}
 
-Al contrario di quanto avviene con altri unix in Linux non è possibile usare
+Al contrario di quanto avviene con altri Unix, in Linux non è possibile usare
 \func{unlink} sulle directory; per cancellare una directory si può usare la
 funzione \func{rmdir} (vedi \secref{sec:file_dir_creat_rem}), oppure la
 funzione \func{remove}. Questa è la funzione prevista dallo standard ANSI C
@@ -608,12 +608,12 @@ struttura \var{struct dirent}.
 \subsection{La directory di lavoro}
 \label{sec:file_work_dir}
 
-A ciascun processo è associato ad una directory nel filesystem che è chiamata
+A ciascun processo è associata una directory nel filesystem che è chiamata
 directory corrente o directory di lavoro (\textit{current working directory})
 che è quella a cui si fa riferimento quando un filename è espresso in forma
 relativa, dove il ``relativa'' fa riferimento appunto a questa directory.
 
-Quando un utente effettua il login questa directory viene impostata alla
+Quando un utente effettua il login, questa directory viene impostata alla
 \textit{home directory} del suo account. Il comando \cmd{cd} della shell
 consente di cambiarla a piacere, spostandosi da una directory ad un'altra, il
 comando \cmd{pwd} la stampa sul terminale.  Siccome la directory corrente
@@ -712,10 +712,10 @@ specificata da \param{fd}.
 \label{sec:file_temp_file}
 
 In molte occasioni è utile poter creare dei file temporanei; benché la cosa
-sembri semplice in realtà il problema è più sottile di quanto non appaia a
+sembri semplice, in realtà il problema è più sottile di quanto non appaia a
 prima vista. Infatti anche se sembrerebbe banale generare un nome a caso e
 creare il file dopo aver controllato che questo non esista, nel momento fra il
-controllo e la creazione si ha giusto lo spazio per una \textit{race
+controllo e la creazione si ha giusto lo spazio per una possibile \textit{race
   condition} (si ricordi quanto visto in \secref{sec:proc_race_cond}).
 
 Le \acr{glibc} provvedono varie funzioni per generare nomi di file temporanei,
@@ -919,7 +919,7 @@ queste funzioni sono i seguenti:
 su un file, su un link simbolico e su un file descriptor.
 
 La struttura \var{stat} usata da queste funzioni è definita nell'header
-\file{sys/stat.h} e in generale dipende dall'implementazione, la versione
+\file{sys/stat.h} e in generale dipende dall'implementazione; la versione
 usata da Linux è mostrata in \figref{fig:file_stat_struct}, così come
 riportata dalla pagina di manuale di \func{stat} (in realtà la definizione
 effettivamente usata nel kernel dipende dall'architettura e ha altri campi
@@ -962,12 +962,12 @@ primitivi del sistema (di quelli definiti in
 \label{sec:file_types}
 
 Come riportato in \tabref{tab:file_file_types} in Linux oltre ai file e alle
-directory esistono vari altri oggetti che possono stare su un filesystem.  Il
-tipo di file è ritornato dalla \func{stat} come maschera binaria nel campo
+directory esistono altri oggetti che possono stare su un filesystem.  Il tipo
+di file è ritornato dalla \func{stat} come maschera binaria nel campo
 \var{st\_mode} (che che contiene anche le informazioni relative ai permessi).
 
 Dato che il valore numerico può variare a seconda delle implementazioni, lo
-standard POSIX definisce un insieme di macro per verificare il tipo di files,
+standard POSIX definisce un insieme di macro per verificare il tipo di file,
 queste vengono usate anche da Linux che supporta pure le estensioni allo
 standard per i link simbolici e i socket definite da BSD; l'elenco completo
 delle macro con cui è possibile estrarre l'informazione da \var{st\_mode} è
@@ -1060,9 +1060,9 @@ poi si effettua il confronto con la combinazione di tipi scelta.
 \subsection{Le dimensioni dei file}
 \label{sec:file_file_size}
 
-Il membro \var{st\_size} contiene la dimensione del file in byte (se il file è
-un file regolare, nel caso di un link simbolico la dimensione è quella del
-pathname che contiene).
+Il membro \var{st\_size} contiene la dimensione del file in byte (se si tratta
+di un file regolare, nel caso di un link simbolico la dimensione è quella del
+pathname che contiene, per le fifo è sempre nullo).
 
 Il campo \var{st\_blocks} definisce la lunghezza del file in blocchi di 512
 byte. Il campo \var{st\_blksize} infine definisce la dimensione preferita per
@@ -1135,8 +1135,8 @@ nell'inode insieme agli altri attributi del file e possono essere letti
 tramite la funzione \func{stat}, che li restituisce attraverso tre campi della
 struttura \var{stat} di \figref{fig:file_stat_struct}. Il significato di detti
 tempi e dei relativi campi è riportato nello schema in
-\tabref{tab:file_file_times}, dove si è anche riportato un esempio delle
-funzioni che effettuano cambiamenti su di essi.
+\tabref{tab:file_file_times}, dove è anche riportato un esempio delle funzioni
+che effettuano cambiamenti su di essi.
 
 \begin{table}[htb]
   \centering
@@ -1337,8 +1337,11 @@ ovviamente in questo modo la cosa 
 
 Una delle caratteristiche fondamentali di tutti i sistemi unix-like è quella
 del controllo di accesso ai file, che viene implementato per qualunque
-filesystem standard. In questa sezione ne esamineremo i concetti essenziali e
-le funzioni usate per gestirne i vari aspetti.
+filesystem standard.\footnote{per standard si intende che implementa le
+  caratteristiche previste dallo standard POSIX. In Linux sono disponibili
+  anche una serie di altri filesystem, come quelli di Windiws e del Mac, che
+  non supportano queste caratteristiche.} In questa sezione ne esamineremo i
+concetti essenziali e le funzioni usate per gestirne i vari aspetti.
 
 
 \subsection{I permessi per l'accesso ai file}
@@ -1346,7 +1349,7 @@ le funzioni usate per gestirne i vari aspetti.
 
 Ad ogni file Linux associa sempre l'utente che ne è proprietario (il
 cosiddetto \textit{owner}) ed un gruppo di appartenenza, secondo il meccanismo
-degli identificatori di utenti e gruppi (\acr{uid} e \acr{gid}). Questi valori
+degli identificatori di utente e gruppo (\acr{uid} e \acr{gid}). Questi valori
 sono accessibili da programma tramite la funzione \func{stat}, e sono
 mantenuti nei campi \var{st\_uid} e \var{st\_gid} della struttura \var{stat}
 (si veda \secref{sec:file_stat}).\footnote{Questo è vero solo per filesystem
@@ -1359,12 +1362,11 @@ Il controllo di accesso ai file segue un modello abbastanza semplice che
 prevede tre permessi fondamentali strutturati su tre livelli di accesso.
 Esistono varie estensioni a questo modello,\footnote{come le \textit{Access
     Control List} che possono essere aggiunte al filesystem standard con
-  opportune patch, e sono presenti in filesystem non ancora inclusi nel kernel
-  ufficiale come \textsl{xfs}, o meccanismi di controllo ancora più
-  sofisticati come il \textit{mandatory access control} di SE-Linux.} ma nella
-maggior parte dei casi il meccanismo standard è più che sufficiente a
-soffisfare tutte le necessità più comuni.  I tre permessi di base associati ad
-ogni file sono:
+  opportune patch, la cui introduzione nei kernel ufficiali è iniziata con la
+  serie 2.5.x. per arrivare a meccanismi di controllo ancora più sofisticati
+  come il \textit{mandatory access control} di SE-Linux.} ma nella maggior
+parte dei casi il meccanismo standard è più che sufficiente a soddisfare tutte
+le necessità più comuni.  I tre permessi di base associati ad ogni file sono:
 \begin{itemize*}
 \item il permesso di lettura (indicato con la lettera \texttt{r}, dall'inglese
   \textit{read}).
@@ -1389,7 +1391,16 @@ rispettivamente al proprietario, al gruppo, a tutti gli altri.
 I restanti tre bit (noti come \acr{suid}, \acr{sgid}, e \textsl{sticky}) sono
 usati per indicare alcune caratteristiche più complesse del meccanismo del
 controllo di accesso su cui torneremo in seguito (in
-\secref{sec:file_suid_sgid} e \secref{sec:file_sticky}).
+\secref{sec:file_suid_sgid} e \secref{sec:file_sticky}); lo schema di
+allocazione dei bit è riportato in \figref{fig:file_perm_bit}.
+
+\begin{figure}[htb]
+  \centering
+  \includegraphics[width=6cm]{img/fileperm}
+  \caption{Lo schema dei bit utilizzati per specificare i permessi di un file
+    contenuti nel campo \var{st\_mode} di \var{fstat}.}
+  \label{fig:file_perm_bit}
+\end{figure}
 
 Anche i permessi, come tutte le altre informazioni pertinenti al file, sono
 memorizzati nell'inode; in particolare essi sono contenuti in alcuni bit del
@@ -1433,7 +1444,7 @@ che permettono di accedere al valore numerico di questi bit nel campo
 \end{table}
 
 I permessi vengono usati in maniera diversa dalle varie funzioni, e a seconda
-che si riferiscano a dei file, dei link simbolici o delle directory, qui ci
+che si riferiscano a dei file, dei link simbolici o delle directory; qui ci
 limiteremo ad un riassunto delle regole generali, entrando nei dettagli più
 avanti.
 
@@ -1525,7 +1536,7 @@ di accesso sono i seguenti:
 \end{enumerate}
 
 Si tenga presente che questi passi vengono eseguiti esattamente in
-quest'ordine. Questo vuol dire che se un processo è il proprietario di un file
+quest'ordine. Questo vuol dire che se un processo è il proprietario di un file,
 l'accesso è consentito o negato solo sulla base dei permessi per l'utente; i
 permessi per il gruppo non vengono neanche controllati. Lo stesso vale se il
 processo appartiene ad un gruppo appropriato, in questo caso i permessi per
@@ -1549,12 +1560,13 @@ identificatori del gruppo \textit{effective} del nuovo processo al valore dei
 corrispondenti del gruppo \textit{real} del processo corrente, che normalmente
 corrispondono dell'utente con cui si è entrati nel sistema.
 
-Se però il file del programma\footnote{per motivi di sicurezza il kernel
-  ignora i bit \acr{suid} e \acr{sgid} per gli script eseguibili.} (che
-ovviamente deve essere eseguibile) ha il bit \acr{suid} impostato, il kernel
-assegnerà come userid effettivo al nuovo processo l'\acr{uid} del proprietario
-del file al posto dell'\acr{uid} del processo originario.  Avere il bit
-\acr{sgid} impostato ha lo stesso effetto sul groupid effettivo del processo.
+Se però il file del programma (che ovviamente deve essere
+eseguibile\footnote{per motivi di sicurezza il kernel ignora i bit \acr{suid}
+  e \acr{sgid} per gli script eseguibili.}) ha il bit \acr{suid} impostato, il
+kernel assegnerà come userid effettivo al nuovo processo l'\acr{uid} del
+proprietario del file al posto dell'\acr{uid} del processo originario.  Avere
+il bit \acr{sgid} impostato ha lo stesso effetto sul groupid effettivo del
+processo.
 
 I bit \acr{suid} e \acr{sgid} vengono usati per permettere agli utenti normali
 di usare programmi che abbisognano di privilegi speciali; l'esempio classico è
@@ -1580,16 +1592,16 @@ l'uso delle due costanti \macro{S\_ISUID} e \macro{S\_IGID}, i cui valori sono
 riportati in \tabref{tab:file_mode_flags}.
 
 Gli stessi bit vengono ad assumere in significato completamente diverso per le
-directory, normalmente infatti Linux usa la convenzione di SVR4 per indicare
+directory, normalmente infatti Linux usa la convenzione di SVr4 per indicare
 con questi bit l'uso della semantica BSD nella creazione di nuovi file (si
 veda \secref{sec:file_ownership} per una spiegazione dettagliata al
 proposito).
 
 Infine Linux utilizza il bit \acr{sgid} per una ulteriore estensione mutuata
-da SVr4. Il caso in cui un file ha il bit \acr{sgid} impostare senza che lo sia
-anche il corrispondente bit di esecuzione viene utilizzato per attivare per
-quel file il \textit{mandatory locking} (argomento che affronteremo in
-dettagliopiù avanti in \secref{sec:file_mand_locking}).
+da SVr4. Il caso in cui un file ha il bit \acr{sgid} impostato senza che lo
+sia anche il corrispondente bit di esecuzione viene utilizzato per attivare
+per quel file il \textit{mandatory locking} (affronteremo questo argomento in
+dettaglio più avanti, in \secref{sec:file_mand_locking}).
 
 
 \subsection{Il bit \textsl{sticky}}
@@ -1619,7 +1631,7 @@ sostanzialmente inutile questo procedimento.
 Benché ormai non venga più utilizzato per i file, lo \textsl{sticky bit} ha
 invece assunto un uso importante per le directory;\footnote{lo \textsl{sticky
     bit} per le directory è un'estensione non definita nello standard POSIX,
-  Linux però la supporta, così come BSD e SVR4.} in questo caso se il bit è
+  Linux però la supporta, così come BSD e SVr4.} in questo caso se tale bit è
 impostato un file potrà essere rimosso dalla directory soltanto se l'utente ha
 il permesso di scrittura su di essa ed inoltre è vera una delle seguenti
 condizioni:
@@ -1655,7 +1667,7 @@ Lo standard POSIX prescrive che l'\acr{uid} del nuovo file corrisponda
 all'userid effettivo del processo che lo crea; per il \acr{gid} invece prevede
 due diverse possibilità:
 \begin{itemize*}
-\item il \acr{gid} del file corrisponde al group id effettivo del processo.
+\item il \acr{gid} del file corrisponde al groupid effettivo del processo.
 \item il \acr{gid} del file corrisponde al \acr{gid} della directory in cui
   esso è creato.
 \end{itemize*}
@@ -1670,8 +1682,8 @@ automaticamente propagato, restando coerente a quello della directory di
 partenza, in tutte le sottodirectory. La semantica SVr4 offre la possibilità
 di scegliere, ma per ottenere lo stesso risultato di coerenza che si ha con
 BSD necessita che per le nuove directory venga anche propagato anche il bit
-\acr{sgid}. Questo è il comportamento predefinito di \func{mkdir}, ed è in
-questo modo ad esempio che Debian assicura che le sottodirectory create nelle
+\acr{sgid}. Questo è il comportamento predefinito di \cmd{mkdir}, ed è in
+questo modo ad esempio che Debian assicura che le sottodirectory create nella
 home di un utente restino sempre con il \acr{gid} del gruppo primario dello
 stesso.
 
@@ -1768,23 +1780,17 @@ filename e su un file descriptor, i loro prototipi sono:
   \begin{errlist}
   \item[\macro{EPERM}] L'userid effettivo non corrisponde a quello del
     proprietario del file o non è zero.
+    \item[\macro{EROFS}] Il file è su un filesystem in sola lettura.
   \end{errlist}
-  ed inoltre \macro{EROFS} e \macro{EIO}; \func{chmod} restituisce anche
-  \macro{EFAULT}, \macro{ENAMETOOLONG}, \macro{ENOENT}, \macro{ENOMEM},
-  \macro{ENOTDIR}, \macro{EACCES}, \macro{ELOOP}; \func{fchmod} anche
-  \macro{EBADF}.}
+  ed inoltre \macro{EIO}; \func{chmod} restituisce anche \macro{EFAULT},
+  \macro{ENAMETOOLONG}, \macro{ENOENT}, \macro{ENOMEM}, \macro{ENOTDIR},
+  \macro{EACCES}, \macro{ELOOP}; \func{fchmod} anche \macro{EBADF}.}
 \end{functions}
 
-I valori possibili per \var{mode} sono indicati in
-\tabref{tab:file_permission_const}. I valori possono esser combinati con l'OR
-binario delle relative costanti simboliche, o specificati direttamente, come
-per l'analogo comando di shell, con il valore numerico (la shell lo vuole in
-ottale, dato che i bit dei permessi sono divisibili in gruppi di tre). Ad
-esempio i permessi standard assegnati ai nuovi file (lettura e scrittura per
-il proprietario, sola lettura per il gruppo e gli altri) sono corrispondenti
-al valore ottale $0644$, un programma invece avrebbe anche il bit di
-esecuzione attivo, con un valore di $0755$, se si volesse attivare il bit
-\acr{suid} il valore da fornire sarebbe $4755$.
+Entrambe le funzioni utilizzano come secondo argomento \param{mode}, una
+variabile dell'apposito tipo primitivo \type{mode\_t} (vedi
+\tabref{tab:intro_primitive_types}) utilizzato per specificare i permessi sui
+file.
 
 \begin{table}[!htb]
   \centering
@@ -1814,37 +1820,58 @@ esecuzione attivo, con un valore di $0755$, se si volesse attivare il bit
     \macro{S\_IXOTH} & 00001 & gli altri hanno il permesso di esecuzione \\
     \hline
   \end{tabular}
-  \caption{I valori delle costanti usate per indicare i permessi dei file.}
+  \caption{Valori delle costanti usate per indicare i vari bit di
+    \param{mode} utilizzato per impostare i permessi dei file.}
   \label{tab:file_permission_const}
 \end{table}
 
-Il cambiamento dei permessi di un file attraverso queste funzioni ha comunque
-alcune limitazioni, provviste per motivi di sicurezza. Questo significa che
-anche se si è proprietari del file non tutte le operazioni sono permesse, in
-particolare:
+Le costanti con cui specificare i singoli bit di \param{mode} sono riportate
+in \tabref{tab:file_permission_const}. Il valore di \param{mode} può essere
+ottenuto combinando fra loro con un OR binario le costanti simboliche relative
+ai vari bit, o specificato direttamente, come per l'omonimo comando di shell,
+con un valore numerico (la shell lo vuole in ottale, dato che i bit dei
+permessi sono divisibili in gruppi di tre), che si può calcolare direttamente
+usando lo schema si utilizzo dei bit illustrato in \figref{fig:file_perm_bit}.
+
+Ad esempio i permessi standard assegnati ai nuovi file (lettura e scrittura
+per il proprietario, sola lettura per il gruppo e gli altri) sono
+corrispondenti al valore ottale $0644$, un programma invece avrebbe anche il
+bit di esecuzione attivo, con un valore di $0755$, se si volesse attivare il
+bit \acr{suid} il valore da fornire sarebbe $4755$.
+
+Il cambiamento dei permessi di un file eseguito attraverso queste funzioni ha
+comunque alcune limitazioni, previste per motivi di sicurezza. L'uso delle
+funzioni infatti è possibile solo se l'userid effettivo del processo
+corrisponde a quello del proprietario del file o dell'amministratore,
+altrimenti esse falliranno con un errore di \macro{EPERM}.
+
+Ma oltre a questa regola generale, di immediata comprensione, esistono delle
+limitazioni ulteriori. Per questo motivo, anche se si è proprietari del file,
+non tutti i valori possibili di \param{mode} sono permessi o hanno effetto;
+in particolare accade che:
 \begin{enumerate}
 \item siccome solo l'amministratore può impostare lo \textit{sticky bit}, se
   l'userid effettivo del processo non è zero esso viene automaticamente
   cancellato (senza notifica di errore) qualora sia stato indicato in
-  \var{mode}.
-\item per via della semantica SVr4 nella creazione dei nuovi file, si può
-  avere il caso in cui il file creato da un processo è assegnato a un gruppo
-  per il quale il processo non ha privilegi. Per evitare che si possa
-  assegnare il bit \acr{sgid} ad un file appartenente a un gruppo per cui non
-  si hanno diritti, questo viene automaticamente cancellato (senza notifica di
-  errore) da \var{mode} qualora il gruppo del file non corrisponda a quelli
-  associati al processo (la cosa non avviene quando l'userid effettivo del
-  processo è zero).
+  \param{mode}.
+\item per quanto detto in \secref{sec:file_ownership} riguardo la creazione
+  dei nuovi file, si può avere il caso in cui il file creato da un processo è
+  assegnato a un gruppo per il quale il processo non ha privilegi. Per evitare
+  che si possa assegnare il bit \acr{sgid} ad un file appartenente a un gruppo
+  per cui non si hanno diritti, questo viene automaticamente cancellato da
+  \param{mode} (senza notifica di errore) qualora il gruppo del file non
+  corrisponda a quelli associati al processo (la cosa non avviene quando
+  l'userid effettivo del processo è zero).
 \end{enumerate}
 
 Per alcuni filesystem\footnote{il filesystem \acr{ext2} supporta questa
   caratteristica, che è mutuata da BSD.} è inoltre prevista una ulteriore
 misura di sicurezza, volta a scongiurare l'abuso dei bit \acr{suid} e
-\acr{sgid}; essa consiste nel cancellare automaticamente questi bit qualora un
-processo che non appartenga all'amministratore scriva su un file. In questo
-modo anche se un utente malizioso scopre un file \acr{suid} su cui può
-scrivere, un'eventuale modifica comporterà la perdita di ogni ulteriore
-privilegio.
+\acr{sgid}; essa consiste nel cancellare automaticamente questi bit dai
+permessi di un file qualora un processo che non appartenga all'amministratore
+effettui una scrittura. In questo modo anche se un utente malizioso scopre un
+file \acr{suid} su cui può scrivere, un'eventuale modifica comporterà la
+perdita di questo privilegio.
 
 \subsection{La funzione \func{umask}}
 \label{sec:file_umask}
@@ -1943,11 +1970,101 @@ che per il file 
 %completo vedi \ntab), i permessi (vedi \secref{sec:file_perms}), le date (vedi
 %\secref{sec:file_times}).
 
+
+\subsection{Un quadro d'insieme sui permessi}
+\label{sec:file_riepilogo}
+
+Avendo affrontato in maniera separata il comportamento delle varie funzioni ed
+il significato dei singoli bit dei permessi sui file, vale la pena fare un
+riepilogo in cui si riassumono le caratteristiche di ciascuno di essi, in modo
+da poter fornire un quadro d'insieme.
+
+In \tabref{tab:file_fileperm_bits} si sono riassunti gli effetti dei vari bit
+per un file; per quanto riguarda l'applicazione dei permessi per proprietario,
+gruppo ed altri si ricordi quanto illustrato in
+\secref{sec:file_perm_overview}.  Per compattezza nella tabella si sono
+specificati i bit di \acr{suid}, \acr{sgid} e \acr{stiky} con la notazione
+illustrata anche in \figref{fig:file_perm_bit}.
+
+\begin{table}[!htb]
+  \centering
+  \footnotesize
+  \begin{tabular}[c]{|c|c|c|c|c|c|c|c|c|c|c|c|p{7cm}|}
+    \hline
+    \multicolumn{3}{|c|}{}&
+    \multicolumn{3}{|c|}{user}&
+    \multicolumn{3}{|c|}{group}&
+    \multicolumn{3}{|c|}{other}&
+    \multirow{2}{*}{\textbf{Operazioni possibili}} \\
+    \cline{1-12}
+    \acr{s}&\acr{s}&\acr{t}&r&w&x&r&w&x&r&w&x& \\
+    \hline
+    \hline
+    1&-&-&-&-&-&-&-&-&-&-&-&Se eseguito ha i permessi del propritario\\
+    -&1&-&-&-&1&-&-&-&-&-&-&Se eseguito ha i permessi del gruppo propritario\\
+    -&1&-&-&-&0&-&-&-&-&-&-&Il \textit{mandatory locking} è abilitato\\
+    -&-&1&-&-&-&-&-&-&-&-&-&Ineffettivo\\
+    -&-&-&1&-&-&-&-&-&-&-&-&Permesso di lettura per il propritario\\
+    -&-&-&-&1&-&-&-&-&-&-&-&Permesso di lettura per il gruppo propritario\\
+    -&-&-&-&-&1&-&-&-&-&-&-&Permesso di lettura per tutti gli altri\\
+    -&-&-&-&-&-&1&-&-&-&-&-&Permesso di scrittura per il propritario\\
+    -&-&-&-&-&-&-&1&-&-&-&-&Permesso di scrittura per il gruppo propritario\\
+    -&-&-&-&-&-&-&-&1&-&-&-&Permesso di scrittura per tutti gli altri \\
+    -&-&-&-&-&-&-&-&-&1&-&-&Permesso di esecuzione per il propritario\\
+    -&-&-&-&-&-&-&-&-&-&1&-&Permesso di esecuzione per il gruppo propritario\\
+    -&-&-&-&-&-&-&-&-&-&-&1&Permesso di esecuzione per tutti gli altri\\
+    \hline
+  \end{tabular}
+  \caption{Tabella riassuntiva del significato dei bit dei permessi per un
+    file.} 
+  \label{tab:file_fileperm_bits}
+\end{table}
+
+In \tabref{tab:file_dirperm_bits} si sono riassunti gli effetti dei vari bit
+per una directory; anche in questo caso si sono specificati i bit di
+\acr{suid}, \acr{sgid} e \acr{stiky} con la notazione illustrata anche in
+\figref{fig:file_perm_bit}. 
+
+\begin{table}[!htb]
+  \centering
+  \footnotesize
+  \begin{tabular}[c]{|c|c|c|c|c|c|c|c|c|c|c|c|p{7cm}|}
+    \hline
+    \multicolumn{3}{|c|}{}&
+    \multicolumn{3}{|c|}{user}&
+    \multicolumn{3}{|c|}{group}&
+    \multicolumn{3}{|c|}{other}&
+    \multirow{2}{*}{\textbf{Operazioni possibili}} \\
+    \cline{1-12}
+    \acr{s}&\acr{s}&\acr{t}&r&w&x&r&w&x&r&w&x& \\
+    \hline
+    \hline
+    1&-&-&-&-&-&-&-&-&-&-&-&Se eseguito ha i permessi del propritario\\
+    -&1&-&-&-&1&-&-&-&-&-&-&Se eseguito ha i permessi del gruppo propritario\\
+    -&1&-&-&-&0&-&-&-&-&-&-&Il \textit{mandatory locking} è abilitato\\
+    -&-&1&-&-&-&-&-&-&-&-&-&Ineffettivo\\
+    -&-&-&1&-&-&-&-&-&-&-&-&Permesso di lettura per il propritario\\
+    -&-&-&-&1&-&-&-&-&-&-&-&Permesso di lettura per il gruppo propritario\\
+    -&-&-&-&-&1&-&-&-&-&-&-&Permesso di lettura per tutti gli altri\\
+    -&-&-&-&-&-&1&-&-&-&-&-&Permesso di scrittura per il propritario\\
+    -&-&-&-&-&-&-&1&-&-&-&-&Permesso di scrittura per il gruppo propritario\\
+    -&-&-&-&-&-&-&-&1&-&-&-&Permesso di scrittura per tutti gli altri \\
+    -&-&-&-&-&-&-&-&-&1&-&-&Permesso di esecuzione per il propritario\\
+    -&-&-&-&-&-&-&-&-&-&1&-&Permesso di esecuzione per il gruppo propritario\\
+    -&-&-&-&-&-&-&-&-&-&-&1&Permesso di esecuzione per tutti gli altri\\
+    \hline
+  \end{tabular}
+  \caption{Tabella riassuntiva del significato dei bit dei permessi per una
+    directory.} 
+  \label{tab:file_dirperm_bits}
+\end{table}
+
+
 \subsection{La funzione \func{chroot}}
 \label{sec:file_chroot}
 
-Benché non abbia niente a che fare con permessi, utenti e gruppi, questa
-funzione viene usata spesso per restringere le capacità di acccesso di un
+Benché non abbia niente a che fare con permessi, utenti e gruppi, la funzione
+\func{chroot} viene usata spesso per restringere le capacità di acccesso di un
 programma ad una sezione limitata del filesystem, per cui ne parleremo in
 questa sezione.
 
index d20ab6be7d98cb71b0a1a53da772ef0ffd5d4e5e..7da0dabd468dc644981984874a577cda4745b783 100644 (file)
@@ -495,8 +495,8 @@ operazioni previste dal kernel 
                              \secref{sec:file_multiplexing}). \\
     \textsl{\code{mmap}}   & mappa il file in memoria (vedi 
                              \secref{sec:file_memory_map}). \\
-    \textsl{\code{release}}& chiamata quando l'ultima referenza a un file 
-                             aperto è chiusa. \\
+    \textsl{\code{release}}& chiamata quando l'ultimo riferimento a un file 
+                             aperto è chiuso. \\
     \textsl{\code{fsync}}  & sincronizza il contenuto del file (vedi
                              \secref{sec:file_sync}). \\
     \textsl{\code{fasync}} & abilita l'I/O asincrono (vedi
@@ -513,12 +513,11 @@ astratta del VFS.  Qualora se ne voglia eseguire una, il kernel andr
 utilizzare l'opportuna routine dichiarata in \var{f\_ops} appropriata al tipo
 di file in questione.
 
-In questo modo è possibile scrivere allo stesso modo sulla porta seriale come
-su normale un file di dati; ovviamente certe operazioni (nel caso della
-seriale ad esempio la \code{seek}) non saranno disponibili, però con questo
-sistema l'utilizzo di diversi filesystem (come quelli usati da Windows o
-MacOs) è immediato e (relativamente) trasparente per l'utente ed il
-programmatore.
+Pertanto è possibile scrivere allo stesso modo sulla porta seriale come su
+normale un file di dati; ovviamente certe operazioni (nel caso della seriale
+ad esempio la \code{seek}) non saranno disponibili, però con questo sistema
+l'utilizzo di diversi filesystem (come quelli usati da Windows o MacOs) è
+immediato e (relativamente) trasparente per l'utente ed il programmatore.
 
 
 \subsection{Il funzionamento di un filesystem Unix}
index 0e2658ee7807e203e26f4a9a056fed7f8a5461cb..0f1f22565e8b03ade3c9d2da68ed57478b015c30 100644 (file)
@@ -753,7 +753,7 @@ voce della \textit{file table}.
 \subsection{Operazioni atomiche coi file}
 \label{sec:file_atomic}
 
-Come si è visto in un sistema unix è sempre possibile per più processi
+Come si è visto in un sistema Unix è sempre possibile per più processi
 accedere in contemporanea allo stesso file, e che le operazioni di lettura e
 scrittura possono essere fatte da ogni processo in maniera autonoma in base
 ad una posizione corrente nel file che è locale a ciascuno di essi.
index 657c7768a52c0509f39679c05e02774d505ec205..63a7ac84a4124e813659bdb6e0104dfbd9fe08b0 100644 (file)
Binary files a/img/ipv4_head.dia and b/img/ipv4_head.dia differ
index 2d2e75f9ab371dd0c484262554340d7c1dfbda91..4fe96fb5a4a903e27c8b04490ff88cde8c9b1782 100644 (file)
Binary files a/img/ipv6_head.dia and b/img/ipv6_head.dia differ