You are on page 1of 6

Commandes usuelles (introduction aux commandes)

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)

Les principaux shells sous GNU/Linux sont les suivants :


bash, Bourne Again SHell : le plus couramment employé sous GNU/Linux. Conforme POSIX,
compatible avec le shell Bourne, créé par le projet GNU FSF, Free Software Fundation.
csh, C SHell : développé à Bekerley, compatible avec le shell Bourne. N'offre pas l'édition de
la ligne de commande, mais un historique des commandes.
ksh, Korn SHell : le plus utilisé sur l'ensemble des systèmes UNIX. Introduit des techniques
modernes dans le Bourne shell avec lequel il est compatible.
sh, Bourne SHell : Bourne est le shell original du nom de son inventeur. Pas d'édition de ligne
de commande.
tcsh, C SHell (amélioré) : tcsh est au C Shell ce que bash est au shell Bourne.
zsh, Z SHell : le plus récent. Compatible avec le shell Bourne.

ex : echo $SHELL affiche la commande du shell exécuté


man bash manuel Bourne Again Shell

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 [Ctrl­Alt­F1...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]

pour revenir au mode graphique, appuyez simultanément les touches [Ctrl­Alt­F7 | F8]


– sélectionnez un utilisateur dans liste sinon saisissez le (ex : toto)
– choisissez un environnement KDE, GNOME ... et entrez votre mot de passe dans le champ

(*)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.

Gestion de comptes : passwd, useradd, userdel (*) et su


 passwd utilisé pour mettre à jour la ou les marques d’authentification d’un utilisateur
ex : passwd toto

  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

  su exécute un shell avec un User-ID et un Group-ID différents : permet à un utilisateur de se


transformer temporairement en un autre utilisateur.

(*) Note : seulement le super-utilisateur ou racine (root) peut utiliser ces commandes.

Visualisation de fichiers : cat, more et less


 cat, conCATenate, concatène et affiche sur la sortie standard le contenu de chacun des fichiers
ex : cat /proc/version

 more filtre permettant de se déplacer dans un texte écran par écran


ex : more /proc/slabinfo affiche page par page

 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

Navigation : ls, cd, mkdir, rmdir et umask


 ls affiche le contenu d'un répertoire courant puis l’ensemble des fichiers contenus dans chaque
répertoire indiqué. Des option utiles permettent d'afficher des informations supplémentaires.
ex : ls ­l (pour « long ») affiche
drwxr­xr­x   6 toto toto     4096 déc  2 15:27 FormationUnix­Linux
le d signifie qu'il s'agit d'un répertoire (directory)
­rw­rw­r­­   1 toto toto    13580 déc  6 18:29 boot.messages
le – désigne un fichier ordinaire

 mkdir crée un répertoire correspondant à chacun des noms mentionnés


ex : mkdir titi

 rmdir supprime chaque répertoire vide indiqué (utiliser rm ­fr si répertoire non vide)
ex : rmdir titi 

 cd commande interne de bash : permet de déplacer dans l'arborescence du système de fichiers


ex : cd rejoint directement le répertoire personnel désigné aussi par ~,
cd titi va dans le répertoire nommé,
cd .. désigne le répertoire au-dessus «père».

  umask  commande interne de bash : argument similaire au mode absolu chmod mais la
signification des bits est inversé.
ex : umask 027 (u­rwx,g­r+w­x,o+rwx) inverse de chmod 750 (u+rwx,g+r­w+x,o­rwx)

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 r­x r­x
(*) 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

Sept champs sont explicités séparés par le caractère ":" :


– le nom_du_compte de l'utilisateur
– le mot_de_passe de l'utilisateur est en fait représenté par un simple caractère 'x' (*)
– l'entier qui identifie l'utilisateur pour le système d'exploitation (UID=User ID, identifiant
utilisateur)
– le numéro_du_groupe est l'entier qui identifie le groupe de l'utilisateur (GID=Group ID,
identifiant de groupe)
– le commentaire dans lequel on peut retrouver des informations sur l'utilisateur ou simplement
son nom réel
– le répertoire_de_connexion qui est celui dans lequel il se trouve après s'être connecté au
système
– le programme_de_démarrage est la commande exécutée après connexion au système (c'est
fréquemment un interpréteur de commandes)
ex : cat /etc/passwd
(*) Note : un utilitaire spécial appelé /usr/sbin/pwconv place les mots de passe dans le fichier
/etc/shadow dont les permissions sont plus restrictives. Les mots de passe situés dans ce
fichier sont chiffrés avec un mode de chiffrement non-réversible. C'est à dire qu'il n'existe pas de
moyen connu de le retrouver directement, à partir de la version chiffrée. Il est donc inutile de
l'éditer et de remplacer le champ mot_de_passe_crypte en tapant directement le mot de passe,
cela conduirait uniquement au blocage du compte.
ex : cat /etc/shadow affiche les mots de passe cryptés 
   toto:mot_de_passe_crypte:12735:0:99999:7:::

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.

Le super-utilisateur ne se nomme pas obligatoirement root. Pour le changer, il suffit de


remplacer le nom du compte root par celui désiré.
Un compte privilégié est un compte dont l'identifiant (UID, User ID) vaut zéro.
Groupe utilisateurs :
Le fichier /etc/group contient la liste des utilisateurs appartenant aux différents groupes. En
effet, lorsque de nombreux utilisateurs peuvent avoir accès au système, ceux-ci sont fréquemment
rassemblés en différents groupes ayant chacun leurs propres droits d'accès aux fichiers et aux
répertoires. Ce fichier possède un format spécial permettant de repérer chaque groupe
d'utilisateurs ; chacune de ses lignes prend le format suivant :
root:x:0:root
bin:x:1:root,bin,daemon

Description :
nom_du_groupe : champ_special : numero_du_groupe (GID) : liste_utilisateurs (membre1,
membre2)

Il se compose de différents champs séparés par ":" :


– le nom_du_groupe d'utilisateurs
– le champ_spécial est prévu pour le mot de passe encrypté du groupe. Si ce champ est vide
(presque toujours), aucun mot de passe n’est nécessaire
– le numéro_du_groupe est le numéro (GID, l’ID numérique du Groupe) qui fait le lien entre les
fichiers /etc/group et /etc/passwd
– la liste_utilisateurs représente tous les noms des membres du groupe, séparés par des virgules
ex : cat /etc/group

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  

Pour ajouter un utilisateur à un groupe, il suffit d'éditer le fichier /etc/group et de rajouter ce


nom au bout de la ligne en séparant le nom des membres par une virgule.
Pour supprimer un groupe, il suffit d'éditer le fichier /etc/group et d'effacer la ligne
correspondante. Mais attention, il ne faut pas oublier de changer dans le fichier /etc/passwd les
numéros (GID) du groupe supprimé, si des utilisateurs y appartenaient. Il est également essentiel
de chercher les fichiers et répertoires de ce groupe pour le changer (dans le cas contraire les
fichiers et répertoires risquent d'être inaccessibles).

You might also like