From 3f27d739c356baab70b7be0db36afc56be25d6ca Mon Sep 17 00:00:00 2001 From: Simone Piccardi Date: Wed, 17 Apr 2019 22:29:34 +0200 Subject: [PATCH] Appunti vari sparsi --- fileio.tex | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/fileio.tex b/fileio.tex index 2e839f0..b1b78b4 100644 --- a/fileio.tex +++ b/fileio.tex @@ -2188,15 +2188,34 @@ destinazione) aggiunge a ciascuno di essi un argomento (rispettivamente \param{olddirfd} e \param{newdirfd}) per poter indicare entrambi come relativi a due directory aperte in precedenza. -In questo caso dato che su Linux il comportamento di \func{link} è quello di +In questo caso, dato che su Linux il comportamento di \func{link} è quello di non seguire mai i collegamenti simbolici, \const{AT\_SYMLINK\_NOFOLLOW} non -viene utilizzato; a partire dal kernel 2.6.18 è stato aggiunto a questa +viene utilizzato. A partire dal kernel 2.6.18 è stato aggiunto a questa funzione la possibilità di usare il valore \const{AT\_SYMLINK\_FOLLOW} per l'argomento \param{flags},\footnote{nei kernel precendenti, dall'introduzione nel 2.6.16, l'argomento \param{flags} era presente, ma senza alcun valore valido, e doveva essere passato sempre con valore nullo.} che richiede di -dereferenziare i collegamenti simbolici, inoltre a partire dal kernel 3.11 si -può usare \const{AT\_EMPTY\_PATH} con il significato illustrato in precedenza. +dereferenziare i collegamenti simbolici. Inoltre a partire dal kernel 3.11 si +può usare \const{AT\_EMPTY\_PATH} per creare un nuovo \textit{hard link} al +file associato al file descriptor \param{olddirfd} (ottenuto ad esempio usando +\func{open} con \const{O\_PATH}) che però in questo caso non può essere una +directory. + +% NOTE per la discussione sui problemi di sicurezza relativi a questa +% funzionalità vedi http://lwn.net/Articles/562488/ + +La funzione però prevede un comportamento specifico nel caso che +\param{olddirfd} faccia riferimento ad un file anonimo ottenuto usando +\func{open} con \const{O\_TMPFILE}. In generale quando il file associato ad +\param{olddirfd} ha un numero di link nullo, la funzione fallisce, c'è però +una + + +l'uso di \const{AT\_EMPTY\_PATH} assume un significato +ulteriore, e richiede i privilegi di amministratore (la \textit{capability} +\const{CAP\_DAC\_READ\_SEARCH}) quando viene usato con un file descriptor +anomino ottenuto usando \const{O\_TMPFILE} con \func{open}. In generale + Altre due funzioni che utilizzano due \textit{pathname} (e due file descriptor) sono \funcd{renameat} e \funcd{renameat2}, corrispondenti alla @@ -2328,9 +2347,6 @@ che esso non appaia più è possibile creare % https://lwn.net/Articles/707602/ e % https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a528d35e8bfcc521d7cb70aaf03e1bd296c8493f) -% TODO manca prototipo di linkat, verificare se metterlo o metter menzione -% altre modifiche al riguardo nel 3.11 (AT_EMPTY_PATH?) vedi -% http://lwn.net/Articles/562488/ % TODO: Trattare esempio di inzializzazione di file e successivo collegamento % con l'uso di O_TMPFILE e linkat, vedi man open @@ -3448,7 +3464,6 @@ sistemi più moderni. % TODO: mettere prototipi espliciti fseeko e ftello o menzione? - \subsection{Input/output binario} \label{sec:file_binary_io} -- 2.30.2