X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=prochand.tex;h=2fdd12f5fb7e2fa04a9b95e6b73b8c912ffc1a29;hp=06f8e57c8683b4e702a999a453577e99ef45f995;hb=98d6e43e041f167c17010ca37eeb1b44f8474f8b;hpb=60e1ec8addabb2a467b614535dfcfee3908618b0 diff --git a/prochand.tex b/prochand.tex index 06f8e57..2fdd12f 100644 --- a/prochand.tex +++ b/prochand.tex @@ -1165,14 +1165,16 @@ esplicita a \func{fcntl} che setti il suddetto flag. Per le directory lo standard POSIX.1 richiede che esse vengano chiuse attraverso una \func{exec}, in genere questo è fatto dalla funzione \func{opendir} che effettua da sola il settaggio del flag di -\textit{close-on-exec} in maniera trasparente all'utente. +\textit{close-on-exec} sulle directory che apre, in maniera trasparente +all'utente. Abbiamo detto che il \textit{real user ID} ed il \textit{real group ID} restano gli stessi all'esecuzione di \func{exec}; lo stesso vale per l'\textit{effective user ID} ed l'\textit{effective group ID}, tranne il caso in cui il file che si va ad eseguire ha o il \acr{suid} bit o lo \acr{sgid} bit settato, nel qual caso \textit{effective user ID} e \textit{effective - group ID} vengono settati rispettivamente all'utente o al gruppo cui il file appartiene. + group ID} vengono settati rispettivamente all'utente o al gruppo cui il file +appartiene (per i dettagli vedi \secref{sec:proc_perms}). Se il file da eseguire è in formato \emph{a.out} e necessita di librerie condivise, viene lanciato il \textit{linker} dinamico \cmd{ld.so} prima del @@ -1182,7 +1184,7 @@ dinamiche viene usato l'interprete indicato nel segmento \macro{PT\_INTERP}, in genere questo è \file{/lib/ld-linux.so.1} per programmi linkati con le \emph{libc5}, e \file{/lib/ld-linux.so.2} per programmi linkati con le \emph{glibc}. Infine nel caso il file sia uno script esso deve iniziare con -una linea nella forma \cmd{#!/path/to/interpreter} dove l'interprete indicato +una linea nella forma \cmd{\#!/path/to/interpreter} dove l'interprete indicato deve esse un valido programma (binario, non un altro script) che verrà chiamato come se si fosse eseguitio il comando \cmd{interpreter [arg] filename}. @@ -1195,6 +1197,7 @@ altre funzioni sono ausiliarie e servono la lettura e il settaggio dei vari parametri connessi ai processi. + \section{Il controllo di accesso} \label{sec:proc_perms} @@ -1207,11 +1210,12 @@ funzioni per la loro manipolazione diretta. \subsection{Utente e gruppo di un processo} \label{sec:proc_user_group} -Abbiamo già accennato in \secref{sec:intro_multiuser} ad ogni utente ed gruppo -sono associati due identificatori univoci, lo \acr{uid} e il \acr{gid} che li -contraddistinguono nei confronti del kernel. Questi identificatori stanno alla -base del sistema di permessi e protezioni di un sistema unix, e vengono usati -anche nella gestione dei privilegi di accesso dei processi. +Abbiamo già accennato in \secref{sec:intro_multiuser} che ad ogni utente e +gruppo sono associati due identificatori univoci, lo \acr{uid} e il \acr{gid} +che li contraddistinguono nei confronti del kernel. Questi identificatori +stanno alla base del sistema di permessi e protezioni di un sistema unix, e +oltre che per il controllo di accesso ai file vengono usati anche nella +gestione dei privilegi di accesso dei processi. In realtà ad ogni processo è associato un certo numero di identificatori, il cui elenco è riportato \ntab, in genere questi derivano direttamente @@ -1251,26 +1255,31 @@ gestione dei privilegi associati ai processi stessi. Il \textit{real user id} e il \textit{real group id} indicano l'utente che ha lanciato il processo, e vengono settati al login al valore standard di \acr{uid} e \acr{gid} dell'utente letti direttamente da \file{/etc/passwd}. -Questi non vengono mai cambiati nella creazione di nuovi processi e restano -sempre gli stessi per tutti i processi avviati in una sessione. In realtà è -possibile modificarli (vedi \secref{sec:proc_setuid}), ma solo per un processo -che abbia i privilegi di amministratore (ed è così infatti che \cmd{login}, -che gira con i privilegi di amministratore, li setta ai valori corrispondenti -all'utente che entra nel sistema). + +Esso servono ad identificare l'utente che ha lanciato il processo e non +vengono mai cambiati nella creazione di nuovi processi restando sempre gli +stessi per tutti i processi avviati in una sessione. In realtà vedremo che è +possibile possibile modificarli (in \secref{sec:proc_setuid}), ma solo ad un +processo che abbia i privilegi di amministratore; questa possibilità è usata +ad esempio da \cmd{login} che una volta completata la procedura di +autenticazione lancia una shell per la quale setta questi indetificatoru ai +valori corrispondenti all'utente che entra nel sistema. L'\textit{effective user id}, l'\textit{effective group id} e gli eventuali -\textit{supplementary group id} sono gli identificativi usati per il controllo -di accesso ai file secondo quanto descritto in dettaglio in -\secref{sec:file_perm_overview}. Normalmente sono uguali al \textit{real user - id} e al \textit{real group id}, a meno che il file posto in esecuzione non -abbia i bit \acr{suid} o \acr{sgid} settati, nel qual caso vengono settati -rispettivamente all'\acr{uid} e \acr{gid} del file. +\textit{supplementary group id} sono invece gli identificatori usati per il +controllo di accesso ai file (secondo quanto descritto in dettaglio in +\secref{sec:file_perm_overview}). Normalmente essi sono uguali al \textit{real + user id} e al \textit{real group id}, a meno che il file posto in esecuzione +non abbia o il bit \acr{suid} o il bit \acr{sgid} settato, in questo caso alla +la funzione \func{exec} (vedi \secref{}) li setta rispettivamente ai valori +dell'\acr{uid} e del \acr{gid} cui appartiene il file. Il \textit{saved user id} e il \textit{saved group id} sono copie dell'\textit{effective user id} e dell'\textit{effective group id} del -processo padre, e vengono settati all'avvio del processo, prima che -\textit{effective user id} e \textit{effective group id} vengano modificati -per tener conto di eventuali \acr{suid} o \acr{sgid}. +processo padre, e vengono settati dalla funzione \func{exec} all'avvio del +processo, prima che \textit{effective user id} e \textit{effective group id} +vengano modificati per tener conto di eventuali \acr{suid} o \acr{sgid}, essi +quindi consentono di tenere traccia di quale fossero l'utente originale. \subsection{Le funzioni \texttt{setuid} e \texttt{setgid}}