X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=filedir.tex;h=4eb9f56af6d07b0a041e7b851bcfad04d76580b7;hp=2891b774c2f01ac691513b32f0c2d9d6fc9985d2;hb=9949b501aea36905b12f069e11743b70b3e2df57;hpb=a801b1a1804866073aad5c25a84893a697a3b3b3 diff --git a/filedir.tex b/filedir.tex index 2891b77..4eb9f56 100644 --- a/filedir.tex +++ b/filedir.tex @@ -1,6 +1,6 @@ %% filedir.tex %% -%% Copyright (C) 2000-2012 Simone Piccardi. Permission is granted to +%% Copyright (C) 2000-2014 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", @@ -1623,26 +1623,22 @@ Un altro punto da tenere sempre presente è che, come abbiamo accennato, un collegamento simbolico può fare riferimento anche ad un file che non esiste; ad esempio possiamo usare il comando \cmd{ln} per creare un collegamento simbolico nella nostra directory con: -\begin{Command} -$ ln -s /tmp/tmp_file symlink -\end{Command} +\begin{Console} +piccardi@hain:~/gapil$ \textbf{ln -s /tmp/tmp_file symlink} +\end{Console} %$ e questo avrà successo anche se \file{/tmp/tmp\_file} non esiste: -\begin{Command} -$ ls symlink -\end{Command} -\begin{Terminal} +\begin{Console} +piccardi@hain:~/gapil$ \textbf{ls symlink} symlink -\end{Terminal} +\end{Console} %$ ma questo può generare confusione, perché accedendo in sola lettura a \file{symlink}, ad esempio con \cmd{cat}, otterremmo un errore: -\begin{Command} -$ cat symlink -\end{Command} -\begin{Terminal} +\begin{Console} +piccardi@hain:~/gapil$ \textbf{cat symlink} cat: symlink: No such file or directory -\end{Terminal} +\end{Console} %$ con un errore che può sembrare sbagliato, dato che \cmd{ls} ci ha mostrato l'esistenza di \file{symlink}, se invece scrivessimo su \file{symlink} @@ -4233,12 +4229,10 @@ condizioni: Un classico esempio di directory che ha questo bit impostato è \file{/tmp}, i cui permessi infatti di solito sono i seguenti: -\begin{Command} -$ ls -ld /tmp -\end{Command} -\begin{Terminal} +\begin{Console} +piccardi@hain:~/gapil$ \textbf{ls -ld /tmp} drwxrwxrwt 6 root root 1024 Aug 10 01:03 /tmp -\end{Terminal} +\end{Console} %$ quindi con lo \textit{sticky bit} bit impostato. In questo modo qualunque utente nel sistema può creare dei file in questa directory, che come @@ -6798,10 +6792,10 @@ operazioni si rimanda alla rilettura di sez.~\ref{sec:process_prctl}. \itindend{file~capabilities} -% 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 +% NOTE per dati relativi al process capability bounding set, vedi: +% http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3b7391de67da515c91f48aa371de77cb6cc5c07e -% TODO capire cosa cambia con i patch vari, vedi +% NOTE riferimenti ai vari cambiamenti vedi: % http://lwn.net/Articles/280279/ % http://lwn.net/Articles/256519/ % http://lwn.net/Articles/211883/ @@ -6812,7 +6806,7 @@ breve descrizione ed il nome delle costanti che le identificano, è riportato in tab.~\ref{tab:proc_capabilities};\footnote{l'elenco presentato questa tabella, ripreso dalla pagina di manuale (accessibile con \texttt{man capabilities}) e dalle definizioni in - \texttt{include/linux/capabilities.h}, è aggiornato al kernel 2.6.26.} la + \texttt{include/linux/capabilities.h}, è aggiornato al kernel 3.2.} la tabella è divisa in due parti, la prima riporta le \textit{capabilities} previste anche nella bozza dello standard POSIX1.e, la seconda quelle specifiche di Linux. Come si può notare dalla tabella alcune @@ -6883,7 +6877,8 @@ opportuno dettagliare maggiormente. funzioni \func{mlock}, \func{mlockall}, \func{shmctl}, \func{mmap} (vedi sez.~\ref{sec:proc_mem_lock} e - sez.~\ref{sec:file_memory_map}). \\ + sez.~\ref{sec:file_memory_map}). \\ +% TODO verificare l'interazione con SHM_HUGETLB \const{CAP\_IPC\_OWNER} & Evitare il controllo dei permessi per le operazioni sugli oggetti di intercomunicazione fra processi (vedi @@ -6893,57 +6888,51 @@ opportuno dettagliare maggiormente. sez.~\ref{sec:file_asyncronous_lease}) pur non essendo proprietari del file (dal kernel 2.4).\\ - \const{CAP\_LINUX\_IMMUTABLE}& Impostare sui file gli - attributi \textit{immutable} e - \itindex{append~mode} \textit{append-only} (vedi + \const{CAP\_LINUX\_IMMUTABLE}& Impostare sui file gli attributi + \textit{immutable} e \itindex{append~mode} + \textit{append-only} (vedi sez.~\ref{sec:file_perm_overview}) se supportati.\\ - \const{CAP\_MKNOD} & Creare - \index{file!di~dispositivo} file di dispositivo - con \func{mknod} (vedi + \const{CAP\_MKNOD} & Creare \index{file!di~dispositivo} file di + dispositivo con \func{mknod} (vedi sez.~\ref{sec:file_mknod}) (dal kernel 2.4).\\ \const{CAP\_NET\_ADMIN} & Eseguire alcune operazioni privilegiate sulla rete.\\ - \const{CAP\_NET\_BIND\_SERVICE}& Porsi in ascolto - su porte riservate (vedi + \const{CAP\_NET\_BIND\_SERVICE}& Porsi in ascolto su porte riservate (vedi sez.~\ref{sec:TCP_func_bind}).\\ \const{CAP\_NET\_BROADCAST}& Consentire l'uso di socket in \itindex{broadcast} \textit{broadcast} e \itindex{multicast} \textit{multicast}.\\ - \const{CAP\_NET\_RAW} & Usare socket \texttt{RAW} e - \texttt{PACKET} (vedi sez.~\ref{sec:sock_type}).\\ + \const{CAP\_NET\_RAW} & Usare socket \texttt{RAW} e \texttt{PACKET} + (vedi sez.~\ref{sec:sock_type}).\\ \const{CAP\_SETPCAP} & Effettuare modifiche privilegiate alle \textit{capabilities}.\\ - \const{CAP\_SYS\_ADMIN} & Eseguire una serie di compiti - amministrativi.\\ - \const{CAP\_SYS\_BOOT} & Eseguire un riavvio del - sistema (vedi sez.~\ref{sec:sys_reboot}).\\ - \const{CAP\_SYS\_CHROOT}& Eseguire la funzione - \func{chroot} (vedi sez.~\ref{sec:file_chroot}).\\ + \const{CAP\_SYS\_ADMIN} & Eseguire una serie di compiti amministrativi.\\ + \const{CAP\_SYS\_BOOT} & Eseguire un riavvio del sistema (vedi + sez.~\ref{sec:sys_reboot}).\\ + \const{CAP\_SYS\_CHROOT}& Eseguire la funzione \func{chroot} (vedi + sez.~\ref{sec:file_chroot}).\\ \const{CAP\_MAC\_ADMIN} & Amministrare il \textit{Mandatory Access Control} di Smack (dal kernel 2.6.25).\\ \const{CAP\_MAC\_OVERRIDE}& Evitare il \textit{Mandatory Access Control} di Smack (dal kernel 2.6.25).\\ - \const{CAP\_SYS\_MODULE}& Caricare e rimuovere moduli del - kernel.\\ - \const{CAP\_SYS\_NICE} & Modificare le varie priorità dei - processi (vedi sez.~\ref{sec:proc_priority}).\\ - \const{CAP\_SYS\_PACCT} & Usare le funzioni di - \textit{accounting} dei processi (vedi - sez.~\ref{sec:sys_bsd_accounting}).\\ + \const{CAP\_SYS\_MODULE}& Caricare e rimuovere moduli del kernel.\\ + \const{CAP\_SYS\_NICE} & Modificare le varie priorità dei processi (vedi + sez.~\ref{sec:proc_priority}).\\ + \const{CAP\_SYS\_PACCT} & Usare le funzioni di \textit{accounting} dei + processi (vedi + sez.~\ref{sec:sys_bsd_accounting}).\\ \const{CAP\_SYS\_PTRACE}& La capacità di tracciare qualunque processo con \func{ptrace} (vedi sez.~\ref{sec:process_ptrace}).\\ - \const{CAP\_SYS\_RAWIO} & Operare sulle porte - di I/O con \func{ioperm} e \func{iopl} (vedi + \const{CAP\_SYS\_RAWIO} & Operare sulle porte di I/O con \func{ioperm} e + \func{iopl} (vedi sez.~\ref{sec:process_io_port}).\\ - \const{CAP\_SYS\_RESOURCE}& Superare le varie limitazioni - sulle risorse.\\ - \const{CAP\_SYS\_TIME} & Modificare il tempo di sistema - (vedi sez.~\ref{sec:sys_time}).\\ - \const{CAP\_SYS\_TTY\_CONFIG}&Simulare un \textit{hangup} - della console, con la funzione - \func{vhangup}.\\ + \const{CAP\_SYS\_RESOURCE}& Superare le varie limitazioni sulle risorse.\\ + \const{CAP\_SYS\_TIME} & Modificare il tempo di sistema (vedi + sez.~\ref{sec:sys_time}).\\ + \const{CAP\_SYS\_TTY\_CONFIG}&Simulare un \textit{hangup} della console, + con la funzione \func{vhangup}.\\ \const{CAP\_SYSLOG} & Gestire il buffer dei messaggi del kernel, (vedi sez.~\ref{sec:sess_daemon}), introdotta dal kernel 2.6.38 come capacità @@ -7603,16 +7592,14 @@ allocare autonomamente e che al solito deve essere disallocato con \errval{ESRCH}. Gli stessi valori possono essere letti direttamente nel filesystem \textit{proc}, nei file \texttt{/proc//status}; ad esempio per \texttt{init} si otterrà qualcosa del tipo: -\begin{Command} -$ cat /proc/1/status -\end{Command} -\begin{Terminal} +\begin{Console} +piccardi@hain:~/gapil$ \textbf{cat /proc/1/status} ... CapInh: 0000000000000000 CapPrm: 00000000fffffeff CapEff: 00000000fffffeff ... -\end{Terminal} +\end{Console} %$ \itindend{capability~state} @@ -7705,7 +7692,10 @@ funzione. % cgroup o altro % TODO: trattare la funzione setns e i namespace file descriptors (vedi -% http://lwn.net/Articles/407495/) introdotti con il kernel 3.0 +% http://lwn.net/Articles/407495/) introdotti con il kernel 3.0, altre +% informazioni su setns qui: http://lwn.net/Articles/532748/ +% http://lwn.net/Articles/531498/ + % TODO: spostare chroot e le funzioni affini relative ai container da qualche % parte diversa se è il caso.