Africa Computing - Cours Administration Linux - Utilisation de Linux.

Rubrique : Accueil > Admin. Linux > Utilisation de Linux
 

Chapitre 3 : Utilisation de Linux





3.1. Introduction

Linux est un système d’exploitation puissant mais son utilisation n’est pas facile pour les débutants non familiarisés avec l’environnement UNIX. L’utilisation de la plupart des applications peut s’effectuer à partir de l’interface graphique X-Window (ou à partir de sur-couches de X-Window telles que les environnements graphiques KDE et GNOME). Cependant pour certains travaux, il est beaucoup plus pratique et plus souple d’utiliser des lignes de commande depuis un environnement shell plutôt que d’utiliser de lourdes solutions graphiques. De plus, si vous devez intervenir sur votre serveur Linux à distance (c’est à dire depuis un poste connecté à Internet), vous allez inévitablement devoir utiliser des lignes de commande.

Qu’appelle t’on un shell ? Un shell est la liaison la plus élémentaire entre l’utilisateur et le système d’exploitation, c’est à dire le programme de gestion de la ligne de commande. Les commandes saisies sont interprétées par le shell et transmises au système d’exploitation.

De nombreuses commandes du shell ressemblent aux commandes MS-DOS : en utilisant la terminologie UNIX, nous pouvons considérer que le programme command.com correspond au shell de MS-DOS. Dans les environnements de type UNIX, il existe plusieurs shells (bash, tcsh, csh, sh, etc..)



3.2. Les commandes de base

Pour toutes les commandes, il est possible d’obtenir de l’aide en tapant man suivi du nom de la commande. En tapant une commande suivie du paramètre --help, nous obtenons la liste des paramètres possibles. N’hésitez pas à recourir à la commande man ou au paramètre --help dès que vous avez besoin d’aide.

3.2.1. Se déplacer dans les répertoires (cd)

Lorsque vous ouvrez une session Unix avec votre login et votre mot de passe, vous vous retrouvez devant le "prompt" du shell. En fonction du shell employé, le prompt peut avoir la forme suivante :

[philippe AT sirius essai] $

Le mot philippe signifie que vous vous êtes "logué" sur le compte de l’utilisateur philippe, AT sirius signifie que vous êtes sur la machine qui porte le nom sirius et essai signifie que vous êtes dans le répertoire essai.

La commande cd permet de se déplacer dans les répertoires. La command ls permet d’afficher la liste des fichiers d’un répertoire.

Attention, sous les systèmes Unix, un répertoire est désigné par le symbole / ou slash et non pas par un \ ou anti-slash comme c’est le cas sous DOS.

Exemples d’utilisation de la commande cd :

  $ cd / déplacement à la racine du système
  $ cd /essai déplacement dans le répertoire essai de la racine
  $ cd essai déplacement dans le répertoire courant essai
  $ cd essai/ déplacement dans le répertoire courant essai
  $ cd /usr/local déplacement dans le répertoire apache du répertoire /usr
  $ cd .. recule d'une branche vers la racine
  $ cd ~ déplacement dans son répertoire personnel
  $ cd ~philippe déplacement dans le répertoire personnel de l'utilisateur de philipppe

Etant donné que le système mémorise le répertoire courant (répertoire dans lequel on est), on peut utiliser des noms de chemins relatifs :

  $ cd /home/philippe/essai chemin absolu
  $ cd essai chemin relatif



3.2.2. Lister les fichiers d’un répertoire (ls)

La commande ls permet de lister le contenu d’un répertoire.

  [philippe AT sirius essai] $ cd /bin
[philippe AT sirius /bin] $ ls
  arch
ash
awk
cp
cpio
csh
date
dd
df
dmesg
fgrep
gawk
grep
gunzip
gzip
hostname
kill
mount
mt
mv
netstat
nisdomainname
ping
ps
sh
sleep
sort
stty
su
sync
tar
ypdomain
zcat
zsh
ls

La commande ls sans arguments donne un listing brut difficile à exploiter. Pour obtenir des informations plus précises, il est nécessaire d’utiliser l’argument -l.

Exercice : Taper la commande ls avec -l en argument.

Avant de continuer, il est nécessaire de fournir quelques explications sur la gestion des fichiers. Sous Linux, un fichier peut représenter :

  • un fichier texte ou un fichier exécutable (on parle alors de fichier binaire) ;
  • un répertoire ;
  • un périphérique ;
  • une référence à un autre fichier (on parle alors de lien).

Linux étant un système multi-utilisateur, les utilisateurs doivent par conséquent être administré. Pour faciliter cette administration, les utilisateurs sont réunis en groupes. Ce qui permet de paramétrer des droits spécifiques à chaque groupe : droits en lecture, mais aussi en écriture et en exécution.

