X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=filedir.tex;h=c071ecaac899423d1b984aa7eb60bcb347a8049e;hp=592440e2f7fe946db15d6005db088721d51f0775;hb=daacafbdd3ae5d8fa4b68ecdcc2a5c97fd5128b7;hpb=40b7e9c1b5e028582e15046f1b1982d3c8a22eeb diff --git a/filedir.tex b/filedir.tex index 592440e..c071eca 100644 --- a/filedir.tex +++ b/filedir.tex @@ -583,7 +583,7 @@ riservati per estensioni come tempi pi \footnotesize \centering \begin{minipage}[c]{15cm} - \begin{lstlisting}[]{} + \begin{lstlisting}[labelstep=0,frame=,indent=1cm]{} struct stat { dev_t st_dev; /* device */ ino_t st_ino; /* inode */ @@ -692,7 +692,7 @@ memorizzato il tipo di files, mentre gli altri possono essere usati per effettuare delle selezioni sul tipo di file voluto, combinando opportunamente i vari flag; ad esempio se si volesse controllare se un file è una directory o un file ordinario si potrebbe definire la condizione: -\begin{lstlisting}{} +\begin{lstlisting}[labelstep=0,frame=,indent=1cm]{} #define IS_FILE_DIR(x) ( ((x) & S_IFMT) & (S_IFDIR | S_IFREG) ) \end{lstlisting} in cui prima si estraggono da \var{st\_mode} i bit relativi al tipo di file e @@ -775,10 +775,15 @@ dei relativi campi \begin{table}[htb] \centering \begin{tabular}[c]{|c|l|l|c|} + \hline + Membro & Significato & Funzione&opzione \\ + \hline + \hline \var{st\_atime}& ultimo accesso ai dati del file &\func{read}& \cmd{-u}\\ \var{st\_mtime}& ultima modifica ai dati del file &\func{write}& default\\ \var{st\_ctime}& ultima modifica ai dati dell'inode&\func{chmod}, \func{utime} & \cmd{-c} \\ + \hline \end{tabular} \caption{I tre tempi associati a ciascun file} \label{tab:filedir_file_times} @@ -824,10 +829,13 @@ cambiarne i permessi ha effetti solo sui tempi del file. \footnotesize \begin{tabular}[c]{|l|c|c|c|c|c|c|l|} \hline - Funzione & \multicolumn{3}{c}{File o directory} - &\multicolumn{3}{c}{Directory genitrice} &Note \\ - Funzione & \multicolumn{3}{c}{di riferimento} & - \multicolumn{3}{c}{del riferimento} \\ + \multicolumn{1}{|c|}{Funzione} + &\multicolumn{3}{p{2cm}}{File o directory di riferimento} + &\multicolumn{3}{p{2cm}}{Directory genitrice del riferimento} + &\multicolumn{1}{|c|}{Note} \\ + \cline{2-7} + & \textsl{(a)} & \textsl{(m)}& \textsl{(c)} + & \textsl{(a)} & \textsl{(m)}& \textsl{(c)}& \\ \hline \hline \func{chmod}, \func{fchmod} @@ -907,7 +915,7 @@ qual caso \var{errno} \end{prototype} La struttura \var{utimebuf} usata da \func{utime} è definita come: -\begin{lstlisting}{} +\begin{lstlisting}[labelstep=0,frame=,indent=1cm]{} struct utimbuf { time_t actime; /* access time */ time_t modtime; /* modification time */ @@ -916,18 +924,18 @@ struct utimbuf { L'effetto della funzione e i privilegi necessari per eseguirla dipendono da cosa è l'argomento \var{times}; se è \textit{NULL} la funzione setta il tempo -corrente e basta l'accesso in scrittura al file; se invece si è specificato un -valore la funzione avrà successo solo se si è proprietari del file (o si hanno -i privilegi di amministratore). +corrente ed è sufficiente avere accesso in scrittura al file; se invece si è +specificato un valore la funzione avrà successo solo se si è proprietari del +file (o si hanno i privilegi di amministratore). Si tenga presente che non è comunque possibile specificare il tempo di -cambiamento di stato del file, che viene comunque cambiato dal kernel anche -alla chiamata di \func{utime}; questo serve acnhe come misura di sicurezza per -evitare che si possa modificare un file nascondendo completamente le proprie -tracce. In realtà la cosa resta possibile, se si è in grado di accedere al -device, scrivendo direttamente sul disco senza passare attraverso il -filesystem, ma ovviamente è molto più complicato da realizzare. - +cambiamento di stato del file, che viene comunque cambiato dal kernel tutte le +volte che si modifica l'inode (quindi anche alla chiamata di \func{utime}). +Questo serve anche come misura di sicurezza per evitare che si possa +modificare un file nascondendo completamente le proprie tracce. In realtà la +cosa resta possibile, se si è in grado di accedere al device, scrivendo +direttamente sul disco senza passare attraverso il filesystem, ma ovviamente è +molto più complicato da realizzare. \section{Il controllo di accesso ai file} @@ -974,8 +982,6 @@ pertanto accesso senza restrizione a qualunque file del sistema. % elementare qui; inoltre ad un processo sono associati diversi identificatori, % torneremo su questo in maggiori dettagli in seguito in \secref{sec:proc_perms}. - - \subsection{I flag \texttt{suid} e \texttt{sgid}} \label{sec:filedir_suid_sgid}