Académique Documents
Professionnel Documents
Culture Documents
3.1-Architecture matérielle
Paramètre Signification
-l Pour chaque fichier ou dossier, fournit des informations détaillées.
-a Les fichiers cachés sont affichés (ils commencent par un point).
-d Sur un répertoire, précise le répertoire lui-même et non son contenu
-F Rajoute un caractère à la fin du nom pour spécifier le type : / pour un
répertoire, * pour un exécutable, @ pour un lien symbolique, etc.
-R Si la commande rencontre des répertoires, elle rentre dans les sous-
répertoires de manière récursive.
-t La sortie est triée par date de modification du plus récent au plus
ancien. Cette date est affichée.
-t L’ordre de sortie est inversé.
-r Affiche l’inode du fichier
Si vous relancez la même commande sur un fichier, vous remarquez que la date de
modification a changé. Le manuel de touch vous informera qu’il est ainsi possible de
modifier complètement l’horodatage d’un fichier. Ceci peut être utile pour forcer les
sauvegardes incrémentales sur des fichiers.
Paramètre Signification
-i Demande de confirmation de copie pour chaque fichier
-r Récursif : copie un répertoire et tout son contenu
-p Les permissions et les dates sont préservées
-f Forcer la copie
Pour copier plusieurs fichiers, utilisez la commande cp nom1 nom2 ... répertoire_cible.
Les commandes suivantes accèdent au répertoire linux, créent un répertoire bak et y
copient tous les fichiers *.odt.
# cd linux
# mkdir bak
# cp *.odt bak/
Pour copier tout un répertoire, ainsi que son contenu, utilisez cp -r. Dans l’exemple
suivant, cd sans argument permet d’aller dans le répertoire personnel. La deuxième
commande crée une copie complète du répertoire linux sous le nom linux-bak.
# cd
# cp -r linux linux-bak
- Créer des répertoires (mkdir)
La commande mkdir (make directory) permet de créer un ou plusieurs répertoires, ou
une arborescence complète. Par défaut la commande ne crée pas d’arborescence. Si vous
passez comme arguments rep1/rep2 et que rep1 n’existe pas, la commande retourne
une erreur. Dans ce cas, utilisez le paramètre –p.
# mkdir [-p] rep1 [rep2] ... [repn]
Notez l’existence du paramètre -u : si le fichier de destination existe avec une date plus
récente, cela vous évite de l’écraser.
- Supprimer un fichier ou une arborescence (rm)
La commande rm (remove) permet de supprimer un ou plusieurs fichiers, et
éventuellement une arborescence complète, suivant les options. La suppression est
définitive.
Syntaxe générale : # rm [Options] fich1 [fich2 …]
Les options sont classiques mais vu la particularité et la dangerosité de cette commande
il est bon de faire un rappel
Paramètre Signification
-i La commande demandera une confirmation pour chacun des fichiers à
supprimer. Suivant la version d’Unix, le message change et la réponse
aussi : y, Y, O, o, N, n, parfois toutes.
-r Le paramètre suivant attendu est un répertoire. Dans ce cas, la
suppression est récursive : tous les niveaux inférieurs sont supprimés,
les répertoires comme les fichiers.Force la suppression.
-f Force la suppression.
- grep
La commande grep parcourt un fichier texte à la recherche d’un motif de recherche.
Selon les options, elle affiche les lignes du fichier correspondant ou le nombre de lignes
concernées. Le motif de recherche est une expression rationnelle.
Exemple :
# grep emacs *.txt
cherche la chaîne de caractères "emacs" dans tous les fichiers *.txt du répertoire. Une
liste de toutes les lignes correspondantes (préfixées par le nom du fichier) s’affiche à
l’écran.
grep -v renvoie comme résultat toutes les lignes qui ne contiennent pas le motif de
recherche.
Exemple :
# grep -v ’^#’ configfile | cat -s > nocomments
supprime toutes les lignes qui commencent par le caractère # dans le fichier configfile.
La commande cat supprime toutes les lignes vides et le résultat est enregistré dans le
fichier nocomments.
- whereis
whereis parcourt tous les répertoires usuels pour les fichiers exécutables, les fichiers de
configuration, les pages de manuel et le code source, afin de trouver le nom de fichier
indiqué.
Exemple :
# whereis fstab
fstab : /etc/fstab /etc/fstab.pre-uuid /usr/include/fstab.h /usr/share/
➥man/man5/fstab.5.gz
5 - Utilisateurs et groupes d’utilisateurs
5.1 - Identification et authentification
L’identification, c’est savoir qui est qui, afin de déterminer les droits de la personne
qui se connecte. Un utilisateur est identifié par un login. L’authentification, c’est
apporter la preuve de qui on est, par exemple via un secret partagé entre l’utilisateur
et le système, et connus d’eux seuls. L’utilisateur est authentifié par un mot de passe.
5.2 Les utilisateurs
Un utilisateur est l’association d’un nom de connexion, le login, à un UID (User ID) et
au moins un GID (Group ID). Les UID et les GID sont en principe uniques.
L’UID identifie l’utilisateur (ou le compte applicatif) tout au long de sa connexion. Il est
utilisé pour le contrôle de ses droits et de ceux des processus qu’il a lancé. Ce sont
les UID et GID qui sont stockés au sein de la table des inodes, dans la table des
processus, etc. et non les logins.
L’utilisateur dispose des attributs de base suivants :
• un nom de connexion appelé le login
• un mot de passe
• un UID
• un GID correspondant à son groupe principal
• un descriptif
• un répertoire de connexion
• une commande de connexion
Les UID d’une valeur inférieure à 100 sont en principe associés à des comptes
spéciaux avec des droits étendus. Ainsi l’UID de root, l’administrateur, est 0. Selon
les distributions, à partir de 100, 500 ou 1000, et ce jusqu’à environ 60000, ce sont
les UID des utilisateurs sans pouvoirs particuliers.
5.3 - Les groupes
Chaque utilisateur fait partie d’au moins un groupe. Un groupe regroupe des
utilisateurs. Comme pour les logins, le GID du groupe accompagne toujours
l’utilisateur pour le contrôle de ses droits. Un utilisateur peut faire partie de plusieurs
groupes, auquel cas il faut distinguer son groupe primaire des groupes secondaires.
Les groupes ont aussi des numéros. Il existe des groupes spécifiques pour la gestion
de certaines propriétés du système et notamment l’accès à certains périphériques.
Le groupe primaire est celui qui est toujours appliqué à la création d’un fichier. Si
l’utilisateur toto a pour groupe primaire « users », alors les fichiers créés par toto
auront comme groupe d’appartenance « users ».
Un utilisateur dispose de tous les droits associés à ses groupes secondaires. Si carl
a comme groupe secondaire adm et qu’un fichier dispose des droits d’écriture pour
ce groupe, alors toto aura le droit de modifier son contenu.
La commande id permet de connaître les informations essentielles sur un utilisateur:
uid, gid, groupes secondaires.
Le fichier « comptes » sur la capture ci-dessous est créé par carl. Son propriétaire est carl
et son groupe est le groupe principal de toto : toto.
bean:$2a$10$AjADxPEfE5iUJcltzYA4wOZO.f2UZ0qP/8EnOFY.P.m10HifS7J8i:13
913:0:99999:7:::
• bean : le login.
• $2a$10$AjADxPEfE5iUJcltzYA4wOZO.f2UZ0qP/8EnOFY.P.m10HifS7J8i :
le mot de passe crypté
•13913 : nombre de jours depuis le 1er janvier 1970 ou la date du dernier
changement de mot de passe ;
•0 : nombre de jours avant lesquels le mot de passe ne peut pas être changé (0 : il
peut être changé n’importe quand).
•99999 : nombre de jours après lesquels le mot de passe doit être changé.
•7 : nombre de jours avant l’expiration du mot de passe durant lesquels l’utilisateur
doit être prévenu.
•nombre de jours après l’expiration du mot de passe après lesquels le compte est
désactivé.
•nombre de jours depuis le 1er janvier 1970 à partir du moment où le compte a été
désactivé.
•réservé.
/etc/group
Le fichier /etc/group contient la définition des groupes d’utilisateurs et pour chacun la
liste des utilisateurs dont il est le groupe secondaire. Chaque ligne est composée de
quatre champs :
Group : password:GID:user1,user2,...
Group : le nom du groupe.
password : le mot de passe associé.
GID : le Group ID.
user1,user2,... : la liste des utilisateurs appartenant à ce groupe.
6 Les droits d’accès
6.1 Droits des utilisateurs
Le rôle d’un système d’exploitation est aussi d’assurer la sécurité et l’accès aux données,
ce qui est possible grâce au mécanisme des droits. Chaque fichier ou répertoire se voit
attribuer des droits qui lui sont propres, des autorisations d’accès individuelles. Lors d’un
accès le système vérifie si celui-ci est permis.
À sa création par l’administrateur, un utilisateur se voit affecter un UID (User
Identification) unique. Les utilisateurs sont définis dans le fichier /etc/passwd. De même
chaque utilisateur est rattaché à un groupe au moins (groupe principal), chaque groupe
possédant un identifiant unique, le GID (Group Identification). Les groupes sont définis
dans /etc/group. La commande id permet d’obtenir ces informations. En interne, le
système travaille uniquement avec les UID et GID, et pas avec les noms eux-mêmes.
À chaque fichier (inode) sont associés un UID et un GID définissant son propriétaire et
son groupe d’appartenance.
Vous affectez des droits pour le propriétaire (owner), pour le groupe d’appartenance
(group) et pour le reste du monde (other).
On distingue trois cas de figure :
•UID de l’utilisateur identique à l’UID défini pour le fichier. Cet utilisateur est
propriétaire du fichier.
•Les UID sont différents : le système vérifie si le GID de l’utilisateur est identique au
GID du fichier. Si oui l’utilisateur appartient au groupe associé au fichier.
•Dans les autres cas (aucune correspondance) : il s’agit du reste du monde (others),
ni le propriétaire, ni un membre du groupe.
Modification des droits
Lors de sa création, un fichier ou un répertoire dispose de droits par défaut. Utilisez la
commande chmod (change mode) pour modifier les droits sur un fichier ou un
répertoire. Il existe deux méthodes pour modifier ces droits : par la forme symbolique et
par la base 8.
Seul le propriétaire d’un fichier peut en modifier les droits (plus l’administrateur
système).
L’option -R change les droits de manière récursive.
- Par symboles
# chmod modifications Fic1 [Fic2...]
S’il faut modifier les droits de l’utilisateur, utilisez le caractère u, pour les droits du
groupe le caractère g, pour le reste du monde le caractère o et pour tous, le caractère a.
Pour ajouter des droits, on utilise le caractère +, pour en retirer le caractère -, et pour ne
pas tenir compte des paramètres précédents le caractère =.
Enfin, le droit d’accès par lui-même : r, w ou x. Vous pouvez séparer les modifications par
des virgules et cumuler plusieurs droits dans une même commande.
# ls -l
total 3
-rw-r--r-- 1 carl users 0 mar 21 22:03 fic1
-rw-r--r-- 1 carl users 0 mar 21 22:03 fic2
-rw-r--r-- 1 carl users 0 mar 21 22:03 fic3
# chmod g+w fic1
# ls -l fic1
-rw-rw-r-- 1 carl users 0 mar 21 22:03 fic1
# chmod u=rwx,g=x,o=rw fic2
# ls -l fic2
-rwx--xrw- 1 carl users 0 mar 21 22:03 fic2
# chmod o-r fic3
# ls -l fic3
-rw-r 1 carl users 0 mar 21 22:03 fic3
Par base 8
La syntaxe est identique à celle des symboles. À chaque droit correspond une valeur
octale :
• Le r vaut 4.
• Le w vaut 2.
• Le x vaut 1.
# chmod 755 fic1
# chmod 644 fic2
# ls -l fic1 fic2
-rwxr-xr-x 1 seb users 0 mar 21 22:03 fic1
-rw-r--r-- 1 seb users 0 mar 21 22:03 fic2
6.2 - Masque des droits
- Restreindre des droits automatiquement
Lors de la création d’un fichier ou d’un répertoire, des droits leur sont automatiquement
assignés. Généralement, c’est rw-r--r-- (644) pour un fichier et rwxr-xr-x (755) pour un
répertoire. Ces valeurs sont contrôlées par un masque, lui-même modifiable par la
commande umask. La commande umask prend comme paramètre une valeur octale dont
chaque droit individuel sera supprimé des droits d’accès maximum du fichier ou du
répertoire.
Par défaut, tous les fichiers sont créés avec les droits 666 (rw-rw-rw-).
Par défaut tous les répertoires sont créés avec les droits 777 (rwxrwxrwx) .
Puis le masque est appliqué.
Le masque est le même pour l’ensemble des fichiers.
Un masque ne modifie pas les droits des fichiers existants, mais seulement ceux des
nouveaux fichiers.
Le masque par défaut est 022, soit ----w--w-. Pour obtenir cette valeur, tapez umask sans
paramètre.
- Calcul de masque
Pour un fichier
Défaut
rw-rw-rw- (666)
Retirer
----w--w- (022)
Reste
rw-r--r-- (644)
Pour un répertoire
Défaut
rwxrwxrwx (777)
Retirer
----w--w- (022)
Reste
rwxr-xr-x (755)
Note : appliquer un masque n’est pas soustraire, mais supprimer des droits de ceux par
défaut, droit par droit.
Par exemple :
Défaut
Retirer
Reste
rw-rw-rw- (666)
----wxrwx (037)
rw-r----- (640)
Et non 629, ce qui est impossible en octal.