Revenons à l’exemple ci-dessus : les informations fournies sont relativement nombreuses et sont regroupées en colonnes :

  • la première colonne fournit des informations sur les droits ;
  • la colonne suivante est le nombre de liens pointant sur ce fichier ;
  • la suivante donne le nom du propriétaire du fichier.
  • la quatrième indique le nom du groupe qui peut accéder au fichier selon les actions autorisées par le propriétaire ;
  • la cinquième nous donne la taille du fichier en octets.
  • la sixième donne la date et l’heure de la dernière modification du fichier.
  • et enfin vient le nom du fichier. S’il s’agit d’un lien, la référence du fichier est indiqué par un -> [source]

La première colonne constitué de 10 caractères fournit des informations sur le type de fichier et les droits associés. Pour le premier caractère :

  • le caractère - représente un simple fichier ;
  • la lettre d représente un dossier (directory) ;
  • la lettre l représente un lien ;

Il existe d’autres types de fichiers mais nous ne nous en occuperons pas à ce niveau. Les 9 lettres suivantes sont groupées trois par trois et indiquent les droits associés au fichier, c’est à dire par qui et comment un fichier peut-être utilisé :

  • le premier triplet correspond aux droits du propriétaire,
  • le second triplet correspond aux droits des membres du groupe (un utilisateur intègre un groupe de travail afin de partager des fichiers) ;
  • le troisième correspond aux droits des autres utilisateurs du système.

Pour chaque triplet :

  • la première lettre indique si le fichier peut être lu ou pas : r (readable) si le fichier peut être lu et un tiret sinon ;
  • la seconde lettre indique si le fichier peut être écrit ou pas : w (writable) ou un tiret ;
  • la troisième lettre indique si le fichier peut être exécuté : x pour un binaire exécutable ou un tiret.

Ainsi dans l’exemple précédent, le fichier lisezmoi.txt peut être lu et écrit pas son propriétaire, il peut également être lu par les membres de son groupe mais ne peut être modifié. Pour les autres, la lecture et la modification de ce fichier ne sont pas autorisés.

Pour vous aider à retenir l’ordre de présentation des droits (utilisateur / groupe / autres), vous pouvez utiliser l’astuce mnémotechnique suivante : je, nous, ils.

Notons qu’il existe également des fichiers cachés sous Linux : lorsque le nom d’un fichier commence par un point (caractère .), celui-ci n’est visible qu’avec l’option -a.

Exercice : Taper ls avec -la en argument depuis votre répertoire personnel.

Les liens ainsi que la modification des droits associés à un fichier sont abordés un peu plus loin.



3.2.3. Retrouver dans quel répertoire je suis (pwd) et créer un répertoire (mkdir)

Lorsque l’on se déplace dans un répertoire, le shell n’affiche que le nom du répertoire dans lequel on se trouve sans préciser le chemin complet. On peut donc très facilement se tromper de répertoire : par exemple penser être dans le répertoire /bin alors que l’on se trouve dans le répertoire /usr/local/bin. La commande pwd permet de connaître le chemin du répertoire dans lequel on se trouve.


[philippe AT sirius bin]$ pwd
/usr/local/bin

Pour créer un répertoire il suffit d’utiliser la commande mkdir avec le nom du répertoire souhaité en paramètre.

Exercice : Créer un répertoire essai dans votre répertoire personnel.



3.2.4. Copier (cp), supprimer (rm), déplacer et renommer un fichier (mv)

La copie de fichier s’effectue avec la commande cp (copy). La syntaxe de la commande cp est la suivante : cp source destination La source et la destination pouvant être un fichier ou un répertoire.

Exemples :

  $ cp lisezmoi.txt essai.txt Duplique le fichier lisezmoi.txt en essai.txt
  $ cp lisezmoi.txt essai/ Copie le fichier lisezmoi.txt dans le répertoire essai
  $ cp essai/ essai2/ Copie les fichiers du répertoire essai dans le
répertoire essai2
  $ cp -R essai/ essai2/ Copie tous les fichiers du répertoire essai - y compris les sous-répertoires dans le répertoire essai2

La commande rm (remove) permet de supprimer un fichier.

  $ rm lisezmoi.txt Supprime le fichier lisezmoi.txt

L’option -R permet de supprimer récursivement tout le contenu d’un répertoire. Attention, évitez au maximum d’utiliser cette option et surtout ne l’utiliser jamais en tant que root.

La commande rmdir (remove directory) permet de supprimer un répertoire.

  $ rmdir essai Supprime le répertoire essai

La commande mv permet de renommer un fichier.

  $ cp lisezmoi.txt essai.txt Duplique le fichier lisezmoi.txt en essai.txt
  $ mv lisezmoi.txt essai2.txt Renomme le fichier lisezmoi.txt en essai2.txt



