X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=filedir.tex;h=8b72628b138715490ecd7d82468f5a77c99aead0;hp=eb9c3aee954640ed0f629c4e7fe2f53915526a7c;hb=c23786b2033224de5b188ddcf1180e35ed9eb5af;hpb=61cc85db35ce7af082bcad07d0e05beb2ee92f26 diff --git a/filedir.tex b/filedir.tex index eb9c3ae..8b72628 100644 --- a/filedir.tex +++ b/filedir.tex @@ -1,6 +1,6 @@ %% filedir.tex %% -%% Copyright (C) 2000-2009 Simone Piccardi. Permission is granted to +%% Copyright (C) 2000-2010 Simone Piccardi. Permission is granted to %% copy, distribute and/or modify this document under the terms of the GNU Free %% Documentation License, Version 1.1 or any later version published by the %% Free Software Foundation; with the Invariant Sections being "Un preambolo", @@ -1680,9 +1680,10 @@ dimensione inferiore sarebbe inefficiente. Si tenga conto che la lunghezza del file riportata in \var{st\_size} non è detto che corrisponda all'occupazione dello spazio su disco per via della -possibile esistenza dei cosiddetti \textit{holes} (letteralmente -\textsl{buchi}) che si formano tutte le volte che si va a scrivere su un file -dopo aver eseguito una \func{lseek} (vedi sez.~\ref{sec:file_lseek}) oltre la +possibile esistenza dei cosiddetti \index{file!\textit{hole}} \textit{holes} +(letteralmente \textsl{buchi}) che si formano tutte le volte che si va a +scrivere su un \itindex{sparse~file} file dopo aver eseguito una \func{lseek} +(tratteremo in dettaglio l'argomento in sez.~\ref{sec:file_lseek}) oltre la sua fine. In questo caso si avranno risultati differenti a seconda del modo in cui si @@ -1732,9 +1733,9 @@ dimensione si possono usare le due funzioni \funcd{truncate} e Se il file è più lungo della lunghezza specificata i dati in eccesso saranno perduti; il comportamento in caso di lunghezza inferiore non è specificato e dipende dall'implementazione: il file può essere lasciato invariato o esteso -fino alla lunghezza scelta; in quest'ultimo caso lo spazio viene riempito con -zeri (e in genere si ha la creazione di un \textit{hole} nel file). - +fino alla lunghezza scelta; nel caso di Linux viene esteso con la creazione di +un \index{file!\textit{hole}} \textsl{buco} nel \itindex{sparse~file} file e +ad una lettura si otterranno degli zeri. \subsection{I tempi dei file} \label{sec:file_file_times} @@ -2647,9 +2648,10 @@ a scongiurare l'abuso dei \itindex{suid~bit} bit \acr{suid} e \acr{sgid}; essa consiste nel cancellare automaticamente questi bit dai permessi di un file qualora un processo che non appartenga all'amministratore\footnote{per la precisione un processo che non dispone della \itindex{capabilities} capacità - \const{CAP\_FSETID}.} 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. + \const{CAP\_FSETID}, vedi sez.~\ref{sec:proc_capabilities}.} 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. Le funzioni \func{chmod} e \func{fchmod} ci permettono di modificare i permessi di un file, resta però il problema di quali sono i permessi assegnati @@ -2889,7 +2891,7 @@ notazione illustrata in fig.~\ref{fig:file_perm_bit}. Si ricordi infine che i permessi non hanno alcun significato per i link simbolici, mentre per i \index{file!di~dispositivo} file di dispositivo hanno senso soltanto i permessi di lettura e scrittura, che si riflettono sulla -possibilita di compiere dette operazioni sul dispositivo stesso. +possibilità di compiere dette operazioni sul dispositivo stesso. Nella tabella si è indicato con il carattere ``-'' il fatto che il valore del bit in questione non è influente rispetto a quanto indicato nella riga della @@ -2941,11 +2943,11 @@ un insieme di \textsl{capacit potessero essere abilitate e disabilitate in maniera indipendente per ciascun processo con privilegi di amministratore, permettendo così una granularità molto più fine nella distribuzione degli stessi che evitasse la originaria -situazione di \textsl{tutto o nulla}. +situazione di ``\textsl{tutto o nulla}''. Il meccanismo completo delle \textit{capabilities}\footnote{l'implementazione si rifà ad una bozza di quello che doveva diventare lo standard POSIX.1e, - ormai abbandonato.} prevede inoltre la possibilità di associare le stesse ai + poi abbandonato.} prevede inoltre la possibilità di associare le stesse ai singoli file eseguibili, in modo da poter stabilire quali capacità possono essere utilizzate quando viene messo in esecuzione uno specifico programma; ma il supporto per questa funzionalità è stato introdotto soltanto a partire dal @@ -3023,7 +3025,6 @@ capacit vengono mantenute le stesse capacità del processo padre. - % TODO verificare per process capability bounding set, vedi: % http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3b7391de67da515c91f48aa371de77cb6cc5c07e @@ -3033,7 +3034,6 @@ vengono mantenute le stesse capacit % http://lwn.net/Articles/211883/ - Un elenco delle delle \textit{capabilities} disponibili su Linux, con una breve descrizione ed il nome delle costanti che le identificano, è riportato in tab.~\ref{tab:proc_capabilities};\footnote{l'elenco presentato questa @@ -3150,7 +3150,7 @@ che \const{CAP\_SYS\_CHROOT}& La capacità di eseguire la funzione \func{chroot} (vedi sez.~\ref{sec:file_chroot}).\\ - \const{CAP\_MAC\_ADMIN} & La capacità amministare il MAC di Smack (dal + \const{CAP\_MAC\_ADMIN} & La capacità amministrare il MAC di Smack (dal kernel 2.6.25).\\ \const{CAP\_MAC\_OVERRIDE}& La capacità evitare il MAC di Smack (dal kernel 2.6.25).\\ @@ -3237,7 +3237,7 @@ politiche di allocazione delle pagine di memoria ai nodi di un sistema NUMA. Infine la \textit{capability} \const{CAP\_SYS\_RESOURCE} attiene alla possibilità di superare i limiti imposti sulle risorse di sistema, come usare lo spazio disco riservato all'amministratore sui filesystem che lo supportano, -usare la funzione \func{ioctl} per cotrollare il \textit{journaling} sul +usare la funzione \func{ioctl} per controllare il \textit{journaling} sul filesystem \acr{ext3}, non subire le quote disco, aumentare i limiti sulle risorse (vedi sez.~\ref{sec:sys_resource_limit}) e sulle dimensioni dei messaggi delle code del SysV IPC (vedi sez.~\ref{sec:ipc_sysv_mq}). @@ -3746,25 +3746,25 @@ classi di attributi riportate in tab.~\ref{tab:extended_attribute_class}. \textbf{Nome} & \textbf{Descrizione} \\ \hline \hline - \const{security}& Gli \textit{extended security attributes}: vengono + \texttt{security}&Gli \textit{extended security attributes}: vengono utilizzati dalle estensioni di sicurezza del kernel (i \itindex{Linux~Security~Modules} \textit{Linux Security Modules}), per le realizzazione di meccanismi evoluti di controllo di accesso come \index{SELinux} SELinux o le \textit{capabilities} dei file di sez.~\ref{sec:proc_capabilities}.\\ - \const{system} & Gli \textit{extended security attributes}: sono usati + \texttt{system} & Gli \textit{extended security attributes}: sono usati dal kernel per memorizzare dati di sistema associati ai file come le \itindex{Access~Control~List} ACL (vedi sez.~\ref{sec:file_ACL}) o le \itindex{capabilities} \textit{capabilities} (vedi sez.~\ref{sec:proc_capabilities}).\\ - \const{trusted} & I \textit{trusted extended attributes}: vengono + \texttt{trusted}& I \textit{trusted extended attributes}: vengono utilizzati per poter realizzare in user space meccanismi che consentano di mantenere delle informazioni sui file che non devono essere accessibili ai processi ordinari.\\ - \const{user} & Gli \textit{extended user attributes}: utilizzati per + \texttt{user} & Gli \textit{extended user attributes}: utilizzati per mantenere informazioni aggiuntive sui file (come il \textit{mime-type}, la codifica dei caratteri o del file) accessibili dagli utenti.\\ @@ -4058,12 +4058,14 @@ file descriptor, da specificare con il loro primo argomento. Anche in questo caso l'argomento \param{name} deve essere specificato con le modalità già illustrate in precedenza per le altre funzioni relative agli attributi estesi. - \itindend{Extended~Attributes} + \subsection{Le \textit{Access Control List}} \label{sec:file_ACL} +% la documentazione di sistema è nei pacchetti libacl1-dev e acl +% vedi anche http://www.suse.de/~agruen/acl/linux-acls/online/ \itindbeg{Access~Control~List} @@ -4304,7 +4306,7 @@ queste funzioni che prendiamo in esame \end{functions} La funzione alloca ed inizializza un'area di memoria che verrà usata per -mantenere i dati di una ACL contenente fino ad un massimo di \const{count} +mantenere i dati di una ACL contenente fino ad un massimo di \param{count} voci. La funzione ritorna un valore di tipo \type{acl\_t}, da usare in tutte le altre funzioni che operano sulla ACL. La funzione si limita alla allocazione iniziale e non inserisce nessun valore nella ACL che resta vuota. @@ -4763,7 +4765,7 @@ directory, ed il cui prototipo La funzione consente di assegnare la ACL contenuta in \param{acl} al file o alla directory indicate dal pathname \param{path}, mentre con \param{type} si -indica il tipo di ACL utilizzando le constanti di tab.~\ref{tab:acl_type}, ma +indica il tipo di ACL utilizzando le costanti di tab.~\ref{tab:acl_type}, ma si tenga presente che le ACL di default possono essere solo impostate qualora \param{path} indichi una directory. Inoltre perché la funzione abbia successo la ACL dovrà essere valida, e contenere tutti le voci necessarie, @@ -4836,9 +4838,6 @@ ad un altra con \funcd{acl\_copy\_entry} o eliminare una voce da una ACL con \itindend{Access~Control~List} -% la documentazione di sistema è nei pacchetti libacl1-dev e acl -% vedi anche http://www.suse.de/~agruen/acl/linux-acls/online/ - \subsection{La funzione \func{chroot}} @@ -4931,7 +4930,7 @@ programmi e librerie) di cui il server potrebbe avere bisogno. % LocalWords: sez like filesystem unlink MacOS Windows VMS inode kernel unistd -% LocalWords: int const char oldpath newpath errno EXDEV EPERM st +% LocalWords: int const char oldpath newpath errno EXDEV EPERM st Smack SysV % LocalWords: EEXIST EMLINK EACCES ENAMETOOLONG ENOTDIR EFAULT ENOMEM EROFS ls % LocalWords: ELOOP ENOSPC EIO pathname nlink stat vfat fsck EISDIR ENOENT cap % LocalWords: POSIX socket fifo sticky root system call count crash nell' init @@ -4979,7 +4978,8 @@ programmi e librerie) di cui il server potrebbe avere bisogno. % LocalWords: LEASE lease SETFCAP AUDIT permitted inherited inheritable AND % LocalWords: bounding execve fork capget capset header hdrp datap ESRCH undef % LocalWords: version libcap lcap clear ncap caps pag capgetp CapInh CapPrm -% LocalWords: fffffeff CapEff getcap +% LocalWords: fffffeff CapEff getcap dell'IPC scheduling dell'I lookup dcookie +% LocalWords: NEWNS unshare nice NUMA ioctl journaling %%% Local Variables: %%% mode: latex