0% ont trouvé ce document utile (0 vote)
72 vues28 pages

Administration Linux

Transféré par

fmadra28
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
72 vues28 pages

Administration Linux

Transféré par

fmadra28
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd

Administration Linux

1. Gestion des utilisateurs et groupes

1.1 Les utilisateurs


Unix est un système multi-utilisateurs. Plusieurs personnes peuvent l'utiliser de façon simultanée (dans le cas de
configurations en réseau).
Pour le système, un utilisateur n'est pas obligatoirement une personne physique. Un utilisateur peut détenir des fichiers,
exécuter des programmes ou encore déclencher automatiquement des fonctions systèmes.
Par exemple, un utilisateur peut être créé dans le seul but de détenir des fichiers publics. On parle alors de pseudo
utilisateur.
Un utilisateur possède un nom d'utilisateur appelé aussi login lui permettant d'établir une connexion. Ce login est
associé à un mot de passe personnel. Pour accéder aux ressources du système, l'utilisateur doit entrer la bonne paire
login/mot de passe : c'est l'authentification(le login).
Les utilisateurs sont identifiés par le système grâce à un UID (identifiant d'utilisateur) unique. Cet identifiant est une
valeur numérique.

1.1.1 Le fichier /etc/passwd


Le fichier /etc/passwd contient les informations relatives à tous les utilisateurs du système. On y touve leur :
• login
• mot de passe (chiffré)
• UID
• GID principal
• nom complet et autres informations
• répertoire principal
• leur shell
La syntaxe de "/etc/passwd" est très simple, chaque ligne concerne un utilisateur. les différents champs sont séparés par
des ":" :
login:mot-de-passe:UID:GID:info-utilisateur:répertoire-principal:shell

Détaillons les champs :


• Login : c'est l'identifiant que doit entrer l'utlisateur pour s'authentifier. La convention veut qu'un utilisateur
John Smith possède jsmith ou smith_j comme login.
• Mot de passe : il est évident que le mot de passe n'apparait pas en clair dans le fichier, il est chiffré en md5.
C'est la commande passwd qui s'occupe de chiffrer le mot de passe. Ce champ peut prendre plusieurs
siginifications :
• "*" : il est impossible de s'authentifier sur le système avec ce compte
• "!!" : Le compte est désactivé
• "x" ou "!" : le mot de passe est dans un fichier shadow (voir ci-après)
• champ vide : Il n'y a pas de mot de passe pour ce compte.
• UID : il s'agit de l'identifiant unique de l'utilisateur.
• L'utilisateur root possède l'UID 0
• Par convention, les UID inférieurs à 100 sont réservés aux comptes système.
• GID : l'identifiant du groupe principal de l'utilisateur
• Info utilisateur : des informations sur l'utilisateur. chaque information est séparée par une virgule (le nom
complet, numéro de poste ...).
• répertoire personnel : Il s'agit du répertoire dans lequel sont stockés les fichiers appartenant à l'utilisateur. En
général de la forme /home/login.
• shell : c'est l'interpréteur de commandes qui sera lancé après l'authentification.

1.1.2 Le fichier /etc/shadow


Le fichier /etc/passwd est accessible à tout le monde. en effet, certaines commandes ont besoin de connaitre la liste des
utlisateurs ou la correspondance login/UID.
La présence du mot de passe dans /etc/passwd, même crypté, pose un problème de sécurité. La solution à ce problème
est de stocker les mots de passe dans un fichier différent : /etc/shadow. Pour garantir la sécurité, seul l'administrateur
peut le lire.

sous Linux, si le fichier /etc/shadow n'est pas utilisé, l'utilitaire pwconv permet, à partir d'un fichier
Note:
/etc/passwd unique, de créer le fichier /etc/shadow qui lui correspond.

1.2 Les Groupes


Le fichier /etc/group contient les information relatives au groupes présents sur le système.
Voici sa syntaxe :
groupe:*:GID:utilisateurs

• groupe : le nom du groupe


• * : la présence de ce champ est lié aux anciennes versions d'Unix et n'est plus utilisé. Il peut rester vide ou
contenir le caractère "*" ou "x".
• GID : c'est l'identifiant unique du groupe sous la forme d'une valeur numérique.
• utilisateur : il s'agit de la liste des utilisateurs appartenant au groupe. Ils sont séparés par des virgules :
compta:x:230:pierre,romain,jerome

1.3 Les commandes de gestion des utilsateurs


Afin de manipuler les fichiers passwd, shadow et group facilement, des commandes ont été crées. Elles automatisent les
vérifications (l'utilisateur à créer existe-t-il déja ? le mot de passe est-il assez compliqué ?...) évitant ainsi toute erreur de
saisie.

1.3.1 Ajouter un utilisateur


La commande useradd permet de créer un utilisateur :
useradd [options] login

Principales options de useradd


Option Explication

-c commentaire Informations concernant l'utilisateur (nom, poste)

-d répertoire Chemin du répertoire personnel de l'utilisateur

-e date Date d'expiration du compte. Le format est AAAA-MM-JJ

C'est le nombre de jours suivant l'expiration du mot de passe après lequel le compte est
-f nombre de jours désactivé. La valeur 0 permet de désactiver le compte dès que le mot de passe expire. La valeur
-1 permet de désactiver cette caractéristique. La valeur par défaut est -1

-g groupe principal Le nom du groupe ou le numéro du groupe de connexion initial de l'utilisateur. Le nom ou le
numéro du groupe doivent exister. Le numéro de groupe par défaut est 1

-G groupes
Les autres groupes auxquels appartient l'utilisateur (séparés par des virgules)
supplémentaire

-m Le répertoire de l'utilisateur sera créé (par défaut, cela n'est pas fait)

A utiliser si et seulement si l'option -m est présente. Permet de copier les fichiers et répertoires
-k [ répertoire ] contenus dans le répertoire répertoire (/etc/skel si non spécifié) dans le répertoire de
l'utilisateur

