il controllo dei contenuti, in particolar modo quelli posti su dispositivi
rimuovibili. In questo modo si evitano alla radice possibili situazioni in
cui un utente malizioso inserisce su uno di questi filesystem dei file di
il controllo dei contenuti, in particolar modo quelli posti su dispositivi
rimuovibili. In questo modo si evitano alla radice possibili situazioni in
cui un utente malizioso inserisce su uno di questi filesystem dei file di
- dispositivo con permessi ``opportunamente'' ampliati che gli consentano di
- accedere anche a risorse cui non dovrebbe.
+ dispositivo con permessi ``opportunamente'' ampliati che gli consentirebbero
+ di accedere anche a risorse cui non dovrebbe.
\item[\const{MS\_NODIRATIME}] Viene disabilitato sul filesystem
l'aggiornamento degli \textit{access time} (vedi
\item[\const{MS\_NODIRATIME}] Viene disabilitato sul filesystem
l'aggiornamento degli \textit{access time} (vedi
{La funzione ritorna $0$ in caso di successo e $-1$ per un errore,
nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
{La funzione ritorna $0$ in caso di successo e $-1$ per un errore,
nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\errcode{EBUSY}] \param{target} è la \index{directory~di~lavoro}
directory di lavoro di qualche processo, o contiene dei file aperti, o un
altro mount point.
\item[\errcode{EBUSY}] \param{target} è la \index{directory~di~lavoro}
directory di lavoro di qualche processo, o contiene dei file aperti, o un
altro mount point.
\item[\errcode{EINVAL}] \param{target} non è un \itindex{mount~point}
\textit{mount point} o si è usato \const{MNT\_EXPIRE} con
\const{MNT\_FORCE} o \const{MNT\_DETACH} o si è specificato un flag non
\item[\errcode{EINVAL}] \param{target} non è un \itindex{mount~point}
\textit{mount point} o si è usato \const{MNT\_EXPIRE} con
\const{MNT\_FORCE} o \const{MNT\_DETACH} o si è specificato un flag non
\textit{mount point} come ``\textsl{in scadenza}'' in
modo che ad una successiva chiamata senza utilizzo
del filesystem questo venga smontato (presente dal
kernel 2.6.8 e dalla \acr{glibc} 2.11).\\
\textit{mount point} come ``\textsl{in scadenza}'' in
modo che ad una successiva chiamata senza utilizzo
del filesystem questo venga smontato (presente dal
kernel 2.6.8 e dalla \acr{glibc} 2.11).\\
collegamento simbolico (vedi
sez.~\ref{sec:link_symlink_rename}) evitando
problemi di sicurezza (presente dal kernel 2.6.34).\\
collegamento simbolico (vedi
sez.~\ref{sec:link_symlink_rename}) evitando
problemi di sicurezza (presente dal kernel 2.6.34).\\
{La funzione ritorna $0$ in caso di successo e $-1$ per un errore,
nel qual caso \var{errno} assumerà uno dei valori:\footnotemark
\begin{errlist}
{La funzione ritorna $0$ in caso di successo e $-1$ per un errore,
nel qual caso \var{errno} assumerà uno dei valori:\footnotemark
\begin{errlist}
- \item[\errcode{EACCES}] non si ha il permesso di scrivere sulla directory
- contenente \param{pathname} o di attraversamento di una delle directory
+ \item[\errcode{EACCES}] non si ha il permesso di scrittura sulla directory
+ che contiene \param{pathname} o di attraversamento di una delle directory
parte di qualche processo (come \index{directory~di~lavoro} directory di
lavoro o come radice) o del sistema (come \itindex{mount~point}
\textit{mount point}) ed il sistema non riesce a risolvere la situazione.
parte di qualche processo (come \index{directory~di~lavoro} directory di
lavoro o come radice) o del sistema (come \itindex{mount~point}
\textit{mount point}) ed il sistema non riesce a risolvere la situazione.
\item[\errcode{EINVAL}] \param{newpath} contiene un prefisso di
\param{oldpath} o più in generale si è cercato di creare una directory come
sotto-directory di sé stessa.
\item[\errcode{EISDIR}] \param{newpath} è una directory mentre
\param{oldpath} non è una directory.
\item[\errcode{EINVAL}] \param{newpath} contiene un prefisso di
\param{oldpath} o più in generale si è cercato di creare una directory come
sotto-directory di sé stessa.
\item[\errcode{EISDIR}] \param{newpath} è una directory mentre
\param{oldpath} non è una directory.
\item[\errcode{ENOTDIR}] uno dei componenti dei \textit{pathname} non è una
directory o \param{oldpath} è una directory e
\param{newpath} esiste e non è una directory.
\item[\errcode{ENOTDIR}] uno dei componenti dei \textit{pathname} non è una
directory o \param{oldpath} è una directory e
\param{newpath} esiste e non è una directory.
che contiene la directory che si vuole cancellare, o non c'è il permesso
di attraversare (esecuzione) una delle directory specificate in
\param{dirname}.
che contiene la directory che si vuole cancellare, o non c'è il permesso
di attraversare (esecuzione) una delle directory specificate in
\param{dirname}.
\item[\errcode{EBUSY}] la directory specificata è la
\index{directory~di~lavoro} directory di lavoro o la radice di qualche
processo o un \itindex{mount~point} \textit{mount point}.
\item[\errcode{EBUSY}] la directory specificata è la
\index{directory~di~lavoro} directory di lavoro o la radice di qualche
processo o un \itindex{mount~point} \textit{mount point}.
\item[\errcode{EPERM}] il filesystem non supporta la cancellazione di
directory, oppure la directory che contiene \param{dirname} ha lo
\itindex{sticky~bit} \textit{sticky bit} impostato e non si è i
\item[\errcode{EPERM}] il filesystem non supporta la cancellazione di
directory, oppure la directory che contiene \param{dirname} ha lo
\itindex{sticky~bit} \textit{sticky bit} impostato e non si è i
della parte iniziale della struttura, basterà sommarci la dimensione massima
dei nomi dei file nel filesystem che si sta usando, che si può ottenere
attraverso la funzione \func{pathconf} (per la quale si rimanda a
della parte iniziale della struttura, basterà sommarci la dimensione massima
dei nomi dei file nel filesystem che si sta usando, che si può ottenere
attraverso la funzione \func{pathconf} (per la quale si rimanda a
Per quanto riguarda il significato dei campi opzionali, il campo \var{d\_type}
indica il tipo di file (se fifo, directory, collegamento simbolico, ecc.), e
Per quanto riguarda il significato dei campi opzionali, il campo \var{d\_type}
indica il tipo di file (se fifo, directory, collegamento simbolico, ecc.), e
- ed inoltre \errval{EFAULT}, \errval{ELOOP}, \errval{EIO},
+ ed inoltre \errval{EFAULT}, \errval{EIO}, \errval{ELOOP},
\item[\errcode{EEXIST}] non è riuscita a creare un file temporaneo, il
contenuto di \param{template} è indefinito.
\item[\errcode{EEXIST}] non è riuscita a creare un file temporaneo, il
contenuto di \param{template} è indefinito.
- \macro{S\_ISREG}\texttt{(m)} & file normale.\\
- \macro{S\_ISDIR}\texttt{(m)} & directory.\\
- \macro{S\_ISCHR}\texttt{(m)} & dispositivo a caratteri.\\
- \macro{S\_ISBLK}\texttt{(m)} & dispositivo a blocchi.\\
- \macro{S\_ISFIFO}\texttt{(m)} & fifo.\\
- \macro{S\_ISLNK}\texttt{(m)} & collegamento simbolico.\\
- \macro{S\_ISSOCK}\texttt{(m)} & socket.\\
+ \macro{S\_ISREG}\texttt{(m)} & File normale.\\
+ \macro{S\_ISDIR}\texttt{(m)} & Directory.\\
+ \macro{S\_ISCHR}\texttt{(m)} & Dispositivo a caratteri.\\
+ \macro{S\_ISBLK}\texttt{(m)} & Dispositivo a blocchi.\\
+ \macro{S\_ISFIFO}\texttt{(m)} & Fifo.\\
+ \macro{S\_ISLNK}\texttt{(m)} & Collegamento simbolico.\\
+ \macro{S\_ISSOCK}\texttt{(m)} & Socket.\\
- \const{S\_ISUID} & 0004000 & \itindex{suid~bit} \acr{suid} bit.\\
- \const{S\_ISGID} & 0002000 & \itindex{sgid~bit} \acr{sgid} bit.\\
- \const{S\_ISVTX} & 0001000 & \itindex{sticky~bit} \acr{sticky} bit.\\
+ \const{S\_ISUID} & 0004000 & Set user ID \itindex{suid~bit} (\acr{suid})
+ bit.\\
+ \const{S\_ISGID} & 0002000 & Set group ID \itindex{sgid~bit}
+ (\acr{sgid}) bit.\\
+ \const{S\_ISVTX} & 0001000 & \itindex{sticky~bit} \acr{Sticky} bit.\\
\hline
\const{S\_IRWXU} & 00700 & Maschera per i permessi del proprietario.\\
\const{S\_IRUSR} & 00400 & Il proprietario ha permesso di lettura.\\
\hline
\const{S\_IRWXU} & 00700 & Maschera per i permessi del proprietario.\\
\const{S\_IRUSR} & 00400 & Il proprietario ha permesso di lettura.\\
- \const{S\_ISUID} & 04000 & Set user ID \itindex{suid~bit}.\\
- \const{S\_ISGID} & 02000 & Set group ID \itindex{sgid~bit}.\\
- \const{S\_ISVTX} & 01000 & Sticky bit \itindex{sticky~bit}.\\
+ \const{S\_ISUID} & 04000 & Set user ID \itindex{suid~bit} bit.\\
+ \const{S\_ISGID} & 02000 & Set group ID \itindex{sgid~bit} bit.\\
+ \const{S\_ISVTX} & 01000 & Sticky \itindex{sticky~bit} bit.\\
\hline
\const{S\_IRWXU} & 00700 & L'utente ha tutti i permessi.\\
\const{S\_IRUSR} & 00400 & L'utente ha il permesso di lettura.\\
\hline
\const{S\_IRWXU} & 00700 & L'utente ha tutti i permessi.\\
\const{S\_IRUSR} & 00400 & L'utente ha il permesso di lettura.\\
permessi di accesso che possono essere garantiti
da voci del tipo \const{ACL\_USER},
\const{ACL\_GROUP} e \const{ACL\_GROUP\_OBJ}.\\
permessi di accesso che possono essere garantiti
da voci del tipo \const{ACL\_USER},
\const{ACL\_GROUP} e \const{ACL\_GROUP\_OBJ}.\\
{Le funzioni ritornano un oggetto di tipo \type{acl\_t} in caso di successo e
\val{NULL} per un errore, nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
{Le funzioni ritornano un oggetto di tipo \type{acl\_t} in caso di successo e
\val{NULL} per un errore, nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\param{path\_p} o si è richiesta una ACL di default per un file (solo per
\func{acl\_get\_file}).
\item[\errcode{EINVAL}] \param{type} non ha un valore valido (solo per
\param{path\_p} o si è richiesta una ACL di default per un file (solo per
\func{acl\_get\_file}).
\item[\errcode{EINVAL}] \param{type} non ha un valore valido (solo per
- \const{ACL\_TYPE\_ACCESS} & indica una ACL di accesso.\\
- \const{ACL\_TYPE\_DEFAULT}& indica una ACL di default.\\
+ \const{ACL\_TYPE\_ACCESS} & Indica una ACL di accesso.\\
+ \const{ACL\_TYPE\_DEFAULT}& Indica una ACL di default.\\
testuale della ACL in caso di successo e \var{NULL} per un errore, nel qual
caso \var{errno} assumerà uno dei valori:
\begin{errlist}
testuale della ACL in caso di successo e \var{NULL} per un errore, nel qual
caso \var{errno} assumerà uno dei valori:
\begin{errlist}
testuale della ACL in caso di successo e \val{NULL} per un errore, nel qual
caso \var{errno} assumerà uno dei valori:
\begin{errlist}
testuale della ACL in caso di successo e \val{NULL} per un errore, nel qual
caso \var{errno} assumerà uno dei valori:
\begin{errlist}
vengono eliminati dalla \const{ACL\_MASK}
viene generato un commento con i permessi
effettivamente risultanti; il commento è
separato con un tabulatore.\\
vengono eliminati dalla \const{ACL\_MASK}
viene generato un commento con i permessi
effettivamente risultanti; il commento è
separato con un tabulatore.\\
effettivi per ciascuna voce che contiene
permessi citati nella \const{ACL\_MASK},
anche quando questi non vengono modificati
da essa; il commento è separato con un
tabulatore.\\
effettivi per ciascuna voce che contiene
permessi citati nella \const{ACL\_MASK},
anche quando questi non vengono modificati
da essa; il commento è separato con un
tabulatore.\\
- \const{TEXT\_SMART\_INDENT} & da usare in combinazione con le precedenti
- \const{TEXT\_SOME\_EFFECTIVE} e
- \const{TEXT\_ALL\_EFFECTIVE} aumenta
+ \const{TEXT\_SMART\_INDENT} & Da usare in combinazione con le precedenti
+ opzioni \const{TEXT\_SOME\_EFFECTIVE} e
+ \const{TEXT\_ALL\_EFFECTIVE}, aumenta
-Ottenuta con \func{acl\_size} la dimensione per il buffer lo si potrà allocare
-direttamente con \func{malloc}. La rappresentazione binaria di una ACL si
-potrà poi ottenere con la funzione \funcd{acl\_copy\_ext}, il cui prototipo è:
+Ottenuta con \func{acl\_size} la dimensione per il buffer di una ACL lo si
+potrà allocare direttamente con \func{malloc}. La rappresentazione binaria di
+una ACL si potrà invece ottenere con la funzione \funcd{acl\_copy\_ext}, il
+cui prototipo è:
- \const{QFMT\_VFS\_OLD}& il vecchio (ed obsoleto) formato delle quote.\\
- \const{QFMT\_VFS\_V0} & la versione 0 usata dal VFS di Linux, supporta
+ \const{QFMT\_VFS\_OLD}& Il vecchio (ed obsoleto) formato delle quote.\\
+ \const{QFMT\_VFS\_V0} & La versione 0 usata dal VFS di Linux, supporta
-% 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
% http://lwn.net/Articles/280279/
% http://lwn.net/Articles/256519/
% http://lwn.net/Articles/211883/
% http://lwn.net/Articles/280279/
% http://lwn.net/Articles/256519/
% http://lwn.net/Articles/211883/
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
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
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
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
- \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_mknod}) (dal kernel 2.4).\\
\const{CAP\_NET\_ADMIN} & Eseguire alcune operazioni
privilegiate sulla rete.\\
sez.~\ref{sec:file_mknod}) (dal kernel 2.4).\\
\const{CAP\_NET\_ADMIN} & Eseguire alcune operazioni
privilegiate sulla rete.\\
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}.\\
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\_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\_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\_PTRACE}& La capacità di tracciare qualunque processo con
\func{ptrace} (vedi
sez.~\ref{sec:process_ptrace}).\\
- \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à
\const{CAP\_SYSLOG} & Gestire il buffer dei messaggi
del kernel, (vedi sez.~\ref{sec:sess_daemon}),
introdotta dal kernel 2.6.38 come capacità