Professional Documents
Culture Documents
Un des utilitaires le plus important sous les systèmes UNIX et GNU/Linux est l'interprèteur de
commandes (shell). Le "shell", la coquille qui entoure le noyau (kernel), ne fait pas partie du
système d'exploitation mais il constitue la première interface avec l'utilisateur (user).
Utilitaire de commandes
Le rôle essentiel du shell est d'interprèter toutes les commandes et d'exécuter des programmes.
Pour cela, il effectue (en boucle infinie) :
– la lecture d'une ligne sa compréhension comme une demande d'exécution d'un programme
avec d'éventuels paramètres.
– le lancement de ce programme avec passage des paramètres d'éventuelles redirections
d'entrées-sorties
– les exécutions de scripts (fichiers de commandes)
Le programme /bin/bash est lancé dès qu'un utilisateur se connecte ou lorsque l'on ouvre une
fenêtre xterm ou un pseudo terminal (console) dans un environnement graphique tels que KDE,
GNOME, XFCE ... fonctionnant avec le serveur X.
(*) Note : dans les exemples qui suivront dans tous les exercices des chapitres suivants, nous
nous référerons principalement au GNU BASH, Bourne Again SHell.
Connexion utilisateurs (*) :
Début de session et de connexion : une session sous les systèmes de type UNIX est donc la
première étape qui permet de se connecter en saisissant un nom d'utilisateur suivi d'un mot de
passe. Ces derniers sont lus par le programme /bin/login qui les vérifie.
Passez en mode console (si le mode graphique apparaît), en pressant [CtrlAltF1...F6] :
à l'invite (prompt) du domaine_machine login : entrez le nom d'utilisateur [Return]
ex : login : toto [Return] Password : entrez votre mot de passe [Return]
(*)Note : le système offre plusieurs comptes pré-installés, tel que root qui est destiné aux tâches
administratives. En tant que super-utilisateur ou root vous avez tous les privilèges et le droit
d'accéder à tous les fichiers, ce qui peut s'avérer dangereux. N'utilisez ce compte que lorsque que
c'est absolument nécessaire.
useradd créer un nouvel utilisateur ou mettre à jour l’information par défaut sur un nouvel
utilisateur
ex : useradd toto2
userdel modifie les fichiers des comptes du système, en supprimant toutes les entrées qui se
réfèrent à login. L’utilisateur nommé doit exister.
ex : userdel toto2
(*) Note : seulement le super-utilisateur ou racine (root) peut utiliser ces commandes.
less similaire à more, mais permet des mouvements en arrière qu’en avant dans les fichiers
ex : less /proc/modules
Aide en ligne : man
man, MANual, formate et affiche les pages du manuel en ligne. Avec l'argument k, man permet
de trouver une commande (en fait, beaucoup trop de commandes) à partir d'un mot-clé.
ex : man man affiche les pages du manuel de la commande man
man k print recherche et affiche les commandes relatives à print
rmdir supprime chaque répertoire vide indiqué (utiliser rm fr si répertoire non vide)
ex : rmdir titi
umask commande interne de bash : argument similaire au mode absolu chmod mais la
signification des bits est inversé.
ex : umask 027 (urwx,gr+wx,o+rwx) inverse de chmod 750 (u+rwx,g+rw+x,orwx)
Protections :
La protection d'un fichier ainsi que le nom du propriétaire et le nom du groupe du propriétaire sont
établis à sa création et ne peuvent être modifiés que par son propriétaire.
La commande umask permet de définir un masque de protection des fichiers (et répertoires) lors
de leur création. Cette commande se trouve généralement dans le fichier d'initialisation de votre
shell mais elle peut être exécutée à tout moment. Le masque est exprimé en base 8 (octal).
Le masque de protection le plus utilisé est umask 022 :
ex : la valeur 022 est soustraite de la permission permanente 111 111 111.
111 111 111 : permission permanente
000 010 010 : on enlève les bits dont on ne veut pas
111 101 101 : 755
umask 022 permet de créer des fichiers dont la protection est rwx rx rx
(*) Note : pour les fichiers ordinaires, umask 022 donnera une protection de type rw r r,
car la possibilité d'exécution n'est pas autorisée sur les fichiers ordinaires.
La forme symbolique de la commande umask est beaucoup plus agréable à l'utilisation que la
forme octale. De plus elle est totalement cohérente avec la forme symbolique du chmod, à
préférer donc :
ex : [toto@domaine ~] $ umask u=rwx,g=rx,o=rx
[toto@domaine ~] $ umask affiche 0022
[toto@domaine ~] $ umask S affiche u=rwx,g=rx,o=rx
Utilisateur :
Lorsque plusieurs personnes ont accès à un système, il est nécessaire que l'administrateur
système gère les utilisateurs. Pour cela, les commandes usuelles telles que usermod, groupmod
et les fichiers à configurer doivent être connus. Il s'agit des fichiers : /etc/passwd et /
etc/group.
Le fichier /etc/passwd contient des attributs et les informations relatives aux utilisateurs
(users) ; login, mots de passe (password). Il faut toujours le laisser librement accessible en lecture
à tous car certaines applications l'emploient. Seul le super-utilisateur (su ou root) doit pouvoir le
modifier. Il faut donc modifier les droits de ce fichier de façon à ce qu'il soit en lecture seule pour
les autres utilisateurs.
ex : chmod 644 /etc/passwd
Ce fichier possède un format spécial permettant de repérer chaque utilisateur ; chacune de ses
lignes prend le format suivant :
toto:x:500:500:Toto:/home/toto:/bin/bash
Description :
nom_du_compte : mot_de_passe : numero_utilisateur : numero_de_groupe : commentaire :
repertoire_de_connexion : programme_de_demarrage
Lorsqu'un utilisateur se connecte, le programme login compare le mot de passe saisi par
l'utilisateur (après l'avoir chiffré) à celui qui est dans le fichier shadow. S'ils sont différents, la
connexion ne peut être établie. Pour interdire l'utilisation, il suffit de remplacer le mot_de_passe
(/etc/passwd) par une étoile "*".
Les accès à un compte peuvent éventuellement être ouverts en laissant le champ mot_de_passe
(/etc/passwd) vide. Toute personne voulant se connecter avec ce compte pourra alors le faire.
Pour pouvoir modifier le mot de passe d'un compte grâce à la commande passwd, il faut être soit
administrateur système, soit propriétaire du compte (le système demandera alors à l'utilisateur
d'entrer l'ancien mot de passe avant de lui demander d'entrer 2 fois son nouveau mot de passe).
UID : identifiant unique de chaque compte utilisateur (user). Les nombres de 0 à 99 sont
fréquemment réservés à des comptes propres à la machine. Les valeurs supérieures à 100 sont
elles réservées aux comptes utilisateurs (users).
GID : identifiant de groupe. Le groupe (group) par défaut porte le numéro 500. Cet identifiant est
utilisé en relation avec les droits d'accès aux fichiers. Cette question ne vous préoccupera que si
votre système comporte plus d'un seul groupe d'utilisateurs. Il faudra alors se préoccuper du
fichier /etc/group.
Il est possible à partir du shell de modifier l'interpréteur de commandes. Pour ceci, il faut utiliser la
commande chsh ou passwd s. Linux cherche alors dans le fichier /etc/shells le
programme que vous avez spécifié. Seules les commandes présentes dans ce fichier seront
acceptées et remplaceront la valeur actuelle du champ programme_de_demarrage. Ces
restrictions ne s'appliquent pas au compte du super-utilisateur root.
ex : chsh s /bin/bash
Assurez-vous que les droits d'accès du fichier /etc/shells sont les mêmes que pour le fichier
/etc/passwd.
Description :
nom_du_groupe : champ_special : numero_du_groupe (GID) : liste_utilisateurs (membre1,
membre2)
Lorsque l'on utilise la commande ls avec l'option l, le numéro de groupe est affiché avec le
numéro de l'utilisateur à qui appartient le fichier (ou le répertoire). Ce numéro unique correspond à
un nom de groupe unique (souvent 8 caractères max.).
Un même utilisateur peut apparaître dans plusieurs groupes. Lorsqu'il se connecte au système, il
appartient au groupe spécifié dans le fichier /etc/passwd (le champ GID). Il peut en changer à
l'aide de la commande newgrp. Des droits d'accès aux fichiers sont alors définis.
Les protections du fichier doivent empêcher sa modification par les utilisateurs non privilégiés.
Pour ajouter un groupe, l'administrateur peut modifier le fichier /etc/group à l'aide d'un éditeur
de texte. Il peut également utiliser la commande addgroup ou groupadd (pas toujours
présentes).
Dans le premier cas, il aura uniquement la ou les lignes correspondant aux groupes, à ajouter.
ex : titi : x : 502 : toto