X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=filedir.tex;h=d7cfa6f9c77cb87f4a051ff65bdb44b89bc738d1;hp=efeb41c6575d712e6fd92969dcade858c956ae13;hb=7090500d79c488db306ed0c065b90bb0c0505430;hpb=9103d0fa93c72112bfa11a7b1a27fc3dd5e1752c diff --git a/filedir.tex b/filedir.tex index efeb41c..d7cfa6f 100644 --- a/filedir.tex +++ b/filedir.tex @@ -151,7 +151,7 @@ singola system call. Si ricordi infine che il file non viene eliminato dal disco fintanto che tutti i riferimenti ad esso sono stati cancellati, solo quando il \textit{link count} mantenuto nell'inode diventa zero lo spazio occupato viene rimosso. A -questo però si aggiunge una altra condizione, e cioè che non ci siano processi +questo però si aggiunge un'altra condizione, e cioè che non ci siano processi che abbiano detto file aperto. Questa proprietà viene spesso usata per essere sicuri di non lasciare file @@ -185,9 +185,9 @@ directory \end{prototype} Per cambiare nome ad un file o a una directory (che devono comunque essere -nello stesso filesystem) si usa invece la funzione \func{rename}\footnote{la +nello stesso filesystem) si usa invece la funzione \func{rename},\footnote{la funzione è definita dallo standard ANSI C solo per i file, POSIX estende la - funzione anche alle directory}, il cui prototipo è: + funzione anche alle directory.} il cui prototipo è: \begin{prototype}{stdio.h} {int rename(const char *oldpath, const char *newpath)} @@ -248,7 +248,7 @@ eseguita. In ogni caso se \var{newpath} esiste e l'operazione fallisce per un qualche motivo (come un crash del kernel), \func{rename} garantisce di lasciare -presente una istanza di \var{newpath}. Tuttavia nella sovrascrittura potrà +presente un'istanza di \var{newpath}. Tuttavia nella sovrascrittura potrà esistere una finestra in cui sia \var{oldpath} che \var{newpath} fanno riferimento allo stesso file. @@ -387,13 +387,13 @@ stringa con un carattere nullo e la tronca alla dimensione specificata da Un caso comune che si può avere con i link simbolici è la creazione dei cosiddetti \textit{loop}. La situazione è illustrata in \curfig, che riporta la struttura della directory \file{/boot}. Come si vede si è creato al suo -interno un link simbolico che punta di nuovo a \file{/boot}\footnote{Questo +interno un link simbolico che punta di nuovo a \file{/boot}.\footnote{Questo tipo di loop è stato effettuato per poter permettere a \cmd{grub} (un bootloader in grado di leggere direttamente da vari filesystem il file da lanciare come sistema operativo) di vedere i file in questa directory con lo stesso path con cui verrebbero visti dal sistema operativo, anche se essi si trovano, come è solito, su una partizione separata (e che \cmd{grub} - vedrebbe come radice).}. + vedrebbe come radice).} Questo può causare problemi per tutti quei programmi che effettuano la scansione di una directory senza tener conto dei link simbolici, ad esempio se @@ -422,7 +422,7 @@ quanto aprendo in scrittura \file{temporaneo} verr $ cat temporaneo cat: temporaneo: No such file or directory \end{verbatim}%$ -con un errore che può sembrare sbagliato, dato che una ispezione con \cmd{ls} +con un errore che può sembrare sbagliato, dato che un'ispezione con \cmd{ls} ci mostrerebbe invece l'esistenza di \file{temporaneo}. @@ -597,7 +597,7 @@ Per accedere al contenuto delle directory si usano i cosiddetti \capref{cha:files_std_interface}); la funzione \func{opendir} apre uno di questi stream e la funzione \func{readdir} legge il contenuto della directory, i cui elementi sono le \textit{directory entry} (da distinguersi da quelle -della cache di cui parlavamo in \secref{sec:file_vfs}) in una opportuna +della cache di cui parlavamo in \secref{sec:file_vfs}) in un'opportuna struttura \var{struct dirent}. (NdA Il resto va scritto!!! É noioso e lo farò più avanti). @@ -644,8 +644,8 @@ apposita funzione di libreria, \func{getcwd}, il cui prototipo Il buffer deve essere sufficientemente lungo da poter contenere il pathname completo più lo zero di terminazione della stringa. Qualora esso ecceda le dimensioni specificate con \var{size} la funzione restituisce un errore. Si -può anche specificare un puntatore nullo come \var{buffer}\footnote{questa è - una estensione allo standard POSIX.1, supportata da Linux}, nel qual caso la +può anche specificare un puntatore nullo come \var{buffer},\footnote{questa è + un'estensione allo standard POSIX.1, supportata da Linux.} nel qual caso la stringa sarà allocata automaticamente per una dimensione pari a \var{size} qualora questa sia diversa da zero, o della lunghezza esatta del pathname altrimenti. In questo caso ci si deve ricordare di disallocare la stringa una @@ -998,7 +998,7 @@ Il primo valore dell'elenco di \secref{tab:file_mode_flags} binaria che permette di estrarre i bit nei quali viene memorizzato il tipo di file, i valori successivi sono le costanti corrispondenti ai singoli bit, e possono essere usati per effettuare la selezione sul tipo di file voluto, con -una opportuna combinazione. +un'opportuna combinazione. \begin{table}[htb] \centering @@ -1182,7 +1182,7 @@ essere capiti se si tiene conto di quanto gi directory sono file (che contengono una lista di nomi) che il sistema tratta in maniera del tutto analoga a tutti gli altri. -Per questo motivo tutte le volte che compiremo una operazione su un file che +Per questo motivo tutte le volte che compiremo un'operazione su un file che comporta una modifica del nome contenuto nella directory, andremo anche a scrivere sulla directory che lo contiene cambiandone il tempo di modifica. Un esempio di questo può essere la cancellazione di un file, invece leggere o @@ -1343,7 +1343,7 @@ 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 + 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: @@ -1601,9 +1601,9 @@ Le attuali implementazioni di memoria virtuale e filesystem rendono 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 è una estensione non definita nello standard POSIX, - Linux però la supporta, così come BSD e SVR4.}; in questo caso se il bit è +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 è settato 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: @@ -1818,7 +1818,7 @@ misura di sicurezza, volta ad 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, una eventuale modifica comporterà la perdita di ogni ulteriore +scrivere, un'eventuale modifica comporterà la perdita di ogni ulteriore privilegio. \subsection{La funzione \func{umask}} @@ -1839,7 +1839,7 @@ funzione \func{umask}, il cui prototipo Questa maschera è una caratteristica di ogni processo\footnote{è infatti contenuta nel campo \var{umask} di \var{fs\_struct}, vedi - \figref{fig:proc_task_struct}} e viene utilizzata per impedire che alcuni + \figref{fig:proc_task_struct}.} e viene utilizzata per impedire che alcuni permessi possano essere assegnati ai nuovi file in sede di creazione. I bit indicati nella maschera vengono infatti esclusi quando un nuovo file viene creato. @@ -1901,10 +1901,10 @@ in link simbolico si deve usare la funzione \func{lchown}.\footnote{fino alla versione 2.1.81 in Linux \func{chown} non seguiva i link simbolici, da allora questo comportamento è stato assegnato alla funzione \func{lchown}, introdotta per l'occasione, ed è stata creata una nuova system call per - \func{chown} che seguisse i link simbolici} La funzione \func{fchown} opera + \func{chown} che seguisse i link simbolici.} La funzione \func{fchown} opera su un file aperto, essa è mutuata da BSD, ma non è nello standard POSIX. Un'altra estensione rispetto allo standard POSIX è che specificando -1 come -valore per \var{owner} e \var{group} i valori restano immutati. +valore per \var{owner} e \var{group} i valori restano immutati. Quando queste funzioni sono chiamate con successo da un processo senza i privilegi di root entrambi i bit \acr{suid} e \acr{sgid} vengono