From 493b79dd7a2cb2ca0627fac0aa39f65c656c7ade Mon Sep 17 00:00:00 2001 From: Simone Piccardi Date: Thu, 26 Jan 2012 19:12:11 +0000 Subject: [PATCH] Altre piccole correzioni --- filedir.tex | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/filedir.tex b/filedir.tex index 29abfe2..e84514d 100644 --- a/filedir.tex +++ b/filedir.tex @@ -5976,15 +5976,16 @@ gestione delle quote è \funcd{quotactl}, ed il suo prototipo è: {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{EACCES}] il file delle quote non è un file ordinario. + \item[\errcode{EACCES}] si è richiesto \const{Q\_QUOTAON}, ma il file delle + quote indicato da \param{addr} non esiste o non è un file ordinario. \item[\errcode{EBUSY}] si è richiesto \const{Q\_QUOTAON}, ma le quote sono già attive. \item[\errcode{EFAULT}] l'indirizzo \param{addr} non è valido. + \item[\errcode{EINVAL}] o \param{cmd} non è un comando valido, + o il dispositivo \param{dev} non esiste. \item[\errcode{EIO}] errore di lettura/scrittura sul file delle quote. \item[\errcode{EMFILE}] non si può aprire il file delle quote avendo superato il limite sul numero di file aperti nel sistema. - \item[\errcode{EINVAL}] o \param{cmd} non è un comando valido, - o il dispositivo \param{dev} non esiste. \item[\errcode{ENODEV}] \param{dev} non corrisponde ad un \itindex{mount~point} \textit{mount point} attivo. \item[\errcode{ENOPKG}] il kernel è stato compilato senza supporto per le @@ -5998,6 +5999,8 @@ gestione delle quote è \funcd{quotactl}, ed il suo prototipo è: } \end{funcproto} +% TODO rivedere gli errori + La funzione richiede che il filesystem sul quale si vuole operare sia montato con il supporto delle quote abilitato; esso deve essere specificato con il nome del file di dispositivo nell'argomento \param{dev}. Per le operazioni che @@ -7632,27 +7635,31 @@ dalla stessa directory, che corrisponde alla radice del sistema. In certe situazioni però è utile poter impedire che un processo possa accedere a tutto il filesystem; per far questo si può cambiare la sua directory radice con la funzione \funcd{chroot}, il cui prototipo è: -\begin{prototype}{unistd.h}{int chroot(const char *path)} - Cambia la directory radice del processo a quella specificata da - \param{path}. - -\bodydesc{La funzione restituisce zero in caso di successo e -1 per - un errore, in caso di errore \var{errno} può assumere i valori: + +\begin{funcproto}{ +\fhead{unistd.h} +\fdecl{int chroot(const char *path)} +\fdesc{Cambia la directory radice del processo.} +} + +{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{EPERM}] l'\ids{UID} effettivo del processo non è zero. \end{errlist} - ed inoltre \errval{EFAULT}, \errval{ENAMETOOLONG}, \errval{ENOENT}, + ed inoltre errval{EFAULT}, \errval{ENAMETOOLONG}, \errval{ENOENT}, \errval{ENOMEM}, \errval{ENOTDIR}, \errval{EACCES}, \errval{ELOOP}; - \errval{EROFS} e \errval{EIO}.} -\end{prototype} -\noindent in questo modo la directory radice del processo diventerà + \errval{EROFS} e \errval{EIO} nel loro significato generico.} +\end{funcproto} + +La funzione la directory radice del processo a quella specificata da \param{path} (che ovviamente deve esistere) ed ogni -\itindsub{pathname}{assoluto}\textit{pathname} assoluto usato dalle funzioni +\itindsub{pathname}{assoluto} \textit{pathname} assoluto usato dalle funzioni chiamate nel processo sarà risolto a partire da essa, rendendo impossibile accedere alla parte di albero sovrastante. Si ha così quella che viene chiamata una \textit{chroot jail}, in quanto il processo non può più accedere a file al di fuori della sezione di albero in cui è stato -\textsl{imprigionato}. +\textsl{imprigionato}. Solo un processo con i privilegi di amministratore può usare questa funzione, e la nuova radice, per quanto detto in sez.~\ref{sec:proc_fork}, sarà ereditata -- 2.30.2