From b672a57f9abbea283031bdd00e4e8b894750fabe Mon Sep 17 00:00:00 2001 From: Simone Piccardi Date: Sun, 26 Aug 2001 22:26:13 +0000 Subject: [PATCH] Aggiunta roba su euid & C --- prochand.tex | 120 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 73 insertions(+), 47 deletions(-) diff --git a/prochand.tex b/prochand.tex index b2f7b9a..e503452 100644 --- a/prochand.tex +++ b/prochand.tex @@ -162,53 +162,7 @@ Tutti i processi figli dello stesso processo padre sono detti sessione, in cui si raggruppano tutti i processi creati su uno stesso terminale una volta che si è effettuato il login. Torneremo su questo argomento in \secref{cap:terminal}, dove esamineremo tutti gli altri -identificativi associati ad un processo. - -\subsection{Utente e gruppo di un processo} -\label{sec:proc_user_group} - -Come 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 confonti 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:file_perm_overview} che ad ogni processo -associato un certo numero di identificatori (riportati \ntab) che fanno -riferimento all'utente che ha lanciato il processo (attraverso i valori di -\acr{uid} e \acr{gid}), e vengono usati sia per il controllo di accesso ai -file che per la gestione dei privilegi associati ai processi stessi. -\begin{table}[htb] - \centering - \begin{tabular}[c]{|c|l|l|} - \hline - Sigla & Significato & Utilizzo \\ - \hline - \hline - \acr{ruid} & \textit{real user id} & indica l'utente reale che ha lanciato - il programma\\ - \acr{rgid} & \textit{real group id} & indica il gruppo reale dell'utente - che ha lanciato il programma \\ - \acr{euid} & \textit{effective user id} & indica l'utente effettivo usato - dal programma \\ - \acr{egid} & \textit{effective group id} & indica il gruppo effettivo usato - dal programma \\ - & \textit{supplementary group id} & indica i gruppi cui - l'utente appartiene \\ - \acr{suid} & \textit{saved user id} & indica l'utente \\ - \acr{sgid} & \textit{daved group id} & indica il gruppo \\ - \acr{fsuid} & \textit{filesystem user id} & indica l'utente effettivo per - il filesystem \\ - \acr{fsgid} & \textit{filesystem group id} & indica il gruppo effettivo - per il filesystem \\ - \hline - \end{tabular} - \caption{Identificatori di utente e gruppo associati a ciascun processo.} - \label{tab:proc_uid_gid} -\end{table} - - - +identificativi associati ad un processo relativi al controllo di sessione. \subsection{La funzione \func{fork}} @@ -258,6 +212,78 @@ se viene eseguito dal padre o dal figlio. \section{Il controllo di accesso} \label{sec:proc_perms} +In questa sezione esamineremo le problematiche relative al controllo di +accesso dal punto di vista del processi; gli identificativi usati, come questi +vengono modificati nella creazione e nel lancio di nuovi processi, e le varie +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 confonti 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. + +In realtà ad ogni processo è associato un certo numero di identificatori, il +cui elenco è riportato \ntab, in genere questi derivano direttamente +dall'utente che ha lanciato il processo (attraverso i valori di \acr{uid} e +\acr{gid}), e vengono usati sia per il controllo di accesso ai file che per la +gestione dei privilegi associati ai processi stessi. +\begin{table}[htb] + \centering + \begin{tabular}[c]{|c|l|l|} + \hline + Sigla & Significato & Utilizzo \\ + \hline + \hline + \acr{ruid} & \textit{real user id} & indica l'utente reale che ha lanciato + il programma\\ + \acr{rgid} & \textit{real group id} & indica il gruppo reale dell'utente + che ha lanciato il programma \\ + \acr{euid} & \textit{effective user id} & indica l'utente effettivo usato + dal programma \\ + \acr{egid} & \textit{effective group id} & indica il gruppo effettivo usato + dal programma \\ + & \textit{supplementary group id} & indica i gruppi cui + l'utente appartiene \\ + \acr{suid} & \textit{saved user id} & indica l'utente \\ + \acr{sgid} & \textit{daved group id} & indica il gruppo \\ + \acr{fsuid} & \textit{filesystem user id} & indica l'utente effettivo per + il filesystem \\ + \acr{fsgid} & \textit{filesystem group id} & indica il gruppo effettivo + per il filesystem \\ + \hline + \end{tabular} + \caption{Identificatori di utente e gruppo associati a ciascun processo.} + \label{tab:proc_uid_gid} +\end{table} + +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} li +setta 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. + +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}. + \subsection{Le funzioni \texttt{setuid} e \texttt{setgid}} \label{sec:proc_setuid} -- 2.30.2