Vous pouvez saisir le mot de passe en option. Il doit être chiffré (pour récupérer la version
-p le mot de passe
cryptée d'un mot de passe il faut utliser la bibliothèque crypt). Le comportement par défaut est
chiffré
de désactiver le compte

-s chemin vers un
Shell lancé à la connexion de l'utilisateur
exécutable

-u uid L'identifiant unique de l'utilisateur

Exemple : nous voulons créer l'utlisateur lambda :


• commentaire : "utilisateur lambda"
• son shell : /bin/zsh
• son répertoire personnel : /home/lambda
• nous recopions le contenu de /etc/skel dans son répertoire
• il appartient aux groupes "dev" et "final"
• le compte sera désactivé immédiatement après expiration du mot de passe
root@localhost # useradd -c "utilisateur lambda" -f 0 -G final,dev -m -k
/etc/skel -s /bin/zsh lambda

La commande useradd -D montre les options par défaut :


GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=
SKEL=/etc/skel

Il est possible de changer les valeurs par défaut grace aux options suivantes :

Options de useradd -D
Option Explication

-h répertoire Répertoire dans lequel créer les répertoires utilisateurs

-e date La date d'expiration du compte

-f nombre de jours Délai de désactivation après expiration du mot de passe

-g GID Le groupe par défaut

-s chemin vers un exécutable Le shell par défaut


1.3.2 Suppression d'un utilisateur
La commande userdel permet de supprimer un utilisateur :
root@localhost # userdel options login

L'option -r efface le répertoire personnel de l'utilisateur.

1.3.3 Changer le mot de passe d'un utilisateur


La commande passwd permet de changer le mot de passe d'un utilisateur. L'administrateur peut changer n'importe quel
mot de passe. Un utilisateur normal ne peut changer que son propre mot de passe.
passwd [ options ] [ login ]

Si l'argument login n'est pas spécifié, le changement de mot de passe s'applique sur l'utilisateur courrant.

Options passwd
Option Explication

-k Indique que seul le mot de passe doit être mis à jour sans toucher aux propriétés d'expiration

Permet de verrouiller le compte spécifié en préfixant le mot de passe crypté par le caractère "!". Seul
-l
l'utilisateur root peut utiliser cette option

--stdin Le mot de passe doit être lu à partir de l'entrée standard qui peut alors être un tube (pipe)

-u Déverrouille le mot de passe du compte. Seul l'utilisateur root peut utiliser cette option

Supprime le mot de passe d'un compte. Le champ réservé au mot de passe crypté sera supprimé dans le
-d
fichier de configuration. Seul l'utilisateur root peut utiliser cette option

Affiche des informations sur le statut du mot de passe pour un compte donné. Seul l'utilisateur root peut
-S
utiliser cette option

1.3.4 Afficher des informations sur un utilisateur


Pour connaître l'identité de l'utilisateur courant (bien que cela soit affiché dans la majorité des prompts par défaut) on
utilise la commande whoami.
Elle affiche le login de l'utilisateur courant. Les commandes who, users et w permettent de connaître les utilisateurs
actuellement connectés sur la machine.

1.4 Les commandes de gestion des groupes

1.4.1 Créer un groupe


La commande groupadd permet de créer un nouveau groupe :
root@localhost # groupadd option groupe

Options de groupadd
Option Explication

-g Permet de choisir la valeur numérique du GID du nouveau groupe. Cet identifiant doit être unique
-r Cette option permet d'ajouter un groupe système (dont le GID est inférieur à 500)

-f Permet de stopper la commande lorsque le groupe ou le GID du nouveau groupe existe déjà

1.4.2 Suppression d'un groupe


Pour supprimer un groupe, on utilise la commande groupdel :
groupdel GID

Note: on ne peut pas supprimer un groupe si c'est le groupe principal d'un utilisateur.

1.4.3 Modifier les groupes secondaires d'un compte


Pour modifier les groupes secondaire d'un utilisateur, on utilise la commande usermod qui est similaire à useradd et
supporte les mêmes options :
root@localhost # usermod -G toto,users,fileshare,dev toto

Ceci permet d'ajouter l'utilisateur "toto" dans les groupes "toto", "users", "fileshare" et "dev".
Attention : lors de l'utilisation de la commande usermod -G il est nécessaire de rappeler l'ensemble de groupes
secondaires auxquels appartient l'utilisateur.
On peut aussi ajouter et enlever des utilisateurs d'un groupe grâce à la commande gpasswd

Options de gpasswd
Option Explication

-a Ajout d'un utilisateur

-d Suppression d'un utilisateur

1.4.4 Afficher des informations sur les groupes


Pour connaître les groupes auxquels appartient un utilisateur, on utilise la commande groups. Sans argument, elle
affiche les groupes de l'utilisateur courant. Pour connaître less groupes d'un utilisateur particulier, il suffit de passer son
login en argument de la commande :
root@localhost # groups
root wheel disk adm sys daemon bin
luser@localhost $ groups toto
toto users fileshare

Sur de très anciens SystemV, il n'était pas possible d'activer plusieurs groupes simultanément pour le même utilisateur.
La commande id permet de connaître les groupes actifs :
root@localhost # id
uid=0(root) gid=0(root) groupes=0(root),
10(wheel),6(disk),4(adm),3(sys),2(daemon),1(bin)

Pour changer le groupe actif sur un tel système, on utilise la commande newgrp. Lorsqu'elle est utilisée sans argument,
elle active le groupe principal de l'utilisateur (le groupp e qui figure dans "/etc/passwd").
1.5 Changer d'identité
Il se peut qu'un utilisateur soit obligé d'effectuer des tâches avec une identité différente. La situation la plus courante
étant un utilisateur normal voulant effectuer quelques tâches en tant qu'administrateur.
La commande su (switch user), permet de changer d'identité:

Commande Explication

su Sans option, su permet de se connecter en tant qu'administrateur

su lambda Agir en tant qu'utilisateur lambda

Se connecter en tant que lambda. Avec "-" on récupère tout l'environnement de l'utilisateur
su - lambda
lambda

su -c "mount l'option -c permet simplement d'exécuter la commande entre guillemet en tant que root
/dev/cdrom /mnt/cdrom" (pas d'option). Une fois la commande terminée, on reprend son identit

1. Les permissions
Comme vu précedement, la commande ls -l nous donne beaucoup d'informations sur un fichier.
root@localhost # ls -l
-r-xr-xr-x 1 root wheel 32464 27 May 09:35 /bin/ls

Nous allons nous interesser aux parties : droits et propriétaire du fichier.

1.1 Propriétaire
Un fichier appartient à un utilisateur et un à un groupe. Généralement le groupe dans lequel est l'utilisateur. Dans
l'exemple ci-dessus, root est l'utilisateur propriétaire et wheel le groupe propriétaire.

1.1.1 Changer l'utilisateur propriétaire


Nous allons pouvoir changer l'utilisateur propriétaire grâce à la commande : chown
La commande chown n'est utilisable que par root.

Note: les options entre crochets [ ] sont des options facultatives

Syntaxe :
chown [-R] user[:group] fichier

L'option -R est utilisée pour changer le propriétaire de façon recursive pour les dossiers.
Exemple :
root@localhost # ls -l fichier
-rw-r--r-- 1 andrew kernel 0 7 Sep 10:52 fichier
root@localhost # chown linus
-rw-r--r-- 1 linus kenrel 0 7 Sep 10:52 fichier
root@localhost # chown richard:gpl
-rw-r--r-- 1 richard gpl 0 7 Sep 10:52 fichier

1.1.2 changer le groupe propiétaire


La commande chown n'étant utilisable que par root, les utilisateurs disposent de la commande chgrp pour changer le
groupe propriétaire. L'utilisateur doit appartenir au nouveau groupe.
Syntaxe :
chgrp [-R] group fichier

Exemple :
richard@localhost # ls -l fichier
-rw-r--r-- 1 richard gpl 0 7 Sep 10:52 fichier
richard@localhost # chgrp gnu fichier
-rw-r--r-- 1 richard gnu 0 7 Sep 10:52 fichier

1.2 Les droits


Sous linux il y a trois actions que l'on va autoriser ou non :
• lire : Read
• ecrire : Write
• exécuter : eXecute
Ces trois actions vont être définies pour trois types de personnes :
• l'utilisateur propriétaire : User
• le groupe propriétaire : Group
• les autres : Others

1.2.1 Les fichiers


Read : lire le contenu du fichier
Write : modifier le contenu du fichier
eXecute : exécuter le fichier

1.2.2 Les dossiers


Read : lister le contenu du dossier
Write : modifier le contenu (supprimer un fichier, renommer un fichier)
eXecute : exécuter des commandes à l'interieur du dossier.

1.2.3 Modifier les droits


Nous allons pouvoir modifier les droits avec la commande chmod. Cette commande peut etre utilisée de deux façons
différentes : avec des lettres ou avec des chiffres.
Syntaxe :
chmod [–R] droits fichier

[Link] Mode lettré


Dans ce mode, nous allons utiliser des lettres et des opérateurs pour ajouter ou supprimer des droits.

lettre signification lettre signification

u utilisateur r read

g groupe w write

o others x execute

a tous
Les opérateurs disponibles sont :

+ ajoute un droit

- supprime un droit

= ajoute un droit et supprime les autres

Exemple :
root@localhost # ls -l fichier
-rw-r--r-- 1 root wheel 0 7 Sep 10:52 fichier
root@localhost # chmod u+x fichier
-rwxr--r-- 1 root wheel 0 7 Sep 10:52 fichier
root@localhost # chmod g+wx,o-r fichier
-rwxrwx--- 1 root wheel 0 7 Sep 10:52 fichier
root@lab# chmod a=r fichier
-r--r--r-- 1 root wheel 0 7 Sep 10:52 fichier

[Link] Mode chiffré


Dans ce mode, nous allons transformer les droits en valeurs octales :

chiffre signification

4 read

2 write

1 execute

En additionant ces chiffres, on arrive à un nombre à trois chiffres. Les centaines pour l'utilisateur, les dizaines pour le
groupe et les unités pour les autres.
Exemple :
Nous allons donner les droits de lecture, écriture et exécution à l'utilisateur. Les droits de lecture et exécution au groupe
et aux autres.
4+2+1 = 7
4+1 = 5

root@localhost # ls -l fichier
-rw-r--r-- 1 root wheel 0 7 Sep 10:52 fichier
root@localhost # chmod 755 fichier
-rwxr-xr-x 1 root wheel 0 7 Sep 10:52 fichier

1.3 Umask
Par défaut, tous les fichiers créés ont comme droit 666 et les dossiers 777. L'umask est un masque qui va réduire ces
droits. Lors de la création d'un fichier, le système va soustraitre l'umask aux droits par défaut. Par l'umask est à 0022.
On a donc 666 - 022 = 644.
Vérifions en créant un fichier.
root@localhost # touch document
root@localhost # ls -l document
-rw-r--r-- 1 root wheel 0 7 Sep 11:02 document

On peut définir le umask grâce à la commande umask.


root@localhost # umask 077

1.4 Les droits spéciaux


Il existe trois droits spéciaux : suid, sgid et sticky bit. Il sont ajoutés grâce à la commande chmod.

droit lettre chiffre

suid s 4

sgid s 2

sticky t 1

1.4.1 SUID
Lorsque vous exécutez une commande, celle-ci se lance avec votre uid. Cette commande aura donc accès seulement aux
fichiers où vous possedez des droits.
Si le suid est placé sur un exécutable, ce dernier se lancera avec l'uid de son propriétaire.

1.4.2 SGID
Le droit sgid fonctionne de la même façon que le suid en ce qui concerne les exécutables.
Mais le sgid peut aussi être attribué à un dossier. Tout fichier créé dans un dossier portant le sgid aura comme groupe
propriétaire le groupe du dossier.

1.4.3 Sticky
Si vous possedez le droit d'écriture sur un dossier, vous pouvez renommer ou supprimer tous les fichiers qu'il contient.
Ce fonctionnement n'est pas adéquat pour un dossier public, où tout le monde à accès en écriture comme "/tmp". Si le
sticky bit est placé sur un dossier, seul le possesseur d'un fichier pourra le renommer ou le supprimer.

LE SHELL

1. Les terminaux

Les systèmes Unix/Linux furent à l'origine conçus pour fonctionner en mode texte, sans interface graphique.
Bien qu'aujourd'hui de nombreuses interfaces graphiques permettant de configurer le système ont été développées, il
demeure totalement administrable en ligne de commande (CLI - Command Line Interface), cette méthode restant la plus
simple et la plus puissante.
Cette ligne de commande est accessible via les terminaux qui jouent le rôle d'interface utilisateur/machine et
fonctionnent avec un interpréteur de commandes : le shell.
Il est possible de se connecter sur plusieurs terminaux via la combinaison des touches Alt+Fn où Fn est une touche de
fonction (Ex : F1,F2...).
Note : Depuis un environnement graphique, il est possible de revenir sur un terminal via la combinaison des touches
Ctrl+Alt+Fn. Pour revenir au mode graphique, il faut en général utiliser la combinaison Alt+F7.

2. Le shell
Le rôle du Shell est d'assurer la correspondance entre ce que l'utilisateur tape et le système. Il en existe de nombreuses
versions. Le plus connus d'entre eux, bash est celui que nous utiliserons pendant ce cours.
Chacun des shells existant dispose de ses propres avantages et points faible. L'intérêt d'avoir un shell plutôt qu'un autre
dépend des fonctionnalités offertes par celui-ci, et donc de l'utilisation que l'on souhaite en avoir.
Le tableau suivant vous présente les principaux shells ainsi que leurs caractéristiques.
Nom Description

bash (Bourne Again Shell) offre l'édition de la ligne de commande et le rappel des commandes précédentes

(C Shell) développé à Berkeley, compatible avec le shell Bourne. Pas d'édition de la ligne de commande ni
csh
d'historique des commandes

ksh (Korn Shell) offre l'édition de la ligne de commande (touches compatibles Emacs)

sh le shell original, pas d'édition de la ligne de commande.

version améliorée du csh, avec un support de l'édition de la ligne de commande avec correction des commandes
tcsh
tapées

shell similaire au Korn shell, avec plus de dynamisme lors des affichages et gère la non redondance des
zsh
commandes.

Un système Unix / Linux fonctionne à l'aide d'une multitude de programmes qui assurent, en général, chacun une
fonction bien distincte et sont capables de communiquer au sein du shell.
Afin de pouvoir accéder au terminal, vous devez au préalable vous identifier grâce à un couple login/mot de passe. En
fonction de cela, vous aurez accès à plus ou moins de programmes sur le système.
On distingue principalement 2 types de comptes utilisables sur le système :
• Le compte utilisateur classique
• Le compte root (Administrateur)
Un symbole de l'invite de commande vous permet de determiner le type de compte que vous utilisez.
• Accés simple utilisateur :
user@localhost $

• Accés root :
root@localhost #

3. Utilisation de l'aide

3.1 Les pages de manuel ou man pages


Sur un système Unix / Linux, la plupart des logiciels sont installés avec un manuel accessible par la commande man.
La syntaxe est la suivante :
man fonction_ou_commande

La commande : man man donne des informations sur l'utilisation du manuel en général.
La commande man peut également être utilisée pour rechercher un terme dans l'ensemble des pages de manuel, grâce à
l'option -K
user@localhost $ man -K "disk space"

Celle-ci me retourne :
/usr/share/man/man1p/[Link]? [ynq]

Correspondant à une occurrence de "disk space" dans la liste des manuels disponibles sur le système.
Afin de se déplacer dans les résultats, les commandes suivantes sont disponibles :
Commande Description

y Afficher le manuel du résultat

n L'occurrence continue d'être recherchée dans la liste des manuels

q Retour au shell

Il peut arriver que plusieurs manuels soient disponibles pour une même commande. Il suffit alors de préciser en
paramètre de la commande man la section à rechercher.
Il suffit alors de saisir man 2 ex_prog ou man 7 ex_prog pour avoir l'aide souhaitée.
Afin de naviguer dans le manuel, il convient d'utiliser les touches haut et bas mais aussi les commandes suivantes :

Commande Description

Espace Avance dans le manuel d'une page entière

Entrée Avance dans le manuel d'une ligne

b Recule dans le manuel d'une page

/mot Recherche mot dans le manuel. Ce peut être un nom ou une expression régulière

q Quitte le manuel

3.2 Aide simplifiée


Nous venons de voir qu'il était possible de connaître la définition d'une commande par le manuel de celle-ci, mais il est
aussi possible d'en avoir un résumé via l'option -help.
user@localhost $ df --help
Usage: df [OPTION]... [FILE]...
Show information about the filesystem on which each FILE resides,
or all filesystems by default.
Mandatory arguments to long options are mandatory for short options too.
-a, --all include filesystems having 0 blocks
-B, --block-size=SIZE use SIZE-byte blocks
-h, --human-readable print sizes in human readable format (e.g., 1K 234M 2G)
-H, --si likewise, but use powers of 1000 not 1024
-i, --inodes list inode information instead of block usage
-k like --block-size=1K

Celle-ci permet donc de voir rapidement ou encore de vérifier l'existence d'une option.

COMMANDES DE BASE DU SHELL

Chapitre 3 - Commandes de base


Suite de commandes utiles à l’utilisation de votre machine sous Linux
Opérations sur les fichiers et répertoires
Nous allons lister ici, une suite de commandes utiles à l’utilisation de votre machine sous Linux :
But de la commande Linux Equivalence MsDos

Se déplace vers le répertoire rep cd rep cd rep

Liste le contenu d’un répertoire (-R pour un listage récursif) ls rep dir

Copie un fichier source vers un fichier destination (-R pour un


cp source destination copy
répertoire)

Déplace un fichier source vers une destination (peux servir à


mv source destination move
renommer un fichier

Crée un répertoire mkdir rep mkdir rep

Efface un fichier (-rf pour effacer un répertoire) rm fichier del / deltree fichier

Crée un lien destination qui va pointer sur une source (-s pour un lien
ln source destination non disponible
symbolique)

Met à jour la date de modification du fichier, ou crée un fichier vide si touch fichier ou
non disponible
le fichier n’existe pas. repertoire

Lecture de fichier

cat fichier Affiche le contenu du fichier sur la sortie standard

more fichier Lit le contenu d’un fichier page par page. (Il doit lire l’intégralité du fichier avant de l’afficher)

Equivalent à more sauf qu’il n’est pas obligé de lire l’intégralité du fichier et permet de remonter
less fichier
dans l'affichage

N’affiche que les dernières lignes d’un fichier (-n permet de spécifier le nombre de lignes à
tail fichier
afficher)

head fichier Comme tail, mais affiche les N premières lignes d’un fichier (N=10 par défaut)

grep "chaine" fichier Recherche l’occurence d’une chaine de caractères "chaine" dans un ou plusieurs fichiers

Noms, attributs des fichiers et globbing

3.1 Noms des fichiers


Les noms de fichiers sont "case sensitives", c’est à dire qu’ils tiennent compte des majuscules et des minuscules. Le
nom d’un fichier peut contenir jusqu’à 255 caractères.
Pour accéder à un fichier comportant des caractères spéciaux dans son nom, on doit placer le nom du fichier entre
guillemets (ou utiliser des backslash avant les caractères spéciaux) :
luser@localhost $ vi "ceci est un [Link]"
luser@localhost $ vi ceci\ est\ un\ [Link]
3.2 Attributs des fichiers
Pour lister le contenu d’un répertoire, nous utiliserons la commande ls
Afin de disposer de plus d'informations, nous ajouterons l’option -l
luser@localhost $ cd /tmp
luser@localhost $ mkdir un_repertoire
luser@localhost $ touch un_fichier
luser@localhost $ ln -s un_fichier un_lien
luser@localhost $ ls
un_fichier un_lien un_repertoire
luser@localhost $ ls -l
total 4
-rw-r--r-- 1 ualc galc 10 Dec 3 00:42 un_fichier
lrwxrwxrwx 1 ualc galc 10 Dec 3 00:43 un_lien -> un_fichier
drwxr-xr-x 2 ualc galc 4096 Dec 3 00:42 un_repertoire

Notons que les fichiers ou répertoires débutant par un "." sont cachés, c'est-à-dire qu’ils ne seront pas visible avec la
commande ls. Si nous souhaitons voir les fichiers cachés, on passe en argument -a à ls :
luser@localhost $ ls
toto profile tools
luser@localhost $ ls -a
. .profile
.. .rhosts
.cshrc .shrc
.login tools
.login_conf profile
.mail_aliases toto
.mailrc test.c

Le type du fichier est reconnaissable par la présence d'un symbole à l'extrême gauche du listing :
- Fichier ordinaire

d Répertoire

l Lien symbolique

4. Le globbing
Le globbing est l’utilisation de caractères spéciaux tels que "*", "?".
• *: correspond à aucun ou plusieurs caractères
• ? : correspond à un caractère
• [a-z] : correspond à un ensemble de caractères
• [^a-z] : correspond à tous les caractères sauf ceux de cet ensemble
Voici la liste des fichiers utilisés pour l'exemple :
luser@localhost $ ls
[Link] [Link] t0st.c [Link] test.c

On affiche tous les fichiers finissant par ".htm"


luser@localhost $ ls *.htm
[Link] [Link] [Link]

On affiche tous les fichiers sauf les fichiers finissant par la chaîne "htm".
luser@localhost $ ls *[^htm]
t0st.c test.c

Exemple avec "?" qui signifie un caractère non vide :


luser@localhost $ ls t?st.c
t0st.c test.c

On affiche tous les fichiers comportant "st" dans le nom :


luser@localhost $ ls *st*
t0st.c test.c

5. L'editeur VIm
Nous avons choisis de vous présenter cet éditeur de texte car c'est le plus utilisé sur la plupart des systèmes UNIX. VIm
est une version améliorée de l'éditeur VI, possédant plus de commandes et d'options. VI est toujours le plus distribué sur
les systèmes Unix, mais une maitrise de VIm vous permettra de vous débrouiller avec l'éditeur VI.
Le logiciel "vimtutor" permet d'apprendre les principales commandes très simplement, en vous les présentants pas à
pas.

5.1 Appel de l’éditeur


Editer un fichier s’il existe, sinon, éditer un nouveau fichier vide :
vi fichier

Editer chacun des fichiers :


vi fichier_1 fichier_2

5.2 Modes d’édition


Contrairement aux éditeurs wysiwyg (what you see is what you get) VIm fonctionne par mode.
2 modes bien distincts existent :
Le mode insertion :
Les caractères tapés s'insèrent directement dans le texte en cours
Le mode commande
Les caractères tapés sont considérés comme des commandes d'édition de texte
Le logiciel démarre par defaut en mode commande.
i permet de passer en mode insertion
: permet de passer en mode commande
ESC permet de sortir des différents modes.
Le tableau ci-dessous présente les commandes principales à utiliser en mode commande.
Commande Description

:w Sauvegarde les changements

:q Quitte le document en cours

:q! Quitte le document en cours sans sauvegarder les changements

:wq Enregistre et quitte l'editeur

:f file2 Enregistre sous un autre nom le document (équivalent de enregistrer sous)

/hop Recherche l'occurence hop et la met en surbrillance, "n" se positionne sur la prochaine occurence

v Permet de passer en mode visualisation pour faire une sélection par exemple

d Equivalent de couper, aprés une sélection par exemple

dd Coupe la ligne entière

y Equivalent de copier, après une sélection par exemple

yy Copie la ligne entière

p Coller après le curseur

5.3 Mode Edition


Après l'utilisation de ces commandes, l'éditeur passe en mode édition :

Commande Description

a Ajoute après le curseur

A Ajoute après la ligne courante

i Insère avant le curseur

I Insère au debut de la ligne courante avant le premier caractère non-blanc

o Ouvre une nouvelle ligne en-dessous de la ligne actuelle

O Ouvre une nouvelle ligne au-dessus de la ligne actuelle

6. tar, gzip, bzip2

6.1 tar
tar [options] [fichiers]
La commande tar est une ancienne commande Unix qui permet aisément d’archiver, c’est-à-dire de réaliser la
sauvegarde d’un ensemble de fichiers en un seul fichier. Ce fichier peut être compressé après, mais tar ne compresse
pas les fichiers qu'il archive.
La plupart des archives se trouvent sous ce format.
fichiers désigne un ensemble de fichiers ou toute une arborescence précédée d’un chemin absolu (à partir de /) ou
relatif.
Si c’est un chemin absolu qui est indiqué, il sera conservé dans l’archive et permettra ensuite d'être récupéré par la suite.
options

Commande Description

-x Extraire le contenu d’une archive

-c Créer une nouvelle archive

-t Afficher seulement la liste du contenu de l’archive, sans l’extraire

-f fichier Indiquer le nom du fichier archive

-v Mode verbeux, affiche le détails des opérations

-z Compresser ou décompresser en faisant appel à l’utilitaire gzip

-j Compresser ou décompresser avec l’utilitaire bzip2

-p Préserver les permissions des fichiers

Exemples :
Création d'archives
1 - Effectuer la sauvegarde de tous les fichiers du répertoire /home/toto dans le fichier [Link] placé dans le
répertoire courant :
luser@localhost $ tar -cvf [Link] /home/toto

2 - Effectue, en plus de l’archivage, une compression des fichiers :


luser@localhost $ tar -cvzf [Link] /home/toto

Listing
luser@localhost $ tar -tvf [Link]

Extraction
1 – Extrait tout le contenu de l'archive dans le répertoire courant :
luser@localhost $ tar -xvf [Link]

2 - Décompresse et extrait :
luser@localhost $ tar -xvfz [Link]

3 – Extrait de l’archive le répertoire passé en argument :


luser@localhost $ tar -xvfz [Link] home/toto/tmp
6.2 gzip
Elle est utilisée pour compresser un fichier quelconque, et en particulier une archive tar. L'extraction se fait par la
commande gunzip, ou de manière totalement équivalente par gzip -d.
gzip [options] [fichiers]

Elle peut décompresser les fichiers .gz, mais aussi les fichiers .z , .Z
options :

-1 à -9 Fixe le niveau de compression -1 etant le plus faible

-d Décompresse l'archive passée en argument

-c Ecrit sur la sortie standard au lieu de remplacer le fichier d’origine

-l Affiche des infos sur les fichiers de l'archive (taux de compression...)

-r Gzip parcoure tous les répertoires de manière récursive lors de la dé/compression

Exemples :
1 - Compresse [Link] et le remplace par le fichier [Link] d’une taille beaucoup plus réduite :
luser@localhost$ gzip [Link] /home/toto

2 - Compresse au maximum chaque fichier .txt séparément, et les renomme en ajoutant le suffixe .gz :
luser@localhost $ gzip -9 *.txt

6.3 bzip2
Bzip2 admet la même syntaxe que gzip, mais effectue une compression plus efficace au détriment d'un besoin accru de
mémoire et cpu.

7. Recherches de fichiers

7.1 find
find [chemin] [options] [expression]

Trouve tous les fichiers sur un du répertoire chemin qui correspondent à une expression. find recherche dans les sous
répertoires.
Exemple : pour rechercher tous les fichiers mp3 contenus dans les répertoires personnels des utilisateurs :
luser@localhost $ find /home/ -name "*.mp3"

Option Description

-atime +n (-n) Trouve les fichiers auxquels on a accédé il y a plus de n jours (ou moins de n jours)

-mtime +n (-n) Trouve les fichiers modifiés il y a plus de n jours (ou moins de n jours)

-name "toto*" Trouve les fichiers dont le nom commence par toto

-maxdepth n Définit le niveau maximum de sous-répertoire à explorer


Indique le type de fichier à rechercher :

-type • l pour les liens symboliques


• d pour les répertoires
• f pour les fichiers

Exemple : nous voulons rechercher tous les répertoires du répertoire courant contenant "rep" dans leur nom, en ne
descendant pas dans les sous-répertoires
luser@localhost $ find . -type d -maxdepth 0 "*rep*"

On peut utiliser find pour exécuter une commande sur certains fichiers :
find [chemin] [option] -exec cmd {} \;

• Les fichiers trouvés sont passés à cmd comme des paramètres.


• {} sera remplacé par le nom du fichier.
• Le point virgule execute la commande sans demander d'arguments supplémentaires, normalement le cas avec
un "\;".
Exemple :
Pour effacer tous les fichiers .avi de mon répertoire :
luser@localhost $ cd ~
luser@localhost $ find . -name "*.avi" -exec rm {} \;

7.2 slocate – locate


locate est un lien symbolique de la commande slocate.
La commande slocate utilise une base de données que vous devez mettre à jour régulièrement.
Des fichiers récemment créés ne sont donc pas forcément référencés. La base de données peut être mise à jour
manuellement par le super utilisateur (root) avec la commande slocate -u ou encore updatedb
L’avantage de slocate est de permettre une recherche beaucoup plus rapide qu’avec la commande find. En effet, lors
d'une recherche, la commande find parcourant à chaque lancement le contenu entier du disque, il est bien plus rapide
d'utiliser la commande locate
Exemple : recherche tous les fichiers dont le nom comporte la chaîne toto :
luser@localhost $ locate toto

8. "Pipes" et Redirections
Une des bases essentielles d'un système Unix / Linux est la redirection d'un flux émanant d'un programme en direction
d'un autre.

8.1 Les flux standards


Les flux standards sont au nombre de trois :
STDIN (0) : STDIN n’est ni plus ni moins que l’entrée au clavier (dite "entrée standard"). Cela veut dire que tout ce
que vous tapez au clavier va passer par ce canal d’entrée/sortie.
STDOUT (1) : STDOUT est ce que l’on appelle la "sortie standard". Les informations qui apparaissent à l’écran
passent par le canal STDOUT.
STDERR (2) : STDERR est la "sortie d’erreur standard". L’utilité d’avoir deux flux de sortie permet de séparer les
messages d’erreurs et la sortie normale.
Les numéros 0,1,2 désignent respectivement STDIN, STDOUT et STDERR, et peuvent être utilisés dans les
commandes shell.
8.2 Redirections
Ainsi, si nous exécutons un programme comme ls, il va afficher le résultat sur la sortie standard, c'est à dire l'écran par
défaut. Il est possible de rediriger ces différents flux vers des fichiers, d’autres flux…
Ceci se fait par le biais des signes "<" et ">" Une commande "commande > un fichier" va créer un fichier "un fichier"
contenant le résultat de la commande "commande".
De même, avec le signe "<" au lieu de ">" aurait utilisé le contenu du fichier "un fichier" en entrée de la commande
"commande".
Exemple :
$ cd /tmp
$ ls -l /bin
total 4872
-rwxr-xr-x 1 root root 3180 Jan 22 2001 arch
-rwxr-xr-x 1 root root 54905 May 22 2001 attr
-rwxr-xr-x 1 root bin 477692 Mar 22 2000 bash
-rwxr-xr-x 1 root bin 295012 Sep 3 1999 bash1
lrwxrwxrwx 1 root root 5 Nov 10 2000 bunzip2 -> bzip2
-rwxr-xr-x 1 root bin 27380 May 18 2000 bzip2
-rwxr-xr-x 1 root bin 6708 May 18 2000 bzip2recover
...
$ ls -l /bin > un_fichier
$ cat un_fichier
total 4872
-rwxr-xr-x 1 root root 3180 Jan 22 2001 arch
-rwxr-xr-x 1 root root 54905 May 22 2001 attr
-rwxr-xr-x 1 root bin 477692 Mar 22 2000 bash
-rwxr-xr-x 1 root bin 295012 Sep 3 1999 bash1
lrwxrwxrwx 1 root root 5 Nov 10 2000 bunzip2 -> bzip2
-rwxr-xr-x 1 root bin 27380 May 18 2000 bzip2
-rwxr-xr-x 1 root bin 6708 May 18 2000 bzip2recover
...

Si on utilise plusieurs fois des redirections sur un même fichier, avec ce que l’on a vu, le fichier est écrasé à chaque fois.
Pour éviter cela il est possible d’utiliser "<<" à la place de "<" et ">>" à la place de ">", auquel cas les données seront
concaténées dans le fichier (mises à la suite).
luser@localhost $ ls linux-lfs/
[Link] [Link] nvram
[Link] [Link] [Link]
luser@localhost $ ls evolution/
[Link] config mail [Link]
cache gtkrc-mail-fonts meta [Link]
[Link] local [Link] views
luser@localhost $ ls linux-lfs/ >> fichier
luser@localhost $ ls evolution/ >> fichier
luser@localhost $ cat fichier
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
views

Voici un exemple montrant la redirection de la sortie standard et de la sortie d’erreur standard :


Avec l’outil find, on va rechercher un fichier dont le nom comporte "tes" dans le répertoire /etc. On redirige les résultats
dans le fichier "fichier" et les erreurs dans le fichier "erreurs" :
2> signifie que l’on redirige l’erreur standard et > signifie implicitement 1>
luser@localhost $ find /etc/ -name "*tes*" > fichier 2> erreurs
luser@localhost $ cat fichier
/etc/CORBA/servers/gnotes_applet.gnorba
/etc/sysconfig/network-scripts/ifup-routes
/etc/dumpdates
/etc/openldap/[Link]
luser@localhost $ cat erreurs
find: /etc/cups/certs: Permission denied
find: /etc/default: Permission denied

Notons que l’on peut rediriger l’erreur standard et la sortie standard vers le même fichier :
luser@localhost $ find /etc/ -name "*tes*" > fichier 2>&1
luser@localhost $ cat fichier
find: /etc/cups/certs: Permission denied
find: /etc/default: Permission denied
/etc/CORBA/servers/gnotes_applet.gnorba
/etc/sysconfig/network-scripts/ifup-routes
/etc/dumpdates
/etc/openldap/[Link]

Voici un dernier exemple montrant la redirection de l’entrée standard :


luser@localhost $ cat .bashrc
export PS1="\[\033[1;35m\][\u@\h \W]$\[\033[0m\] "
export PATH=$PATH:/usr/local/bin:/usr/local/sbin
BLA=‘ps aux | grep XFree86‘
if [ ! "$BLA" == "" ]; then
export TERM=xterm-color
fi
alias ncftp=’ncftp3’
alias ls=’ls -G’
alias vi=’vim’
luser@localhost $ tr ’A-Z’ ’a-z’ < .bashrc
export ps1="\[\033[1;35m\][\u@\h \w]$\[\033[0m\] "
export path=$path:/usr/local/bin:/usr/local/sbin
bla=‘ps aux | grep xfree86‘
if [ ! "$bla" == "" ]; then
export term=xterm-color
fi
alias ncftp=’ncftp3’
alias ls=’ls -g’
alias vi=’vim’

Avec tr, on a converti les caractères majuscules en minuscules, le flux d’information venant du fichier ".bashrc".

8.3 Pipes
Les "pipes" ("|") quand à eux sont "des voies de communication" d’un processus vers un autre.
Par exemple si nous faisons "commande 1 | commande 2", le résultat de la commande "commande 1" va être utilisé en
entrée de la commande "commande 2".
Il est possible de chaîner ce type de commande autant que l’on veut. Rien de tel qu’un exemple :
luser@localhost $ ls -la /bin > un_fichier
luser@localhost $ grep "bzip" un_fichier
lrwxrwxrwx 1 root root 5 Feb 12 2001 bunzip2 -> bzip2
-rwxr-xr-x 1 root bin 27380 May 18 2000 bzip2
-rwxr-xr-x 1 root bin 6708 May 18 2000 bzip2recover
luser@localhost $ ls -la /bin | grep "bzip"
lrwxrwxrwx 1 root root 5 Feb 12 2001 bunzip2 -> bzip2
-rwxr-xr-x 1 root bin 27380 May 18 2000 bzip2
-rwxr-xr-x 1 root bin 6708 May 18 2000 bzip2recover
PROCESSUS SOUS LINUX

Chapitre 08 - Gestion des processus

1. La vie d'un processus


Un processus durant tout sa vie évolue par états et ce jusqu'à sa mort. Les principaux états connus sont : l'état "actif",
désigné comme tel lorsque le processus est pris en charge par le processseur, l'état "prêt", indiquant que le processus
attend sa prise en charge par le processeur et l'état "attente" permettant au processus de se mettre en mode sommeil afin
d'attendre l'arrivée d'un signal qui le passera à l'etat prêt. Il existe beaucoup d'autres états qui seront mis en évidence par
l'utilisation de certaines commandes.
Une fois un processus lancé, le système lui affecte non seulement une identification numérique unique portant le nom
de PID (Process Identifier) permettant de le reconnaître dans la masse des processus mais aussi un héritage. En effet
lorsqu'un processus est lancé celui-ci fait partie d'une descendance, tout processus est le "fils","le petit fils" , ou
"l'arrière petit fils" d'un processus parent dénommé "init". C'est le premier processus lancé par le système et c'est lui qui
prend en charge l'exécution de l'ensemble des processus lancés par l'utilisateur par l'intermédiaire du shell (interpréteur
de commande).
Ainsi le processus init a un pid égale à 1. De même qu'il existe des commandes indiquant l'état d'un processus, des
commandes mettant en evidence l'arbre généalogique d'un processus existant.
Voyons un peu l'ensemble de ces commandes :

Commande Description

ps Permet de lister les processus suivant un certain nombre de critères

Permet d'avoir un suivi de l'évolution des processus et ce faisant, d'effectuer des traitements comme on
top
pourrait le faire avec ps, mais de façon interactive

pstree Permet de lister les processus dans un arbre indiquant les liens de parentés entre eux

jobs Permet de lister les processus lancés dans le shell courant

Découvrons plus précisément les sorties des commandes ps et top qui sont similaires : elles possèdent des champs
définis ainsi :

PID Identifiant du processus

USER Le propriétaire du processus

PRI Priorité de la tâche (plus le chiffre est petit plus la tâche est prioritaire)

SIZE Taille du processus en mémoire incluant la partie données et la pile

Quantité totale de mémoire occupée par la tâche (les bibliothèques chargées sont comptabilisées pour
RSS
les programme ELF)

SHARE Quantité de mémoire partagée

STAT Ce champ identifie par des lettres les différents états possibles pour un processus

• D : En sommeil imperturbable (ce qui arrive souvent à certain modules kernel)


• R : En cours d'exécution

• S : En sommeil

• T : Stoppé ou stracé (notamment pour le débugage)

• Z : Zombie (peut arriver lorsqu'un processus n'a pas attendu la fin de l'exécution de l'un de
ses fils)

Nombre de pages occupées par les bibliothèques (sauf pour les exécutables au format ELF ; autant
LIB
dire que ça ne fonctionne quasiment jamais)

Taux d'occupation du(des) processeur(s) par ce processus. Il peut être supérieur à 100% dans le cadre
%CPU
de machine ayant plusieurs processeurs

%MEM Taux d'occupation de la mémoire physique du processus

TIME Temps total d'exécution au sein du(des) processeur(s) depuis le lancement du processus

COMMAND Affiche la ligne de commande qui a permis de lancer le processus

2. Envoi de signaux aux processus


Ce procédé se concentre essentiellement autour de la commande kill. Il n'est pas, comme son nom pourrait le laisser
supposer, dédié à tuer des processus. Il va permettre de faire effectuer un certain nombre de tâches à l'un ou plusieurs
d'entres eux.
Tout dépend, finalement, de comment réagissent les programmes aux signaux qui leurs sont envoyés.
Pour obtenir la liste des signaux disponibles, il suffit de taper dans l'invite de commande du shell : kill -l
Voici dans un tableau les principaux signaux utilisés :

Nom du SIGNAL Nombre Description

Ce signal est envoyé directement lors de la déconnection à un modem ou oblige un


SIGHUP 1
daemon à relire son fichier de configuration

SIGKINT 2 Ce signal est équivalent au Ctrl-C et met fin à l'exécution d'un processus

Tue un processus de manière immédiate. Ce signal est à envoyé dans des mesures
SIGKILL 9
drastiques et ne peut être ignoré par le processus

SIGTERM 15 Termine un signal "proprement" si possible

SIGTSTP 18 Mets un processus en attente et , équivalent à Ctrl-Z

3. Arrière plan / Avant plan / Détachement


Lorsque vous lancez un programme, le shell prend en compte l'exécution du processus, ainsi il faut attendre la fin de
celui-ci avant d'avoir à nouveau le prompt. On dit que le processus est en "Avant Plan" dans cet état il peut recevoir
directement des signaux par les combinaisons de touches Ctrl-?. Il existe un autre mode dans lequel le processus est dit
en "Arrière plan", contrairement au mode "Avant Plan" lors de l'exécution du programme, le shell affiche le prompt
directement sans attendre la fin du processus. Afin de mettre le processus dans ce mode il suffit de placer un "&" à la fin
de la commande, il est ainsi vu comme un job possédant un numéro, attaché au terminal (tty) ou pseudo terminal (pts/?)
dans lequel il a été lancé. Dans cet état aucun caractère de contrôle (Ctrl-?) n'est possible.
Si nous nous trouvons dans les cas présentés plus haut, nous savons dès le départ dans quel mode nous voulons être,
mais imaginons que l'on voudrait "switcher" d'un état à un autre. Des commandes ont été crées spécialement à cette
effet.

Commande Description

fg %N° de Job * Permet de mettre un processus en avant plan

bg %N° de Job * Permet de mettre un processus en arrière plan

Ctrl-Z Permet de mettre un processus en attente

* : lorsque vous utilisez ces commandes et que vous avez mis un processus en attente, il met le processus dans l'état prêt
et dans le mode pour lequel il a été crée.
Toutes les commandes que nous avons vues jusqu'à maintenant sont placées dans un mode d'arrière ou d'avant plan mais
le processus est attaché à un terminal. Il existe un mode appélé mode de "détachement" où un processus n'est attaché à
aucun terminal ou pseudo terminal. Généralement c'est le cas des daemon. On indentifie facilement un daemon par le
champ TTY d'une sortie des commandes ps ou top ou il y a le symbole "?"
La commande permettant le détachement des processus est : disown et possède un paramètre qui est le PID du
processus.
Exemple :
disown 1394

4. Modification des priorités du Scheduler


Nous avons vu en introduction que les processus avaient des priorités et qu'elles étaient modifiables. En effet les
propriétés évoluent sur une échelle de -20 à +19. Tout processus, au lancement, peut avoir une priorité quelconque
supérieure ou égale à zéro. Par contre un processus lancé par un utilisateur, à son exécution et durant celle-ci ne peut
avoir une priorité négative. Seul l'administrateur système possède ce droit. Par défaut un processus est lancé avec la
priorité 10.
les commandes permettant de contrôler les priorités des processus sont nice et renice.

Commande Description Options

Permet d'affecter une priorité aux processus dès leur


nice priorité -n N :permet d'ajuster la priorité par défaut à N
lancement

Permet de modifier la priorité d'un processus alors que -u "User" :change la priorité de tous les
renice priorité
celui-ci est déjà lancé processus d'un utilisateur

-p "PID" : change la priorité d'un processus ayant un pid précis

5. Planification de tâches
Il est possible de planifier des tâches sur linux afin que celles-ci s'éxécutent de manière répétitives ou différées. Pour
cela deux daemons existent l'un crond qui est le daemon permettant d'éffectuer des tâches répétitives et le daemon atd
destiné aux tâches différées. Chacun de ces deux daemons possèdent une commande en premier plan : crontab pour
crond et at pour atd. Cependant beaucoup de ces commandes ne peuvent pas être utilisés par n'importe qui.
Pour gérer les accès à ces commandes, l'administrateur dispose de fichiers de permissions situés dans le répertoire /etc :
[Link] et [Link] qui definissent les autorisations et [Link] et [Link] les refus.
Selon la présence ou l'absence de ces fichiers plusieurs règles rentrent en jeu :
• Aucun des fichiers n'existe : dans ce cas seul root à le droit d'utiliser les commandes
Note: dans le cas d'un système RedHat l'abscence des fichiers donne le droit à l'ensemble des utilisateurs
d'utiliser les commandes
• Les fichiers [Link] et [Link] existent : les utilisateurs dont les noms sont présents sont abilités à exécuter
les commandes
• Les fichiers [Link] et [Link] existent : les utilisateurs dont les noms sont présents ne peuvent exécuter les
commandes les autres oui.

5.1 La commande crontab


Il est important de ne pas faire l'amalgame entre la commande crontab et le fichier crontab. La commande crontab
permet de créer un fichier crontab possédant les différentes requêtes que l'utilisateur veut effectuer. Ce fichier porte le
nom de l'utilisateur et est stocké dans le répertoire /var/spool/cron avant d'être exécuté par crond. Cette commande
permet notament d'éditer le fichier et d'en supprimer le contenu.
Voici dans un tableau récapitulant les différentes options possibles:

Option Définition

-u utilisateur Installation du fichier crontab pour utilisateur (nécessaire d'être root pour l'utiliser)

-e Modification du fichier crontab à l'aide de l'éditeur spécifié par les variables VISUAL ou EDITOR

-l Liste le contenu du fichier crontab courant

-r Elimination du fichier crontab courant

Le fichier crontab créé par l'utilisateur est composé de cinq champs marquant la périodicitété et la commande à
effectuer. Ces champs sont ainsi définis:
Minute heure date mois "jour du mois" commande

La périodicité de chacun de ces 5 champs est représentée par des valeurs numériques comme ci dessous:
• minutes (0-59)
• heures (0-23)
• date (0-31)
• mois (1-12)
• jour de la semaine (0-7)ou (0 ou 7 indique le Dimanche)
Vous pouvez affiner la notion de périodicité par l'utilisation de:
• , : sépare plusieurs valeurs
• - : marque une période (exemple: 1-7,du lundi au dimanche)
• * : représente l'ensemble des valeurs possibles
• / : permet de spécifier tous les x temps (exemple: */2 dans la colone des jours veut dire chaque 2 jours).

Note:
vous pouvez séparer les champs d'une entrée par des espaces simples, ou de tabulations.

5.2 Le fichier crontab système


Le fichier /etc/crontab est également lu par le daemon crond et est différent du format d'un fichier crontab ordinaire, en
effet celui-ci possède des informations d'environnement qui précèdent généralement ses entrées (cela est aussi permis
pour les fichiers crontab ordinaires mais ce n'est pas souvent utilisé). Après les cinq champs initiaux se trouve le nom
d'un utilisateur pour lequel la commande doit être appelée.
Ce fichier est généralement utilisé pour appeler les scripts contenus dans les répertoires "[Link]" se situant dans le
répertoire /etc,énumérés ci-dessous :
• /etc/[Link]
• /etc/[Link]
• /etc/[Link]
• /etc/cron.* répertoire contenant les exécutables
L'autre différence du fichier système crontab est qu'il fait appel à une commande particulière : run-parts. Cette
commande prend en argument un nom de répertoire et appelle tous les programmes compris dans ce répertoire (le
programme run-parts se trouve dans /usr/bin et n'est accompagné d'aucune documentation en ligne).
Voici un exemple de fichier /etc/crontab:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/bin:/usr/sbin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/[Link]
02 4 * * * root run-parts /etc/[Link]
22 4 * * * root run-parts /etc/[Link]
42 4 1 * * root run-parts /etc/[Link]

Ainsi, chaque matin, à 4:02, tous les scripts (ou programmes du répertoire /etc/[Link] sont exécutés. Le répertoire
[Link] est créé lors de l'installation de votre distribution et contient des scripts servant à mettre à jour les bases de
données slocate et whatis, à nettoyer les répertoires temporaires et à exécuter d'autres tâches de maintenance.

5.3 La commande at
at est un outil pratique pour planifier un seul évènement futur, et son utilisation est très simple:
Exemple :
luser@localhost $ at 6:00 ;
mail joe < [Link]

Beaucoup d'autres commandes utilisent le daemon atd :


• la commande atq (pour at queue, la file d'attente de at), fournit une liste des travaux at actuellement en cours.
Tout utilisateur privilégié (root) peut entrer un nom d'utilisateur comme argument pour obtenir les travaux en
cours d'autres utilisateurs.
• la commande atrm est utilisée pour éliminer les travaux at en cours. L'atJobID s'affiche lorsque le travail est
soumis ainsi qu'à la demande de la commande atq. Tout utilisateur privilégié peut éliminer les travaux at
d'autres utilisateurs en fournissant le nom d'utilisateur (user ID) de ceux-ci.
Les commandes peuvent être indiquées (une par ligne), en terminant l'entrée par Ctrl-d seul, sur sa propre ligne.

LE RESEAU SOUS LINUX

1. Introduction
Afin d'utiliser le réseau, il vous faudra activer le support de votre carte en "dur" dans votre noyau ou encore la charger
par le biais d'un module au lancement du système.
De plus certaines distributions incluent des outils de détection automatique.

2. Configuration Automatique
Lorsque le réseau possède un serveur DHCP, il devient trés simple de configurer sa carte réseau sous Linux en tapant
simplement :
dhclient

Note:
la commande dhclient est la plus récente et la plus utilisée, mais il existe d'autres commandes tel que dhcpcd
et pump.

3. Configuration manuelle

3.1 Les interfaces


Le noyau Linux attribue des noms d'interfaces composées d'un préfixe précis selon le type. Toutes les interfaces
Ethernet, par exemple, commençant par eth. Le préfixe est suivi d'un chiffre, le premier étant 0 (eth0, eth1, eth2...)

Ethernet eth[01234...]

Anneau à jeton tr[01234...]

FDDI fddi[01234...]

3.1.1 ifconfig
La commande ifconfig permet de connaitre l'état des interfaces réseaux présentes et détectées par le système.
L'option -a permet d'afficher toutes les interfaces actives ou non.
luser@localhost $ /sbin/ifconfig -a
eth0 Link encap:Ethernet HWaddr [Link]
inet addr:[Link] Bcast:[Link] Mask:[Link]
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:164442 errors:0 dropped:0 overruns:0 frame:1
TX packets:133671 errors:0 dropped:0 overruns:72 carrier:0
collisions:0 txqueuelen:100
RX bytes:91115012 (86.8 Mb) TX bytes:33953990 (32.3 Mb)
Interrupt:10 Base address:0xc000
lo Link encap:Local Loopback
inet addr:[Link] Mask:[Link]
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:3431 errors:0 dropped:0 overruns:0 frame:0
TX packets:3431 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:197669 (193.0 Kb) TX bytes:197669 (193.0 Kb)

La commande ifconfig permet aussi de configurer la carte réseau avec la syntaxe suivante :
ifconfig adr_ip netsmask masque_ss_réseau broadcast adr_broadcast

3.1.2 ifup/ifdown
La commande ifup permet d'activer une carte réseau :
ifup <interface>

Exemple :
root@localhost # ifup eth0

La commande ifdown permet de désactiver une carte réseau :


ifdown <interface>

Exemple :
root@localhost # ifdown eth0
Note: attention les commandes ifup et ifdown ne sont pas présentes dans certaines distributions.

Dans ce cas il faut avoir recourt à la commande ifconfig :


root@localhost # ifconfig eth0 up

OU
root@localhost # ifconfig eth0 down

3.2 Les routes


La commande route permet d'afficher la table de routage du système :
root@localhost # route
Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
[Link] * [Link] U 0 0 0 eth0
default [Link]-supinf [Link] UG 0 0 0 eth0

voici un exemple de modification de la table de routage :


Pour attacher un sous réseau local à une interface :
root@localhost # /sbin/route add -net [Link]/25 dev eth0

Pour atteindre un sous réseau distant, il est nécessaire de spécifier une passerelle (gateway, en anglais) :
root@localhost # /sbin/route add -net [Link]/25 gw [Link]

Les communications ne correspondant à aucune des routes présentes utilisent la route par défaut (pour l'Internet
notamment) :
root@localhost # /sbin/route add default gw [Link]

3.3 La résolution de nom


Pour résoudre les noms sur le réseau, il faut stocker dans le fichier "/etc/[Link]" l'adresse IP de vos serveurs DNS :
domain [Link]
nameserver [Link]
nameserver [Link]

Nous avons ici configuré le domaine du réseau ([Link]) et l'IP de deux serveurs DNS.

4. Les outils de tests réseau

4.1 Ping
La commande ping est LA commande de base pour tester le réseau. elle vérifie la connectivité entre votre interface
réseau et une autre :
luser@localhost $ ping [Link]

[Link] est l'adresse loopback de votre interface réseau (lo). faire un ping sur votre adresse loopback revient à vous
"pinger" vous meme. Si votre interfaces lo vous répond, c'est que votre carte réseau est supportée : votre kernel supporte
le TCP/IP, le driver de votre carte fonctionne.
ping <votre_ip>

Ici vous pouvez vérifier que vous avez bien configurer votre adresse IP.
ping <une_ip>

Si une_ip fait partie de votre réseau, il s'agit de vérifier la connexion au réseau local.
Dans le cas contraire, vous serez en mesure de tester le bon fonctionnement de votre passerelle.
ping <un_nom>

Ici, c'est votre configuration DNS que vous vérifiez.

4.2 Traceroute
La commande traceroute vous permet de connaître le chemin des paquets émis par votre interface.
Cela peut, en outre vous permettre, de détecter des problèmes éventuels de congestion sur un routeur du réseau.

la commande traceroute fonctionne au niveau réseau du modèle OSI. Elle ne détectera donc pas les passages
Note:
par des équipements réseau fonctionnant sur des couches inférieures ( hub,switchs).

Par exemple, voyons le chemin que prend nos paquets pour atteindre la machine [Link] :
luser@localhost $ /usr/bin/traceroute [Link]
traceroute to [Link] ([Link]), 30 hops max, 40 byte packets
1 gougniafier ([Link]) 0.282 ms 0.147 ms 0.105 ms
2 [Link] ([Link]) 55.493 ms 55.736 ms 58.933 ms
12 [Link] ([Link]) 55.892 ms 53.760 ms
13 [Link] ([Link]) 59.920 ms 56.677 ms 59.887
14 [Link] ([Link]) 57.182 ms 51.742 ms 53.876 ms

4.3 Netstat
Netstat permet d'afficher des détails sur les connexions actives de votre machine (statistiques, ports...)
root@localhost # netstat -tlp
Active Internet connexions (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 *:36167 *:* LISTEN
20091/artsd
tcp 0 0 *:6000 *:* LISTEN
20032/X
tcp 0 0 *:www *:* LISTEN
17170/apache
tcp 0 0 *:ssh *:* LISTEN
8283/sshd

Pour afficher la liste des connexions actives :


root@localhost # netstat -top
Active Internet connexions (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
PID/Program name
tcp 0 0 [Link]:35514 [Link]:5190 ESTABLISHED
7981/centericq
tcp 0 0 [Link]:36240 [Link] ESTABLISHED
28124/ncftp
tcp 0 0 [Link]:33605 [Link]:1863 ESTABLISHED
7981/centericq
tcp 0 0 [Link]:35936 gougniafier:ssh ESTABLISHED
18543/ssh

Vous aimerez peut-être aussi