From: Simone Piccardi Date: Sat, 26 Jan 2019 10:17:17 +0000 (+0100) Subject: Correzioni prima del pull, probabile conflitto X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=commitdiff_plain;h=59d3b08bf23a31aa57e42b58361523bd8f92666e;p=gapil.git Correzioni prima del pull, probabile conflitto --- diff --git a/fileio.tex b/fileio.tex index 024cc34..41d3954 100644 --- a/fileio.tex +++ b/fileio.tex @@ -1738,24 +1738,26 @@ quanto visto per \func{access} in sez.~\ref{sec:file_perm_management}). Inoltre come già accennato, la directory di lavoro corrente è una proprietà associata al singolo processo; questo significa che quando si lavora con i -\textit{thread} questa sarà sempre la stessa per tutti \textit{thread}, ed un -cabiamento di directory di lavoro effettuato all'interno di un \textit{thread} -verrà applicato a tutti, non esiste quindi con le funzioni classiche un modo -semplice per far si che i singoli \textit{thread} possano aprire file usando -una propria directory per risolvere i \textit{pathname} relativi. +\textit{thread} questa sarà sempre la stessa per tutti \textit{thread}, per +cui un cabiamento di directory di lavoro effettuato all'interno di un +\textit{thread} verrà applicato anche a tutti gli altri; non esiste quindi con +le funzioni classiche un modo semplice per far si che i singoli +\textit{thread} possano aprire file usando una propria directory per risolvere +i \textit{pathname} relativi. Per risolvere questi problemi, riprendendo una interfaccia già presente in Solaris, a fianco delle normali funzioni che operano sui file (come \func{open}, \func{mkdir}, ecc.) sono state introdotte delle ulteriori -funzioni di sistema, chiamate ``\textit{at-functions}'' in quanto quasi tutte -sono contraddistinte dal suffisso \texttt{at}, che permettono l'apertura di un -file (o le rispettive altre operazioni) usando un \textit{pathname} relativo -ad una directory specificata.\footnote{l'introduzione è avvenuta su proposta - dello sviluppatore principale della \acr{glibc} Urlich Drepper e le - corrispondenti \textit{system call} sono state inserite nel kernel a partire - dalla versione 2.6.16, in precedenza era disponibile una emulazione che, sia - pure con prestazioni inferiori, funzionava facendo ricorso all'uso del - filesystem \textit{proc} con l'apertura del file attraverso il riferimento a +funzioni di sistema, chiamate genericamente ``\textit{at-functions}'' in +quanto usualmente contraddistinte dal suffisso \texttt{at}, che permettono +l'apertura di un file (o le rispettive altre operazioni) usando un +\textit{pathname} relativo ad una directory +specificata.\footnote{l'introduzione è avvenuta su proposta dello sviluppatore + principale della \acr{glibc} Urlich Drepper e le corrispondenti + \textit{system call} sono state inserite nel kernel a partire dalla versione + 2.6.16, in precedenza era disponibile una emulazione che, sia pure con + prestazioni inferiori, funzionava facendo ricorso all'uso del filesystem + \textit{proc} con l'apertura del file attraverso il riferimento a \textit{pathname} del tipo di \texttt{/proc/self/fd/dirfd/relative\_path}.} Benché queste funzioni non siano presenti negli standard tradizionali esse @@ -1806,20 +1808,19 @@ esame la nuova funzione di sistema \funcd{openat}, il cui prototipo è: Il comportamento di \func{openat} è del tutto analogo a quello di \func{open}, con la sola eccezione del fatto che se per l'argomento \param{pathname} si utilizza un \textit{pathname} relativo questo, sarà risolto rispetto alla -directory indicata da \param{dirfd}. Qualora invece si usi un +directory indicata da \param{dirfd}; qualora invece si usi un \textit{pathname} assoluto \param{dirfd} verrà semplicemente ignorato. Infine -se per \param{dirfd} si usa il valore speciale \constd{AT\_FDCWD}, la +se per \param{dirfd} si usa il valore speciale \constd{AT\_FDCWD} la risoluzione sarà effettuata rispetto alla directory di lavoro corrente del -processo. Si tenga presente però che questa, come le altre costanti -\texttt{AT\_*}, è definita in \headfile{fcntl.h}, pertanto se la si vuole -usare occorrerà includere comunque questo file, anche per le funzioni che non -sono definite in esso. +processo. Questa, come le altre costanti \texttt{AT\_*}, è definita in +\headfile{fcntl.h}, per cui per usarla occorrerà includere comunque questo +file, anche per le funzioni che non sono definite in esso. -Si tenga comunque presente che l'uso di \func{openat} non risolve in generale -tutte le possibili \textit{race condition} legati all'apertura di un file, -dopo un eventuale controllo di accesso o esistenza, ma consente comunque di -difendersi da tutti gli attacchi eseguiti modificando le componenti superiori -del suo \textit{pathname}. Inoltre una ... +Si tenga presente che l'uso di \func{openat} non risolve in generale tutte le +possibili \textit{race condition} legate all'apertura di un file dopo un +eventuale controllo di accesso o esistenza, ma consente comunque di difendersi +da tutti gli attacchi eseguiti modificando le componenti superiori del suo +\textit{pathname}. Inoltre una ... Così come il comportamento, anche i valori di ritorno e le condizioni di errore delle nuove funzioni sono gli stessi delle funzioni classiche, agli @@ -1894,6 +1895,9 @@ anche l'aggiunta di un ulteriore argomento finale, \param{flags}. % TODO manca prototipo di execveat, introdotta nel 3.19, vedi % https://lwn.net/Articles/626150/ cerca anche fexecve +% TODO: trattare i nuovi AT_flags quando e se arriveranno, vedi +% https://lwn.net/Articles/767547/ + Per tutte le funzioni che lo prevedono, a parte \func{unlinkat} e \funcd{faccessat}, l'ulteriore argomento è stato introdotto solo per fornire