3.2.5. Afficher le contenu d’un fichier (cat et more)

La commande cat permet de visualiser le contenu d’un fichier c’est à dire d’envoyer le contenu du fichier vers une la sortie par défaut : l’écran.

Exercice : Repérer un fichier non exécutable et afficher son contenu (vous pouvez vous rendre dans le répertoire /etc).

La commande more permet également de visualiser le contenu d’un fichier. L’affichage s’effectue page par page.

Exercice : Afficher le fichier précédent avec la commande more.

La commande more permet également de passer en mode éditeur en tapant vi pendant la visualisation du fichier.



3.2.6. Editer un fichier (vi et emacs)

L’éditeur le plus redouté des informaticiens est vi. Cet éditeur est l’éditeur élémentaire que l’on retrouve sur la plupart des systèmes d’exploitation et qui n’utilise pas d’interface graphique. Il prend en charge les commandes et les données en même temps. Une fois vi lancé, deux modes de fonctionnement se présentent : le mode commandes et le mode édition.

  • pour passer du mode édition au mode commande il suffit d’appuyer sur la touche échappement ;
  • pour passer du mode commande au mode édition il faut taper la commande d’insertion (ou équivalent)

Une fois lancé : vi <nom de fichier> ; vous pouvez employer quelques unes des commandes ci-après les plus courantes :
commandes avec passage en mode insertion

  • i, a : insère une lettre avant ou après le curseur
  • cw : modifie le mot courant
  • cc : modifie la ligne courante

commandes sans passage en mode insertion

  • x , X : efface le caractère suivant ou avant les curseur
  • dw : efface un mot
  • dd : efface une ligne
  • yw : copie un mot dans le buffer
  • yy : copie la ligne courante dans le buffer
  • p : copie le buffer à la position courante
  • /<mot> : recherche d’instances de ’mot’ dans le fichier ; n pour suivante, N pour précedente
  • :<nombre> : va a la ligne
  • :q : quitte le fichier
  • :q! : quitte le fichier sans sauvegarder
  • :w : sauvegarde le fichier
  • :x : sauvegarde et quitte

emacs est un autre éditeur standard utilisé dans différents systèmes d’exploitation, il dispose d’un langage qui permet de le personnaliser à souhaits. Il dispose néanmoins de menus ’habituels’ tels que la gestion des fichiers, la recherche de caractères, etc.. Ainsi que de règles préprogrammées qui permettent aux développeurs une mise en page dépendante du langage utilisé (C, C++, java ...) reconnaissant les commandes courantes, les chaînes de caractères, etc ..

Exercice : Ajouter les noms des serveurs du réseau local dans le fichier /etc/hosts



3.2.7. Retrouver un fichier (find et which)

Comme l’on s’en doute bien il arrive que l’on ait à retrouver un fichier dont on ne connaît plus l’emplacement ou même le nom ; Linux comprend quelques outils pour ces recherches.

La commande which permet de scruter les répertoires les plus communément utilisés (dont le chemin est indiqué dans la variable d’environnement PATH) pour retrouver le nom de fichier indiqué en argument.

Exemple : which apachectl recherchera dans tous les répertoires (du PATH) le fichier apachectl

Cette commande est surtout utile pour vérifier que l’on utilise bien la version souhaitée d’un binaire (exécutable). La commande whereis est semblable à la commande which.

La commande find :

Syntaxe : find <répertoire> <conditions> Arguments : le répertoire du début de recherche et les conditions sur des attributs du fichier.

Exemple : find /home/philippe -name \*.txt -size +100k recherchera dans le sous le répertoire de l’utilisateur Philippe tous les fichiers qui finissent par ".txt" et qui pèsent de plus de 100 kilo-octets.

Le signe | appelé pipe (ou tube) permet de relier avantageusement les commandes. L’introduction du pipe (tube) permet de combiner plusieurs commandes parmi lesquelles la commande grep.

On peut ainsi combiner la commande find avec la commande grep afin de retrouver une chaîne de caractère dans un fichier.

Exemple : find . -name LISEZMOI | xargs grep -n LINUX recherchera à partir du répertoire courant (noté .) les fichiers de noms LISEZMOI et affichera les lignes numérotées (option -n) contenant la chaîne de caractères Linux.



3.2.8. Trouver du texte dans un fichier (grep)

Syntaxe : grep [options] <chaîne de caractères> <nom de fichier>

Exemple : grep -i -n pacifique *.txt affichera toutes les lignes numérotées (option -n) contenant le mot pacifique sans prendre en compte les majuscules (option -i) dans les fichiers finissant par .txt



3.2.9. Les liens (ln)

