\documentclass{article}
\usepackage[latin1]{inputenc}
\usepackage{a4}
\usepackage{fullpage}

\title{TD 1 d'Environnement Logiciel: le corrigé}
\date{Lundi 13 septembre 2004}

\begin{document}
\maketitle

\section{Fichiers et commandes de base}

\textbf{Répertoires}

\begin{itemize}

\item \verb+ls+ affiche les fichiers du répertoire courant en
ométtant ceux dont le nom commence par un point. Les options \verb+a+,
\verb+i+ et \verb+l+, 3 options parmi tant d'autres de \verb+ls+
permettent respectivement d'afficher tous les fichiers, d'afficher
aussi leur numéro d'\emph{inode} et de les afficher un fichier par
liste.

\item Les répertoires \verb+.+ et \verb+..+ représentent
respectivement le répertoire lui même et son répertoire père.

\end{itemize}

\textbf{Les fichiers}

\begin{itemize}

\item Le déplacement par \verb+mv+ sur un même système de fichier ne
modifie pas l'\emph{inode} du fichier. Par contre une copie par
\verb+cp+ duplique effectivement les données sur le disque, et donc
utilise une nouvelle \emph{inode}.

\end{itemize}

\textbf{Utilisateurs, groupes}

\begin{itemize}

\item La ligne correspondant à \verb+root+ sur mon système dans
\verb+/etc/passwd+ est la suivante:

\verb+root:x:0:0:root:/root:/bin/bash+

Cela signifie que son \emph{uid} est $0$, son shell est
\verb+/bin/bash+ et son répertoire \emph{home} est \verb+/root+.

\item Sur mon système les utilisateurs \verb+bind+, \verb+sshd+ et
\verb+Debian-exim+ ont \verb+/bin/false+ pour shell. Cela permet
d'être sûr que personne ne pourra se logger sur ce compte.

\end{itemize}

\textbf{Droits d'accès aux fichiers}

\begin{itemize}

\item Les droits en écriture sur un fichier n'indique pas si on a le
droit d'effacer ce fichier; il faut avoir un droit en écriture sur le
répertoire contenant ce fichier pour cela (effacer un fichier, ce
n'est qu'enlever un lien $\mathrm{nom} \rightarrow \mathrm{inode}$
dans le répertoire parent.

\item Les droits d'un fichier sont stockés dans son \emph{inode}, donc
changer les droits d'un fichier sera visible via tous les liens
physiques qui pointent vers cette \emph{inode}.

\item Un répertoire \verb+incoming+ répondant à la question doit avoir
les droits \verb+rwx-wx--T+ où le \verb+T+ indique le caractère
\emph{sticky}: seul \verb+root+ et le propriétaire d'un fichier
peuvent l'effacer.

\end{itemize}

\textbf{Édition de lien}, \verb+gcc+, \verb+ld+, \verb+make+.

\begin{itemize}

\item Le point d'entrée du programme en \verb+C+ est
traditionnellement appelé \verb+main+ (mais cela peut être changé avec
l'option \verb+-e+ de \verb+ld+). Un \verb+grep main *.c+ donnait la
réponse.

\item \verb+make+ est utilisé dans la compilation de projet en lançant
automatiquement les commandes de compilation et de liaison utiles pour
créer l'exécutable défini dans le fichier \verb+Makefile+. En
particulier à la modification d'un fichier source \verb+C+ les autres
fichiers du projet ne sont pas recompilés, seules les étapes
nécessaires sont refaites.

\end{itemize}

\end{document}