La création de liens symboliques (opposition aux liens physiques) évite la copie de fichiers identiques dans différents répertoires. Par exemple, si une application a besoin d’un fichier volumineux contenant des données relatives à un groupe d’utilisateurs, il est possible de l’avoir virtuellement dans les répertoires courant en créant un lien symbolique : ln -s <source> <destination>

Il n’est pas nécessaire que la source existe pour cette création au même titre que sa destruction n’altérera pas le lien mais son appel génèrera un erreur de type fichier introuvable.



3.2.10. Connaître l’espace disque restant (df, du)

Pour contrôler l’espace occupé et l’espace d’un disque dur (en fait d’une partition), il existe deux commandes très utiles.

La commande df renseigne sur l’espace disque total, disponible (disk free). Elle s’utilise sur tous répertoires "montés".

Cette commande s’utilise généralement avec en argument le nom d’un fichier pour vérifier le point de montage de son répertoire.

Exemple : df ~/essai nous indiquera la partition sur laquelle est sauvegardé le répertoire essai (le ~ représente /home/).

La commande du calcule l’espace occupé (disk usage) pour un répertoire (sous entendu le répertoire et ses sous-repértoires).

L’option -k permet un affichage en kilo-octets.

Exemple : du -k -s essai affichera la liste des sous-répertoires du répertoire essai récursivement sans indiquer tous les fichiers et leur taille (option -s).



3.2.11. Redirections

On notera pour l’occasion, la possibilité de redirection très utile sous linux. Cette technique permet de rediriger la sortie d’une commande ou d’un programme ailleurs que vers l’écran, c’est à dire dans un fichier ou vers un autre programme. Ainsi, nous pouvons envoyer un fichier dans l’entrée d’une commande, mettre l’affichage d’une commande dans un fichier et même envoyer l’affichage d’une commande dans l’entrée d’une autre. Enfin, dans notre cas, nous pouvons envoyer un fichier dans un autre.

Avec le symbole > (signe supérieur), nous pouvons rediriger la sortie d’un programme vers un fichier.

Exemple : cal > fevrier Ici, nous envoyons l’affichage de la commande cal - le calendrier pour le mois en cours - dans le fichier nommé fevrier.

Exemple : cat > essai1.txt permet de passer dans ’l’editeur’ cat que (l’on quitte avec ctrl+d )

Avec le symbole < (signe inférieur), nous redirigerons le contenu d’un fichier vers l’entrée d’une commande.

Exemple : mail marc < courrier envoie par courrier électronique à marc le fichier nommé courrier.

>> (supérieur supérieur) : ajoute à la fin Ce symbole permet d’ajouter l’affichage d’une commande à la fin d’un fichier, sans pour autant écraser ce qu’il y avait déjà dans le fichier. Avec un seul supérieur, le contenu du fichier serait remplacé par la sortie de la commande et donc ce contenu aurait été perdu.

Exemple : cat fichier1 fichier2 fichier3 >> fichier_complet

Nous ajoutons à la fin (concaténons) du fichier fichier_complet le contenu des fichiers fichier1, fichier2 et fichier3.

Rappel : | (symbole barre), réalise un tube entre deux commandes.

Ce symbole permet de faire en sorte que l’affichage d’une commande soit dirigé dans l’entrée d’une autre commande.



3.2.12. Modification des droits d’accès

La commande chmod permet de changer les droits d’accès d’un fichier.

Vous ne pouvez modifier les droits d’un fichier que si vous en êtes le propriétaire. Il existe une exception : l’administrateur système root peut modifier les droits d’accès de tous les fichiers.

Syntaxe : chmod <modification des droits d'accès> <nom du fichier>

La partie est elle-même composée de 3 parties :

  • les droits d’accès à modifier : u (user) pour le propriétaire, g (group) pour le groupe, o (others) pour les autres et a (all) pour tout le monde ;
  • les types de modification à effectuer : - pour rajouter de nouveaux droits et + pour supprimer des droits d’accès déjà mis en place ;
  • la modification individuelle des droits : r,w ou x

Exemples :

  $ chmod a+r lisezmoi.txt Autorise à tout le monde la lecture de lisezmoi.txt
  $ chmod ug+rw,o+r lisezmoi.txt Le propriétaire et les membres de son groupe peuvent lire et modifier le fichier lisezmoi.txt alors que les autres personnes ne peuvent que le lire.
  $ chmod a+x mon-script Permet de spécifier que le fichier mon-script peut être exécuté

La commande chown permet de changer le propriétaire d’un fichier. Syntaxe : chown utilisateur fichier

La commande chgrp permet de changer le groupe d’un fichier (il faut que le propriétaire appartienne au groupe). Syntaxe : chgrp groupe fichier