Вы находитесь на странице: 1из 55

C.A.F.

E SA  
INFORMATIQUE & TELECOMMUNICATIONS

Mai 2010

Animée par Koffi ANATOH

Cours d'administration Linux
Programme

1.0 Linux: Définitions et concepts


2.0 Linux: Pré-installation - Planification
3.0 Installation
4.0 Quelques commandes usuels de Linux
5.0 Administration sous Linux
6.0 Gestion des utilisateurs
7.0 Linux architecture
Principe de Nommage des périphériques
partition des disques
Les systèmes de fichiers
montage des périphériques
8.0 Gestion des fichiers:Propriétaires et droits d'accés
9.0 Principes de fonctionnement de Linux
10.0 Linux: gestion des processus
11.0 Installation d'applications
12.0 TP (Les TP se feront au fur et à mesure que le cours avance)

Cours d'administration Linux
1.0 Linux: Définitions et concepts

Présentation d’UNIX

UNIX est un système d’exploitation  qui a commencé en 1971 sous le nom 
«UTS : Unix Time­Sharing (Bell Labs)».

Après ses versions 6  et 7 respectivement en  1975 et 1980, il a subi des 
dérivés sous  des systèmes propriétaires et libres. 

Les unix propriétaires
IBM AIX®
HP HP­UX®
Tru64 UNIX®
SCO UnixWare®
SGI IRIX®
SUN SOLARIS®
Les unix libres
OpenBSD
FreeBSD
NetBSD
Mac­OS X
les GNU/Linux
Un schéma sur l’historique d’UNIX est disponible sur l’Annexe4.

Concepte du libre

Richard Stallman (chercheur au MIT, auteur de gcc,
Emacs ...) énonce clairement le concept de logiciel
libre (« free »)
« ... un savoir scientifique doit être partagé en le distribuant, ...
les codes source doivent être libres d'accès ... »
Démarre le projet GNU (1984). But : re­créer un
système d'exploitation complet (Unix­like), composé
uniquement de logiciels libres.
Créé la FSF (Free Software Fundation, 1985) pour
gérer le projet GNU.
Remarque : « Free » dans la culture hacker signifie
« libre », pas nécessairement « gratuit » ou « non
commercial »

Cours d'administration Linux
Le projet GNU

Principe de base : le libre accès au code source accélère le progrès en 
matière d'informatique car l'innovation dépend de la diffusion du code
source
La liberté au sens GNU est définie selon quatre principes :
­ liberté d'exécuter le programme, pour tous les usages
­ liberté d'étudier le fonctionnement du programme, de l'adapter à ses
besoins
­ liberté de redistribuer des copies
­ liberté d'améliorer le programme et de publier ses améliorations,
pour en faire profiter toute la communauté

la licence GPL
La licence GPL (General Public licence) www.gnu.orgcopyleft/gpl.html
• Autorise l'utilisateur à copier et distribuer à volonté le logiciel qu'elle
protège, pourvu qu'il n'interdise pas à ses pairs de le faire aussi
• Requiert aussi que tout dérivé d'un travail placé sous sa protection 
soit lui
aussi protégé par elle
• Quand la GPL évoque les logiciels libre, elle traite de liberté et non de
gratuité (un logiciel GPL peut être vendu)
• Remarque : en anglais « free » mélange gratuité et liberté
(R. Stallman précise bien : “Free as in speech, not as in beer")

le copyleft GPL
Le copyleft de la licence GPL www.gnu.org/copyleft

• Créé par Stallman en 1984
• Garantit les 4 libertés fondamentales pour tous les utilisateurs 
(artiste,
informaticien, ou quiconque produit un travail soumis au droit d'auteur)
• Évite de mettre les logiciels GNU dans le domaine public (pas de 
protection)
• Spécifie que quiconque redistribue le logiciel, avec ou sans 
modifications,
doit aussi transmettre la liberté de les copier et de les modifier
• Encourage et aide les programmeurs (entreprises, universités) qui 
veulent
ajouter et/ou contribuer à des améliorations des logiciels libres.
• Un logiciel copyleft est d'abord déclaré sous copyright, puis on ajoute 
les conditions de distribution et les libertés légalement indissociables.

Cours d'administration Linux
GNU/Linux :
C'est un Unix à part entière
C'est un logiciel libre distribué sous licence GPL
Les sources du noyau Linux sont disponibles sur http://www.kernel.org/
 GNU/Linux Intègre :
­ le noyau Linux (clone du système Unix écrit par Linus Torvalds et toute
une équipe de développeurs sur InterNet)
­ des composants logiciels libres issus du projet GNU (gcc, ...)
Disponible pour toutes les plateformes (PC, station,cluster, mainframe, ...)
La plupart des éditeurs de solutions UNIX propriétaires intègrent
GNU/Linux en remplacement (IBM, HP, SiliconGraphics ...)
L'administration Linux est calquée sur UNIX System V (AT&T)

Linux kernel /Noyau Linux

Le noyau est la principale composante du système d’exploitation qui fournit 
la possibilité aux logiciels ou applicatifs d’accéder au système matériel. 
Parce que le noyau est utilisé pour accéder aux informations matérielles, il 
est souvent mise à jour. Ces mises à jour sont fournies pour permettre le 
support de nouvelles technologies  telles les contrôleurs SCSI,  Ultra ATA, 
USB, les cartes graphiques et d’autres  technologies non supportées dans 
les  anciennes versions.

Les versions du Noyau

La version du noyau de Linux permet de s’assurer du statut (stable, 
expérimentale ou en dévélopement )  et de la fiabilité  du noyau.  Un 
système de numérotation permet d’identifier les différents types de noyau. 
Il est résumé à travers les points suivants:
­«major number» représente le principal changement du noyau
­«minor number» , nombre du milieu, reflète le status ‘, expérimentale ou 
en développement) du noyau. Les nombres pairs réflète la stabilité du 
noyau  et les nombres impairs désignent une version  en développement.  
­«revision number» est le dernier nombre  et il indique la version ou niveau 
de parution du  noyau 

Distributions de Linux

Le noyau de Linux est utilisé, interprété et interfacé  de manières diverses 
suivant des utilisateurs développeurs et suivant des pays. 
Mandriva version française 
Suse développée par une société allemande fondée à Nuremberg en 1993 et 
rachetée en 2003 par l'éditeur de logiciels américain Novell
Redhat par une société américaine

Cours d'administration Linux
Fedora version grand public toujours libre
Débian  distribution issue d'un effort communautaire
Ubuntu Distribution populaire à base débian lancée en 2004 (Afrique du 
sud)
Turbolinux
La distribution de Linux majeure pour les pays
d'Asie(particulièrement répandue en Chine)
Pclinux
Kubuntu

2.0 Linux: Preinstallation ­  Plannification

Suivant le cahier de charge de l’ouvrage à effectuer,  il faut:
• Identifier le matériel requis et la compatibilité  avec  Linux (disque, 
carte graphique, carte réseau, carte mère, modem…)
• Chercher dans  un moteur de recherche (Google par exemple ) HCL 
(Hardware compatibily List) 
• Se rendre compte de la distribution de Linux préconisée
• Déterminer le type d’installation à faire: serveur ou client
• Déterminer la liste des applications ou  services qui doivent être 
installés, vérifier leur dépendance  et leur compatibilité avec linux
• Connaitre la fonction des différents services sous linux 
(samba,apache,bind…)
• Sortir un comparatif des solutions Linux  trouvées  par rapport à 
celles des autres  OS sur les points suivants: fonctionnalités, 
Ressources matérielles, ressources logicielles, ressources financières, 
avantages, inconvénients en vue du renforcement d choix
• Adopter une architecture ou schéma de partitionnement 

3.0 Installation

Les précautions à prendre au cours de l’installation sont:
• Vérification de la  configuration matérielle requise (RAM, Disque 
dur…) 
• Vérifier la méthode ou Source d’installation: cdrom, disque, réseau 
(http,SMB,FTP,NFS)
• Choix de paramètres régionnaux et appropriés pour le système à 
installer(langue,clavier,paramètres de temps,souris…)
• Mise en place d’un schéma de partionnement, 
• Configuration  de système de fichers (ext2, ext3, reiser, Vfat)  
• Choix du type d’installation (serveur  ou poste client)
• Choix des applications et services à installer
• Choix du chargeur de démarrage: grub ,lilo

Cours d'administration Linux
4.0 Quelques commandes usuels de Linux:exemples détaillés à 
l'appui

Répertoires 
pwd 
Affiche le chemin absolu du répertoire courant (Print Working Directory). 

$ pwd
/home/nicolas
cd [répertoire] 
Change de répertoire (Change Directory). Va dans répertoire ou dans le répertoire 
de l'utilisateur s'il n'y a pas d'argument.
Si "­" est indiqué en argument, déplace dans le répertoire précédent. 

$ pwd
/home/nicolas
$ cd /var/tmp
$ pwd
/var/tmp
$ cd ..
$ pwd
/var
$ cd
$ pwd
/home/nicolas
$ cd ­
/var
$ pwd
/var

ls [fichier ...] 
Liste le contenu des répertoires ou le nom des fichiers passés en arguments (liste 
le répertoire courant si pas d'argument).
­l : affichage détaillé (long)
­a : affichage aussi des fichiers cachés dont le nom commence par un point (all)
­i : affichage des numéros d'inodes (inode)
­d : affichage du nom du répertoire et non de son contenu (directory)
­t : trie l'affichage suivant la date de modification des fichiers (time)
­r : inverse le tri d'affichage (reverse)
­R : affichage du contenu de tous les sous répertoires (recursive) 
$ ls
fic1  fic2  rep1
$ ls ­a
.  ..  .bash_history  .bash_profile  .bashrc  .viminfo  fic1  fic2  rep1
$ ls ­l 
total 8
­rw­r­­r­­    1 nicolas  users           0 Dec  6 11:48 fic1
­rw­r­­r­­    1 nicolas  users         868 Dec  6 11:48 fic2
drwxr­xr­x    3 nicolas  users        4096 Dec  6 11:48 rep1
$ ls ­R
.:

Cours d'administration Linux
fic1  fic2  rep1

./rep1:
ficA  repA

./rep1/repA:
$ ls ­ltr
total 8
­rw­r­­r­­    1 nicolas  users           0 Dec  6 11:48 fic1
drwxr­xr­x    3 nicolas  users        4096 Dec  6 11:48 rep1
­rw­r­­r­­    1 nicolas  users         868 Dec  6 11:48 fic2
$ ls ­l rep1
total 4
­rw­r­­r­­    1 nicolas  users           0 Dec  6 11:48 ficA
drwxr­xr­x    2 nicolas  users        4096 Dec  6 11:42 repA
$ ls ­ld rep1
drwxr­xr­x    3 nicolas  users        4096 Dec  6 11:48 rep1

mkdir <répertoire ...> 
Créé les répertoires (MaKe DIRectory) passés en arguments. 
$ ls ­l 
total 0
$ mkdir rep1
$ ls ­l
total 4
drwxr­xr­x    2 nicolas  users        4096 Dec  6 11:41 rep1
$ mkdir rep1/repA rep2
$ ls ­lR
.:
total 8
drwxr­xr­x    3 nicolas  users        4096 Dec  6 11:42 rep1
drwxr­xr­x    2 nicolas  users        4096 Dec  6 11:42 rep2

./rep1:
total 4
drwxr­xr­x    2 nicolas  users        4096 Dec  6 11:42 repA

./rep1/repA:
total 0

./rep2:
total 0

rmdir <répertoire ...> 
Supprime les répertoires (ReMove DIRectory) passés en arguments s'ils sont vides. 
$ rmdir rep1 rep2
rmdir: `rep1': Directory not empty
$ ls ­l
total 4
drwxr­xr­x    3 nicolas  users        4096 Dec  6 11:42 rep1

Fichiers 

cp <source ...> <destination> 
Copie (CoPy) les fichiers source vers destination.
­i : demande confirmation avant écrasement (interactive)

Cours d'administration Linux
­f : écrase sans demander confirmation (force)
­R ou ­r : copie aussi les répertoires (recursive) 
$ ls ­l
total 8
­rw­r­­r­­    1 nicolas  users           0 Dec  6 11:48 fic1
­rw­r­­r­­    1 nicolas  users         868 Dec  6 11:48 fic2
drwxr­xr­x    3 nicolas  users        4096 Dec  6 11:48 rep1
$ cp fic1 fic3
$ cp fic2 fic3
$ cp ­i fic2 fic3
cp: overwrite `fic3'? o
$ cp rep1 rep2
cp: omitting directory `rep1'
$ cp ­r rep1 rep2
$ cp ­dpr rep1 /tmp
$ ls ­l
total 16
­rw­r­­r­­    1 nicolas  users           0 Dec  6 11:48 fic1
­rw­r­­r­­    1 nicolas  users         868 Dec  6 11:48 fic2
­rw­r­­r­­    1 nicolas  users         868 Dec  6 14:08 fic3
drwxr­xr­x    3 nicolas  users        4096 Dec  6 11:48 rep1
drwxr­xr­x    3 nicolas  users        4096 Dec  6 14:09 rep2
$ ls ­ld /tmp/rep1 
drwxr­xr­x    3 nicolas  users        4096 Dec  6 11:48 /tmp/rep1

Attention : sans l'option ­R (ou ­r), la commande cp ne pourra pas copier les 
répertoires ; il est nécessaire qu'elle travaille en "récursif" pour parcourir 
l'arborescence de fichiers sous le répertoire, et ainsi pouvoir copier les fichiers 
sous jacents. 

mv <source ...> <destination> 
Renomme/déplace (MoVe) les fichiers source vers destination.
­i : demande confirmation avant écrasement (interactive)
­f : écrase sans demander confirmation (force)
$ ls
fic1  fic2  fic3  rep1  rep2
$ ls rep2
ficA  repA
$ mv fic* rep2
$ ls
rep1  rep2
$ ls rep2
fic1  fic2  fic3  ficA  repA
$ mv rep1 rep2
$ ls
rep2
$ ls rep2
fic1  fic2  fic3  ficA  rep1  repA
rm <fichier ...> 
Supprime (ReMove) les fichiers passés en arguments.
­i : demande confirmation avant suppression (interactive)
­f : supprime sans demander confirmation (force)
­R : supprime aussi les répertoires (recursive) 
$ ls ­R .
.:

Cours d'administration Linux
rep2

./rep2:
fic1  fic2  fic3  ficA  rep1  repA

./rep2/rep1:
ficA  repA

./rep2/rep1/repA:

./rep2/repA:
$ rm rep2/fic1
$ ls rep2
fic2  fic3  ficA  rep1  repA
$ rm rep2/rep1
rm: `rep2/rep1' is a directory
$ rm ­r rep2/rep1
$ ls rep2
fic2  fic3  ficA  repA
ln <source> <destination> 
Créé le lien (LiNk) destination vers le fichier source.
­s : créé un lien "symbolique" (soft) à la place d'un lien "dur" (hard) 
$ echo coucou > fichier1
$ ls ­l
total 4
­rw­r­­r­­    1 nicolas  users           7 Dec  6 14:24 fichier1
$ ln fichier1 fichier2
$ ln ­s fichier1 fichier3
$ ls ­l
total 8
­rw­r­­r­­    2 nicolas  users           7 Dec  6 14:24 fichier1
­rw­r­­r­­    2 nicolas  users           7 Dec  6 14:24 fichier2
lrwxrwxrwx    1 nicolas  users           8 Dec  6 14:25 fichier3 ­> fichier1
$ rm fichier1 
$ ls ­l
total 4
­rw­r­­r­­    1 nicolas  users           7 Dec  6 14:24 fichier2
lrwxrwxrwx    1 nicolas  users           8 Dec  6 14:25 fichier3 ­> fichier1
$ cat fichier2 
coucou
$ cat fichier3 
cat: fichier3: No such file or directory
touch <fichier ...> 
Met à jour l'horodatage des fichiers passés en arguments ou créé ceux­ci s'ils 
n'existent pas. 
$ ls ­l
total 4
­rw­r­­r­­    1 nicolas  users           7 Dec  6 14:24 fichier
$ date
Mon Dec  6 14:30:02 CET 2004
$ touch fichier nouvfichier
$ ls ­l
total 4
­rw­r­­r­­    1 nicolas  users           7 Dec  6 14:30 fichier
­rw­r­­r­­    1 nicolas  users           0 Dec  6 14:30 nouvfichier
type <cmd ...> 
Indique comment chaque commande cmd doit être interprétée si elle est invoquée 

Cours d'administration Linux
en ligne de commandes. 
$ type ls cd passwd
ls is aliased to `ls ­­color=tty'
cd is a shell builtin
passwd is /usr/bin/passwd
which <cmd ...> 
Retourne les chemins des binaires de chaque commande cmd passés en 
argument.
Ne prend pas en compte les commandes intégrées du shell et les alias. 
$ which ls cd passwd
/bin/ls
/usr/bin/passwd
whereis <cmd ...> 
Retourne les chemins du binaire, des sources et de la page de manuel des 
commandes passées en argument.
Comme pour la commande which, whereis ne tient pas compte de l'interprétation 
du shell. 
$ whereis ls cd passwd
ls: /bin/ls /usr/share/man/man1/ls.1.gz
cd:
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/m
an/man5/passwd.5.gz
find <chemin(s)> <critère(s)> <action(s)> 
Recherche de fichiers multi­critères :
­ recherche récursive dans le(s) répertoire(s) indiqué(s) (chemin(s))
­ les principaux critères (critère(s)) sont :
  ­name '<motif>'
  ­size <[+|­]taille>
  ­mtime <[+|­]date>
  ­user <nom|UID>
  ­newer <fichier référence>
­ les principales actions (action(s)) sont :
  ­print
  ­ls
  ­exec <commande shell avec {} pour spécifier le fichier trouvé> \;
  ­ok <commande shell avec {} pour spécifier le fichier trouvé> \;
$ find /home /usr ­name 'ab*' ­print 2> /dev/null  
/usr/share/vim/vim61/ftplugin/abaqus.vim
/usr/share/vim/vim61/syntax/abaqus.vim
/usr/share/vim/vim61/syntax/abc.vim
/usr/share/vim/vim61/syntax/abel.vim
$ find /home /usr ­name 'ab*' ­exec basename {} \; 2> /dev/null   
abaqus.vim
abaqus.vim
abc.vim
abel.vim
updatedb 
Création et mise à jour de la base de données utilisée par la commande locate. 
# updatedb
locate 

Recherche de fichiers suivant leur nom ; cette commande est plus rapide que la 
commande find car elle utilise une base de données des fichiers présents sur le 

Cours d'administration Linux
système (voir la commande updatedb). Cependant, si la base de données des 
fichiers n'est pas à jour, le résultat de la recherche n'affiche pas tous les fichiers 
existants. 
$ locate service
/etc/services
/usr/share/man/man5/services.5.gz

Traitement de fichiers et filtres 

cat <fichier ...> 
Affiche le contenu des fichiers texte passés en arguments. 
$ cat fictexte 
Je vis que la Terre ayant besoin de la lumière,
de la chaleur, et de l'influence de ce grand feu,
elle se tourne autour de lui pour recevoir
également en toutes ses parties cette vertu qui
la conserve.
                Savinien de CYRANO DE BERGERAC
$
tac <fichier ...> 
Affiche le contenu inversé (de la dernière ligne à la première) des fichiers texte 
passés en arguments. 
$ tac fictexte 
                Savinien de CYRANO DE BERGERAC
la conserve.
également en toutes ses parties cette vertu qui
elle se tourne autour de lui pour recevoir
de la chaleur, et de l'influence de ce grand feu,
Je vis que la Terre ayant besoin de la lumière,
$
nl <fichier ...> 
Affiche le contenu des fichiers texte passés en arguments en numérotant les 
lignes. 
$ nl fictexte 
     1  Je vis que la Terre ayant besoin de la lumière,
     2  de la chaleur, et de l'influence de ce grand feu,
     3  elle se tourne autour de lui pour recevoir
     4  également en toutes ses parties cette vertu qui
     5  la conserve.
     6                  Savinien de CYRANO DE BERGERAC
$

more <fichier ...> 
Affiche page par page le contenu des fichiers texte passés en arguments.

Pour afficher le contenu d'un fichier : 
$ more /etc/services
# /etc/services:
# $Id: services,v 1.32 2003/01/09 17:56:30 dwalsh Exp $
#
# Network services, Internet style
#
# Note that it is presently the policy of IANA to assign a single well­known
# port number for both TCP and UDP; hence, most entries here have two entries

Cours d'administration Linux
# even if the protocol doesn't support UDP operations.
# Updated from RFC 1700, ``Assigned Numbers'' (October 1994).  Not all ports
# are included, only the more common ones.
#
# The latest IANA port assignments can be gotten from
#       http://www.iana.org/assignments/port­numbers
# The Well Known Ports are those from 0 through 1023.
# The Registered Ports are those from 1024 through 49151
# The Dynamic and/or Private Ports are those from 49152 through 65535
#
# Each line describes one service, and is of the form:

# service­name  port/protocol  [aliases ...]   [# comment]

­­Encore­­(4%)
Dans un tube, pour visualiser le résultat d'une commande : 
$ ps ­ef | more
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Oct23 ?        00:00:19 init [3]  
root         2     1  0 Oct23 ?        00:00:00 [keventd]
root         3     1  0 Oct23 ?        00:00:00 [ksoftirqd_CPU0]
root         4     1  0 Oct23 ?        00:00:00 [ksoftirqd_CPU1]
root         5     1  0 Oct23 ?        00:00:04 [kswapd]
root         6     1  0 Oct23 ?        00:00:00 [bdflush]
root         7     1  0 Oct23 ?        00:01:10 [kupdated]
root         8     1  0 Oct23 ?        00:00:00 [scsi_eh_0]
root         9     1  0 Oct23 ?        00:00:00 [khubd]
root        11     1  0 Oct23 ?        00:01:14 [kjournald]
root       113     1  0 Oct23 ?        00:00:00 [kjournald]
root       114     1  0 Oct23 ?        00:00:46 [kjournald]
root       115     1  0 Oct23 ?        00:18:06 [kjournald]
root       116     1  0 Oct23 ?        00:01:08 [kjournald]
root       484     1  0 Oct23 ?        00:00:03 /usr/sbin/sshd
root       493     1  0 Oct23 ?        00:16:07 syslogd ­m 0
root       497     1  0 Oct23 ?        00:00:00 klogd ­x
rpc        507     1  0 Oct23 ?        00:00:00 portmap
rpcuser    526     1  0 Oct23 ?        00:00:00 rpc.statd
ldap       576     1  0 Oct23 ?        04:21:33 /usr/sbin/slapd ­u ldap ­h ldap:
­­Encore­­
less <fichier ...> 
Affiche page par page le contenu des fichiers texte passés en arguments. 
$ less /etc/services
# /etc/services:
# $Id: services,v 1.32 2003/01/09 17:56:30 dwalsh Exp $
#
# Network services, Internet style
#
# Note that it is presently the policy of IANA to assign a single well­known
# port number for both TCP and UDP; hence, most entries here have two entries
# even if the protocol doesn't support UDP operations.
# Updated from RFC 1700, ``Assigned Numbers'' (October 1994).  Not all ports
# are included, only the more common ones.
#
# The latest IANA port assignments can be gotten from
#       http://www.iana.org/assignments/port­numbers
# The Well Known Ports are those from 0 through 1023.
# The Registered Ports are those from 1024 through 49151

Cours d'administration Linux
# The Dynamic and/or Private Ports are those from 49152 through 65535
#
# Each line describes one service, and is of the form:

# service­name  port/protocol  [aliases ...]   [# comment]

tcpmux          1/tcp                           # TCP port service multiplexer
/etc/services
wc <fichier ...> 
Affiche le nombre de lignes, de mots et de caractères (Word Count) contenus dans 
les fichiers passés en arguments.
­l : affiche uniquement le nombre de lignes (line)
­w : affiche uniquement le nombre de mots (word)
­c : affiche uniquement le nombre de caractères (character) 
$ wc /etc/services
    569    2805   19935 /etc/services
$ ls | wc ­l
      5
od <fichier ...> 
Affiche (en octal par défaut) le contenu des fichiers binaires passés en arguments 
(Octal Dump).
­x : affiche les données en hexadécimal

Affichage en octal du fichier /bin/ls : 
$ od /bin/ls
0000000 042577 043114 000401 000001 000000 000000 000000 000000
0000020 000002 000003 000001 000000 116300 004004 000064 000000
0000040 057254 000001 000000 000000 000064 000040 000010 000050
0000060 000037 000036 000006 000000 000064 000000 100064 004004
0000100 100064 004004 000400 000000 000400 000000 000005 000000
0000120 000004 000000 000003 000000 000464 000000 100464 004004
0000140 100464 004004 000023 000000 000023 000000 000004 000000
0000160 000001 000000 000001 000000 000000 000000 100000 004004
0000200 100000 004004 045073 000001 045073 000001 000005 000000
0000220 010000 000000 000001 000000 050000 000001 150000 004005
...
Affichage en hexadécimal du fichier /bin/ls : 
$ od ­x /bin/ls
0000000 457f 464c 0101 0001 0000 0000 0000 0000
0000020 0002 0003 0001 0000 9cc0 0804 0034 0000
0000040 5eac 0001 0000 0000 0034 0020 0008 0028
0000060 001f 001e 0006 0000 0034 0000 8034 0804
0000100 8034 0804 0100 0000 0100 0000 0005 0000
0000120 0004 0000 0003 0000 0134 0000 8134 0804
0000140 8134 0804 0013 0000 0013 0000 0004 0000
0000160 0001 0000 0001 0000 0000 0000 8000 0804
0000200 8000 0804 4a3b 0001 4a3b 0001 0005 0000
0000220 1000 0000 0001 0000 5000 0001 d000 0805
...
La première colonne correspond au décalage par rapport au début du fichier ; les 
données sont représentés dans les colonnes suivantes. 
strings <fichier ...> 
Affiche le contenu texte des fichiers binaires passés en arguments. 
$ strings /bin/ls
/lib/ld­linux.so.2

Cours d'administration Linux
libtermcap.so.2
_DYNAMIC
_init
tgetent
_fini
_GLOBAL_OFFSET_TABLE_
_Jv_RegisterClasses
tgetstr
__gmon_start__
libc.so.6
strcpy
ioctl
stdout
...
split ­b <taille>k <src> <dst> 
Découpe le fichier src en plusieurs fichiers de la taille spécifiée (en Ko ici) nommés 
dstaa, dstab, dstac, ...
On peut ensuite reconstituer le fichier original à l'aide de la commande cat. 
$ ls ­l
total 1272
­rw­r­­r­­    1 nicolas  users     1296504 Dec  6 15:45 grosfic
$ split ­b 500k grosfic archive_
$ ls ­l
total 2552
­rw­r­­r­­    1 nicolas  users      512000 Dec  6 15:46 archive_aa
­rw­r­­r­­    1 nicolas  users      512000 Dec  6 15:46 archive_ab
­rw­r­­r­­    1 nicolas  users      272504 Dec  6 15:46 archive_ac
­rw­r­­r­­    1 nicolas  users     1296504 Dec  6 15:45 grosfic
$ cat archive_* > grosfic2
$ ls ­l
total 3824
­rw­r­­r­­    1 nicolas  users      512000 Dec  6 15:46 archive_aa
­rw­r­­r­­    1 nicolas  users      512000 Dec  6 15:46 archive_ab
­rw­r­­r­­    1 nicolas  users      272504 Dec  6 15:46 archive_ac
­rw­r­­r­­    1 nicolas  users     1296504 Dec  6 15:45 grosfic
­rw­r­­r­­    1 nicolas  users     1296504 Dec  6 15:46 grosfic2
join <fichier1> <fichier2> 
Effectue une jointure (dans le sens d'une base de données relationnelle) entre 
deux fichiers texte. 
$ cat fic1
1       nicolas
5       franck
3       gerard
12      stef
75      willy
24      gerald
8       alain
84      abdel
9       soraya
$ cat fic2
5       patron
8       commercial
3       directeur
12      administrateur
1       formateur
24      technicien
84      commercial

Cours d'administration Linux
9       secretaire
58      patisssier
$ join fic1 fic2
5 franck patron
8 alain commercial
84 abdel commercial
9 soraya secretaire
$ sort ­n fic1 > fic1s
$ sort ­n fic2 > fic2s
$ join fic1s fic2s
1 nicolas formateur
3 gerard directeur
5 franck patron
8 alain commercial
9 soraya secretaire
12 stef administrateur
24 gerald technicien
84 abdel commercial
paste <fichier1> <fichier2> <...> 
Fusionne ligne par ligne les fichiers passés en argument. 
$ cat fic1
1       nicolas
5       franck
3       gerard
12      stef
75      willy
24      gerald
8       alain
84      abdel
9       soraya
$ cat fic2
5       patron
8       commercial
3       directeur
12      administrateur
1       formateur
24      technicien
84      commercial
9       secretaire
58      patisssier
$ paste fic1 fic2
1       nicolas 5       patron
5       franck  8       commercial
3       gerard  3       directeur
12      stef    12      administrateur
75      willy   1       formateur
24      gerald  24      technicien
8       alain   84      commercial
84      abdel   9       secretaire
9       soraya  58      patisssier

gzip <fichier> 
Compresse le fichier fichier au format GNU Zip ; par défaut, le fichier compressé 
est nommé fichier.gz et l'original est supprimé.
Voir la commande gunzip pour décompresser le fichier généré. 
$ ls ­l
total 1144

Cours d'administration Linux
­rw­r­­r­­    1 nicolas  users     1166532 Dec  6 16:21 fichier
$ gzip fichier 
$ ls ­l
total 140
­rw­r­­r­­    1 nicolas  users      137644 Dec  6 16:21 fichier.gz

gunzip <fichier[.gz]> 
Décompresse le fichier fichier.gz qui est au format GNU Zip ; par défaut, l'extension 
.gz est supprimée dans le nom du fichier non compressé et le fichier original 
compressé est supprimé.
Il n'est pas obligatoire de préciser l'extension .gz dans le nom du fichier passé en 
argument.
Voir la commande gzip pour compresser un fichier. 
$ ls ­l
total 140
­rw­r­­r­­    1 nicolas  users      137644 Dec  6 16:21 fichier.gz
$ gunzip fichier    
$ ls ­l
total 1144
­rw­r­­r­­    1 nicolas  users     1166532 Dec  6 16:21 fichier
tr <liste1> <liste2>
tr ­s <liste>
tr ­d <liste>
Substitue un à un les caratères de la liste1 par ceux de la liste2 dans le texte 
envoyé sur l'entrée standard de la commande.
­d : supprime les caractères de la liste dans le texte envoyé sur l'entrée standard 
de la commande.
­s : supprime les doublons des caractères de la liste dans le texte envoyé sur 
l'entrée standard de la commande. 
$ echo "une chaine de caracteres" | tr "ace" "AkE"
unE khAinE dE kArAktErEs
$ ls ­l
total 1148
­rw­r­­r­­    1 nicolas  users     1166532 Dec  6 16:21 fichier
drwxr­xr­x    2 nicolas  users        4096 Dec  6 16:52 rep
$ ls ­l | tr ­d " "
total1148
­rw­r­­r­­1nicolasusers1166532Dec616:21fichier
drwxr­xr­x2nicolasusers4096Dec616:52rep
$ ls ­l | tr ­s " " 
total 1148
­rw­r­­r­­ 1 nicolas users 1166532 Dec 6 16:21 fichier
drwxr­xr­x 2 nicolas users 4096 Dec 6 16:52 rep
grep <regexp> [fichier ...] 
Affiche uniquement les lignes, des fichiers passés en argument, correspondantes 
à l'expression rationnelle (ou expression régulière) regexp.
­v : inverse le résultat de la commande (affiche seulement les lignes ne 
correspondant pas à regexp)
­c : retourne le nombre de correspondances
­n : affiche les numéros des lignes correspondantes
­l : affiche les noms des fichiers contenant des lignes correpondant à regexp
­i : ne tient pas compte de la casse des caractères 
sed <instr ...> [fichier ...] 

Cours d'administration Linux
Applique les instructions sed sur les fichiers passés en arguments.
­f instr.sed : utilise les instructions sed contenues dans le fichier instr.sed

awk <instr ...> [fichier ...] 
Applique les instructions awk sur les fichiers passés en arguments.
­f instr.awk : utilise les instructions awk contenues dans le fichier instr.awk

cut ­d<délimiteur> ­f<champ(s)> [fichier]
cut ­c<colonne(s)> [fichier] 
Affiche les champs spécifiés avec l'option ­f et séparés par le délimiteur indiqué 
après l'option ­d, ou affiche les colonnes de caractères indiquées après l'option ­c.

Pour afficher les 3ème et 6ème colonnes du fichier /etc/passwd : 
$ cat /etc/passwd            
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
nobody:x:65534:65534:nobody:/home:/bin/sh
sshd:x:100:65534::/var/run/sshd:/bin/false
nicolas:x:1000:100::/home/nicolas:/bin/bash
$ cut ­d":" ­f3,6 /etc/passwd  
0:/root
1:/usr/sbin
2:/bin
3:/dev
65534:/home
100:/var/run/sshd
1000:/home/nicolas
Dans un tube, pour filtrer le résultat d'une commande : 
$ ls ­l
total 1148
­rw­r­­r­­    1 nicolas  users     1166532 Dec  6 16:21 fichier
drwxr­xr­x    2 nicolas  users        4096 Dec  6 16:52 rep
$ ls ­l | cut ­c­10,16­23,56­
total 1148
­rw­r­­r­­ nicolas fichier
drwxr­xr­x nicolas rep
head ­<n> [fichier] 
Affiche les n premières lignes (ou les 10 premières si n n'est pas spécifié). 
$ cat numeros 
ligne 1
ligne 2
ligne 3
ligne 4
ligne 5
ligne 6
ligne 7
ligne 8
ligne 9
ligne 10
ligne 11
$ head ­3 numeros 
ligne 1
ligne 2

Cours d'administration Linux
ligne 3
tail ­<n> [fichier]
tail +<n> [fichier] 
Avec ­, affiche les n dernières lignes (ou les 10 dernières si n n'est pas spécifié).
Avec +, affiche à partir de la nième ligne. 
$ cat numeros 
ligne 1
ligne 2
ligne 3
ligne 4
ligne 5
ligne 6
ligne 7
ligne 8
ligne 9
ligne 10
ligne 11
$ tail ­3 numeros     
ligne 9
ligne 10
ligne 11
$ tail +7 numeros   
ligne 7
ligne 8
ligne 9
ligne 10
ligne 11
sort 
file
Retourne le type des fichiers passés en arguments.
$ file /home /bin/ls /etc/passwd /usr/X11R6/bin/startx
/home:                 symbolic link to `/ramdisk/home'
/bin/ls:               ELF 32­bit LSB executable, Intel 80386, version 1 (SYSV), 
                       for GNU/Linux 2.2.0, dynamically linked (uses shared libs), stripped
/etc/passwd:           ASCII text
/usr/X11R6/bin/startx: Bourne shell script text executable

Documentation 

man [section] <argument> 
Affiche la page de manuel électronique dont le nom est argument (se trouvant dans 
la section du manuel éventuellement spécifié).
­k : retourne le nom des pages de manuel contenant argument

Par exemple : 
$ man 7 signal
Qui affiche : 
SIGNAL(7)              Manuel de l’administrateur Linux              SIGNAL(7)

NOM
       signal ­ Liste des signaux disponibles.

DESCRIPTION
       Linux  supporte  supporte à la fois les signaux POSIX classiques ("sig­

Cours d'administration Linux
       naux standards") et les signaux POSIX temps­réel.

   Signaux standards
       Linux supporte les signaux  standards  indiqués  ci­dessous.  Plusieurs
       d’entre­eux  dépendent  de  l’architecture,  comme  on  le voit dans la
       colonne "Valeur". Lorsque trois valeurs  sont  indiquées,  la  première
       correspond  normalement  aux  architectures  Alpha et Sparc, la seconde
       pour les ix86, PPC et la dernière pour les Mips.  Un ­ dénote un signal
       absent pour l’architecture correspondante.

       Les symboles de la colonne "Action" ont la signification suivante :

       Term   Par défaut, terminer le processus.

       Ign    Par défaut, ignorer le signal.

:
La navigation dans une page de manuel électronique se fait de la même manière 
que dans l'éditeur de texte Vi. 
apropos <argument> 
Idem que man ­k <argument> 
$ apropos signal
alarm                (2)  ­ Programmer un réveil (timer) pour l'émission d'un signal
alarm                (2)  ­ set an alarm clock for delivery of a signal
bosskill             (8)  ­ Envoyer un signal éventuellement mortel à votre chef
gsignal              (3)  ­ software signal facility
kill                 (1)  ­ Envoyer un signal à un processus
kill                 (2)  ­ Envoyer un signal à un processus
kill                 (2)  ­ send signal to a process
killall              (1)  ­ Envoyer un signal à des processus indiqués par leurs noms
...
Les chiffres entre parenthèses indiquent la section du manuel électronique qui 
contient la page indiquée. 

Droits 

chmod <mode> <fichier ...> 
Modifie les droits d'accès (CHange MODe) aux fichiers passés en arguments 
suivant le mode (notation symbolique ou octale).
­R : applique les modifications à toute l'arborescence (recursive). 
$ ls ­l
total 1148
­rw­r­­r­­    1 nicolas  users     1166532 Dec  6 16:21 fichier
drwxr­xr­x    2 nicolas  users        4096 Dec  6 16:52 rep
$ chmod ug+x fichier
$ chmod 754 rep
$ ls ­l
total 1148
­rwxr­xr­­    1 nicolas  users     1166532 Dec  6 16:21 fichier
drwxr­xr­­    2 nicolas  users        4096 Dec  6 16:52 rep

umask [mode] 
Affiche le masque binaire déterminant les droits par défaut sur les nouveaux 
fichiers créés (sans argument) ou modifie ce masque (argument en notation 

Cours d'administration Linux
octale). 
$ umask
0022
$ touch fic1   
$ mkdir rep1
$ ls ­l
total 4
­rw­r­­r­­    1 nicolas  users           0 Mar  2 12:31 fic1
drwxr­xr­x    2 nicolas  users        4096 Mar  2 12:31 rep1
$ umask 0027     
$ touch fic2     
$ mkdir rep2     
$ ls ­l
total 8
­rw­r­­r­­    1 nicolas  users           0 Mar  2 12:31 fic1
­rw­r­­­­­    1 nicolas  users           0 Mar  2 12:32 fic2
drwxr­xr­x    2 nicolas  users        4096 Mar  2 12:31 rep1
drwxr­x­­­    2 nicolas  users        4096 Mar  2 12:32 rep2

Gestion des comptes utilisateur 

passwd [utilisateur] 
Change le mot de passe du compte utilisateur (mot de passe de l'utilisateur 
connecté si pas d'argument).
­l : vérrouille le compte passé en argument (lock)
­u : débloque le compte passé en argument (unlock)
­S : indique l'état du compte passé en argument (status) Processus ps 
Liste les processus (programmes en cours d'exécution).
­ef : affiche tous les processus avec des statistiques supplémentaires
aux : affiche tous les processus avec des statistiques supplémentaires 
$ ps ­ef 
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 04:42 ?        00:00:05 init [2] 
root         2     1  0 04:42 ?        00:00:00 [keventd]
root         3     0  0 04:42 ?        00:00:00 [ksoftirqd_CPU0]
root         4     0  0 04:42 ?        00:00:00 [kswapd]
root         5     0  0 04:42 ?        00:00:00 [bdflush]
root         6     0  0 04:42 ?        00:00:08 [kupdated]
root         7     1  0 04:42 ?        00:00:00 [i2oevtd]
root         8     1  0 04:42 ?        00:00:08 [kjournald]
root        67     1  0 04:42 ?        00:00:03 [kjournald]
root        68     1  0 04:42 ?        00:00:02 [kjournald]
root       136     1  0 04:42 ?        00:00:01 /sbin/syslogd
root       139     1  0 04:42 ?        00:00:00 /sbin/klogd
root       144     1  0 04:42 ?        00:00:00 /usr/sbin/inetd
root       151     1  0 04:42 ?        00:00:00 /usr/sbin/sshd
root       154     1  0 04:42 ?        00:00:00 /usr/sbin/cron
root       158     1  0 04:42 tty2     00:00:00 /sbin/getty 38400 tty2
root       159     1  0 04:42 tty3     00:00:00 /sbin/getty 38400 tty3
root       160     1  0 04:42 tty4     00:00:00 /sbin/getty 38400 tty4
root       161     1  0 04:42 tty5     00:00:00 /sbin/getty 38400 tty5
root       162     1  0 04:42 tty6     00:00:00 /sbin/getty 38400 tty6
root       465     1  0 07:49 tty1     00:00:00 /sbin/getty 38400 tty1
root      2503   151  0 11:46 ?        00:00:00 /usr/sbin/sshd

Cours d'administration Linux
nicolas   2505  2503  0 11:47 ?        00:00:02 /usr/sbin/sshd
nicolas   2506  2505  0 11:47 pts/0    00:00:00 ­bash
nicolas   2517  2506  0 12:09 pts/0    00:00:00 ps ­ef

$ ps aux
USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.3  1272  484 ?        S    04:42   0:05 init [2] 
root         2  0.0  0.0     0    0 ?        SW   04:42   0:00 [keventd]
root         3  0.0  0.0     0    0 ?        SWN  04:42   0:00 [ksoftirqd_CPU0]
root         4  0.0  0.0     0    0 ?        SW   04:42   0:00 [kswapd]
root         5  0.0  0.0     0    0 ?        SW   04:42   0:00 [bdflush]
root         6  0.0  0.0     0    0 ?        SW   04:42   0:08 [kupdated]
root         7  0.0  0.0     0    0 ?        SW   04:42   0:00 [i2oevtd]
root         8  0.0  0.0     0    0 ?        SW   04:42   0:08 [kjournald]
root        67  0.0  0.0     0    0 ?        SW   04:42   0:03 [kjournald]
root        68  0.0  0.0     0    0 ?        SW   04:42   0:02 [kjournald]
root       136  0.0  0.4  1344  596 ?        S    04:42   0:01 /sbin/syslogd
root       139  0.0  0.9  1940 1152 ?        S    04:42   0:00 /sbin/klogd
root       144  0.0  0.3  1248  428 ?        S    04:42   0:00 /usr/sbin/inetd
root       151  0.0  0.9  2784 1208 ?        S    04:42   0:00 /usr/sbin/sshd
root       154  0.0  0.5  1652  684 ?        S    04:42   0:00 /usr/sbin/cron
root       158  0.0  0.3  1252  468 tty2     S    04:42   0:00 /sbin/getty 38400
root       159  0.0  0.3  1252  468 tty3     S    04:42   0:00 /sbin/getty 38400
root       160  0.0  0.3  1252  468 tty4     S    04:42   0:00 /sbin/getty 38400
root       161  0.0  0.3  1252  468 tty5     S    04:42   0:00 /sbin/getty 38400
root       162  0.0  0.3  1252  468 tty6     S    04:42   0:00 /sbin/getty 38400
root       465  0.0  0.3  1252  468 tty1     S    07:49   0:00 /sbin/getty 38400
root      2503  0.0  1.3  5704 1676 ?        S    11:46   0:00 /usr/sbin/sshd
nicolas   2505  0.1  1.4  5740 1792 ?        S    11:46   0:02 /usr/sbin/sshd
nicolas   2506  0.0  1.0  2224 1260 pts/0    S    11:46   0:00 ­bash
nicolas   2518  0.0  1.2  3564 1584 pts/0    R    12:09   0:00 ps aux
pstree 
Liste les processus de façon arborescente.
­p : affiche aussi les PID des processus 
$ pstree
init­+­cron
     |­6*[getty]
     |­i2oevtd
     |­inetd
     |­keventd
     |­3*[kjournald]
     |­klogd
     |­sshd­­­sshd­­­sshd­­­bash­­­pstree
     `­syslogd
$ pstree ­p
init(1)­+­cron(154)
        |­getty(158)
        |­getty(159)
        |­getty(160)
        |­getty(161)
        |­getty(162)
        |­getty(465)
        |­i2oevtd(7)
        |­inetd(144)
        |­keventd(2)
        |­kjournald(8)
        |­kjournald(67)

Cours d'administration Linux
        |­kjournald(68)
        |­klogd(139)
        |­sshd(151)­­­sshd(2503)­­­sshd(2505)­­­bash(2506)­­­pstree(2520)
        `­syslogd(136)
jobs 
Liste les "jobs" (processus lancés par le shell courant). 
$ sleep 10m &
[1] 2523
$ sleep 20m &  
[2] 2524
$ sleep 30m & 
[3] 2525
$ jobs
[1]   Running                 sleep 10m &
[2]­  Running                 sleep 20m &
[3]+  Running                 sleep 30m &
bg %<job> 
Relance le "job" job en arrière plan. 
$ sleep 40m
         [Ctrl + z pour suspendre le processus lancé en avant plan]
[4]+  Stopped                 sleep 40m
$ bg %4
[4]+ sleep 40m &
$ jobs
[1]   Running                 sleep 10m &
[2]   Running                 sleep 20m &
[3]­  Running                 sleep 30m &
[4]+  Running                 sleep 40m &
fg %<job> 
Relance le "job" job en avant plan. 
$ jobs
[1]   Running                 sleep 10m &
[2]   Running                 sleep 20m &
[3]­  Running                 sleep 30m &
[4]+  Running                 sleep 40m &
$ fg %4
sleep 40m

kill <signal> %<job> 
Envoi le signal signal au "job" job. 
kill <signal> <pid> 
Envoi le signal signal au processus dont le PID est pid. 
nohup <cmd> & 
Exécute la commande cmd en tâche de fond qui survivra à la déconnexion de 
l'utilisateur (no hang up). 
nice [gentillesse] <cmd> & 
Exécute la commande cmd avec la priorité définie par la gentillesse (nice) spécifiée 
en argument. 
renice <gentillesse> <PID> 
Redéfini la priorité du processus identifié par son PID suivant la gentillesse (nice) 
spécifiée. 
top 
Affiche une liste ­ rafraîchie régulièrement ­ des processus en cours d'exécution et 
permet de les contrôler (équivalent de kill et renice) ; affiche aussi des statistiques 
d'utilisation de la mémoire.

Cours d'administration Linux
 11:47:56 up  7:05,  2 users,  load average: 0.03, 0.01, 0.00
28 processes: 27 sleeping, 1 running, 0 zombie, 0 stopped
CPU states:   0.1% user,   0.3% system,   0.0% nice,  99.6% idle
Mem:    125896K total,    64268K used,    61628K free,    15068K buffers
Swap:   498004K total,        0K used,   498004K free,    32608K cached

  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME COMMAND
 2510 nicolas   17   0   928  928   748 R     2.8  0.7   0:00 top
    1 root       8   0   484  484   424 S     0.0  0.3   0:05 init
    2 root       9   0     0    0     0 SW    0.0  0.0   0:00 keventd
    3 root      19  19     0    0     0 SWN   0.0  0.0   0:00 ksoftirqd_CPU0
    4 root       9   0     0    0     0 SW    0.0  0.0   0:00 kswapd
    5 root       9   0     0    0     0 SW    0.0  0.0   0:00 bdflush
    6 root      11   0     0    0     0 SW    0.0  0.0   0:08 kupdated
    7 root       9   0     0    0     0 SW    0.0  0.0   0:00 i2oevtd
    8 root       9   0     0    0     0 SW    0.0  0.0   0:08 kjournald
   67 root       9   0     0    0     0 SW    0.0  0.0   0:03 kjournald
   68 root       9   0     0    0     0 SW    0.0  0.0   0:02 kjournald
  136 root       9   0   596  596   488 S     0.0  0.4   0:01 syslogd
  139 root       9   0  1152 1152   408 S     0.0  0.9   0:00 klogd
  144 root       9   0   428  428   376 S     0.0  0.3   0:00 inetd
  151 root       9   0  1208 1208  1080 S     0.0  0.9   0:00 sshd
  154 root       8   0   684  684   564 S     0.0  0.5   0:00 cron
  158 root       9   0   468  468   408 S     0.0  0.3   0:00 getty
  159 root       9   0   468  468   408 S     0.0  0.3   0:00 getty
  160 root       9   0   468  468   408 S     0.0  0.3   0:00 getty
  161 root       9   0   468  468   408 S     0.0  0.3   0:00 getty
  162 root       9   0   468  468   408 S     0.0  0.3   0:00 getty
  465 root       9   0   468  468   408 S     0.0  0.3   0:00 getty
 2152 root       9   0  1676 1676  1516 S     0.0  1.3   0:00 sshd
 2154 nicolas    9   0  1792 1792  1604 S     0.0  1.4   0:00 sshd
 2155 nicolas    9   0  1256 1256  1024 S     0.0  0.9   0:00 bash
 2503 root       9   0  1676 1676  1516 S     0.0  1.3   0:00 sshd
 2505 nicolas   10   0  1792 1792  1604 S     0.0  1.4   0:00 sshd
 2506 nicolas   12   0  1260 1260  1024 S     0.0  1.0   0:00 bash

Temps 

date 
Affiche ou modifie la date système.
+"FORMAT" : affiche la date suivant un format définit par une chaîne de caractères 
composée de séquences représentant des éléments de la date.
­s "mm/jj/aaaa hh:mm:ss" : définit la date système (droits administrateur 
obligatoires). 

$ date
Mon Dec  6 17:06:33 CET 2004
$ date +"nous sommes le %d/%m/%Y"
nous sommes le 06/12/2004
# date
Mon Dec  6 17:07:07 CET 2004
# date ­s "03/02/2005 10:30:00"  
Wed Mar  2 10:30:00 CET 2005
# date
Wed Mar  2 10:30:02 CET 2005
sleep <durée> 

Cours d'administration Linux
Attend sans rien faire autant de temps que spécifié en argument. L'unité par 
défaut est la seconde.
$ sleep 3  # attend 3 secondes
$ sleep 3s # idem que la ligne précédente
$ sleep 3m # attend 3 minutes
$ sleep 3h # attend 3 heures
$ sleep 3d # attend 3 jours

cal [[mois] année] 
Affiche le calendrier du mois en cours (pas d'argument), de l'année en cours (un 
argument) ou du mois et de l'année spécifiés (deux arguments).

Le mois en cours (en date du 17/05/2006) : 
$ cal
      Mai 2006
di lu ma me je ve sa
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Le mois d'avril 2006 (attention à l'année 06 signifie l'an 6 après JC !) : 
$ cal 04 06
      Avril 6
di lu ma me je ve sa
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

$ cal 04 2006
     Avril 2006
di lu ma me je ve sa
                   1
 2  3  4  5  6  7  8
 9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
L'année 2006 complète : 
$ cal 2006
                             2006

      Janvier               Février                 Mars
di lu ma me je ve sa  di lu ma me je ve sa  di lu ma me je ve sa
 1  2  3  4  5  6  7            1  2  3  4            1  2  3  4
 8  9 10 11 12 13 14   5  6  7  8  9 10 11   5  6  7  8  9 10 11
15 16 17 18 19 20 21  12 13 14 15 16 17 18  12 13 14 15 16 17 18
22 23 24 25 26 27 28  19 20 21 22 23 24 25  19 20 21 22 23 24 25
29 30 31              26 27 28              26 27 28 29 30 31

       Avril                  Mai                   Juin
di lu ma me je ve sa  di lu ma me je ve sa  di lu ma me je ve sa
                   1      1  2  3  4  5  6               1  2  3
 2  3  4  5  6  7  8   7  8  9 10 11 12 13   4  5  6  7  8  9 10

Cours d'administration Linux
 9 10 11 12 13 14 15  14 15 16 17 18 19 20  11 12 13 14 15 16 17
16 17 18 19 20 21 22  21 22 23 24 25 26 27  18 19 20 21 22 23 24
23 24 25 26 27 28 29  28 29 30 31           25 26 27 28 29 30

...Surveillance 

who 
Liste les utilisateurs connectés au système. 
who am i 
Liste l'utilisateur actuellement connecté au système. 
whoami 
Retourne le login de l'utilisateur actuellement connecté au système. 
finger [utilisateur ...] 
Liste les utilisateurs connectés au système (pas d'argument) ou détaille les 
comptes des utilisateurs passés en arguments. Communication write 
[utilisateur[@hôte]] 
Affiche un message sur le terminal de l'utilisateur passé en argument. 
wall 
Affiche un message sur le terminal des utilisateurs connectés. 
mail [utilisateur[@hôte]] 
Lit la boîte aux lettres de l'utilisateur connecté (pas d'argument) ou envoi un 
message électronique dans la boîte aux lettres de l'utilisateur passé en argument. 
talk 
Établi une session de messagerie instantanée (chat) avec l'utilisateur passé en 
argument. 
mesg 
Affiche si l'utilisateur actuellement connecté accepte ou non les messages 
provenant d'autres utilisateurs. 
mesg y 
Autorise les messages provenant d'autres utilisateurs. 
mesg n 
Refuse les messages provenant d'autres utilisateurs. 

Cours d'administration Linux
5.0 Administration

les deux modes d'administration
Unix supporte 2 modes d'administration :

« À la main » :
• Édition (manuelle) des fichiers de configuration
• Utilisation (manuelle) des commandes d'administration
• Utilisation (manuelle) des gestionnaires de paquets RPM ou DEBIAN
• Édition de scripts de commande (langage : shell, perl, awk, ...)

Avec des logiciels d'administration (graphique ou mode caractère) :
• Qui manipulent les fichiers de configuration
• Qui utilisent des commandes d'administration standard ou 
spécifiques
• Souvent incontournables, avec des Unix propriétaires (HP : SAM)
• Quelques outils : linuxconf, webmin, DrakConf

6.0 Gestion des utilisateurs

Lorsque diverses personnes ont accès à un système, il est nécessaire que 
l'administrateur système gère les utilisateurs. Pour ceci, les commandes 
usuelles et les fichiers à configurer doivent être connus. 

Les fichiers importants à connaître sont : 

• le fichier /etc/passwd 
• le fichier /etc/group 
• le fichier /etc/shadow

Le fichier /etc/passwd

Le fichier /etc/passwd contient toutes les informations relatives aux 
utilisateurs (login, mots de passe, ...). Seul le superutilisateur (root) doit 
pouvoir le modifier. Il faut donc modifier les droits de ce fichier de façon à 

Cours d'administration Linux
ce qu'il soit en lecture seule pour les autres utilisateurs. 

Ce fichier possède un format spécial permettant de repérer chaque 
utilisateur, chacune de ses lignes possède le format suivant:

nom_du_compte : mot_de_passe : numero_utilisateur : numero_de_groupe
: commentaire : répertoire : 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 (codé bien sûr)
• l'entier qui identifie l'utilisateur pour le système d'exploitation 
(UID=User ID, identifiant utilisateur)
• 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
• la commande est celle exécutée après connexion au système (c'est 
fréquemment un interpréteur de commandes)
• Il est important de savoir que les mots de passe situés dans ce fichier 
sont chiffrés. Il est donc inutile de l'éditer et de remplacer le champ 
mot_de_passe en tapant directement le mot de passe, cela conduirait 
uniquement au blocage du compte. 
• Lorsqu'un utilisateur se connecte, le programme login compare le mot 
de passe tapé par l'utilisateur (après l'avoir chiffré) à celui qui est 
dans le fichier passwd. Si ils sont différents, la connexion ne peut 
être établie. 
• Pour interdire l'utilisation, il suffit de remplacer le mot de passe 
chiffré par une étoile : "*". 
• Les accès à un compte peuvent éventuellement être ouverts en 
laissant le champ mot_de_passe 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'enter 2 fois 
son nouveau mot de passe). 
• Pour sécuriser les mots de passe, le champ mot_de_passe est 
remplacé par X et les mots de passe criptés sont enregistrés dans le 
fichier /etc/shadow sur lequel seul « Root » a le droit de lecture.
• UID : identifiant (unique) de chaque compte utilisateur. Les nombres 
de 0 à 99 sont fréquemment réservés à des comptes propres à la 

Cours d'administration Linux
machine. Les valeurs supérieures à 100 sont elles réservées aux 
comptes utilisateurs. 
• GID : identifiant de groupe. Le groupe par défaut (nommé group) 
porte le numéro 50. 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. 

Le fichier /etc/group

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. 

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

nom_de_groupe : champ_special : numero_de_groupe : membre1, membre2

Le champ spécial est fréquemment vide. 
Le numéro de groupe est le numéro qui fait le lien entre les fichiers 
/etc/group et /etc/passwd

Le fichier /etc/shadow

• Le fichier /etc/shadow contient les mots de passe chiffrés
• ne peut être lu uniquement par le root ou les membres du groupe 
shadow
• contient des informations relatives à l'expiration des mots de passe

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

7.0 Linux architecture

Principe de nommage des périphériques 

 sous Unix, tout est fichier. Tous les périphériques
­ disques,

Cours d'administration Linux
­ clavier, souris,
­ carte son,
­ ports d'E/S
­ sockets réseau,
­ mémoire ...
sont représentés par un fichier spécial dans le répertoire /dev .
Comme sous Windows( où on a les lecteurs A ,B, C,D,E,.. Z) , le principe 
adopté sous Linux est détaillé sur l’ Annexe3.

partition des disques

la partition est la division de l'espace de stockage d'un disque dur en zones 
indépendantes, de manière à installer plusieurs systèmes d'exploitation ou 
en faire d’autres usages.
La plupart des systèmes d'exploitation (fixes) installés utilisent un disque 
plusieurs partitions:
­ partition « système » (fichiers systèmes, fichiers de configuration ...)
­ partition « utilisateurs » (données des utilisateurs)
Des Avantages
­ exploitation plus sécurisée
­ on peut formater une partition indépendamment des autres
­ on peut utiliser une partition en lecture seule
Outils
fips, fdisk, Partition Magic (windows)
− fdisk, parted (linux)*

Les systèmes de fichiers

Sous LINUX on trouve des partitions, ex:boot,var,tmp,home qui permettent 
d'organiser le systeme de fichiers. Au départ EXT2 sous UNIX, aujourd'hui 
EXT3 par défaut correspond a EXT2 plus le journal, qui a l'avantage de 
consigner tout ce que fait le système, et qui en cas de crash lui permet de 
démarrer plus rapidement sans erreurs. Les deux formats sont compatibles 
IL existe toute sorte de systèmes de fichiers

Non journalisés
   * Ext et Ext2 : Extented FS version 2 (Linux, BSD)
   * FAT : File Allocation Table (DOS/Windows, Linux, BSD, OS/2, Mac OS 
X). Se décompose en plusieurs catégories :
         o FAT12 ;
         o FAT16 ;

Cours d'administration Linux
         o FAT32 ;
         o VFAT.
   * FFS : Fast File System (BSD, Linux expérimental)
   * HFS : Hierarchical File System (Mac OS, Mac OS X, Linux)
   * HPFS : High Performance FileSystem (OS/2, Linux)
   * minix fs (minix, Linux)
   * S5 (UNIX System V, Linux)
   * UFS : Unix File System (BSD, Linux en lecture seule)

Journalisés
   * BFS (BeOS, Haiku, Linux en lecture seule et expérimental)
   * Ext3 : Extented FS version 3 ­ notamment pour l'ajout de la 
journalisation (Linux, BSD)
   * Ext4 : Extented FS version 4 ­ notamment pour étendre sa capacité à 
1024 peta­octets (Linux expérimental)
   * HFS+ (Mac OS X, Linux)
   * JFS (AIX, OS/2, Linux)
   * JFS2 AIX5
   * LFS : (Linux)
   * NSS : Novell Storage Services (Netware et Suse Linux)
   * NTFS : New Technology FileSystem (Windows NT/2000/XP, Linux 
(écriture disponible grace au pilote NTFS­3G), Mac OS X en lecture seule)
   * ReiserFS (Linux, BSD en lecture seule)
   * Reiser4 (Linux expérimental)
   * Spufs : Synergistic processing unit filesystem
   * UFS+ : Unix FS + journal (BSD, Linux en lecture seule)
   * XFS (Irix, Linux, BSD en lecture seule)
   * ZFS : Zettabyte FileSystem (Solaris10, FreeBSD 8.0)

Réseau
   * AFS Andrew File System : (Aix, Linux)
   * Coda (Systèmes de fichiers informatique) (Linux)
   * NFS (tous les Unix, Linux, Mac OS X) (Windows pour la 4)
   * NCP NetWare Core Protocol (Novell NetWare, Linux en client seul)
   * SSHFS (tous les Unix ?, Linux)
   * SMB ou Server message block (Windows) (Linux, BSD et Mac OS X via 
Samba)
   * CIFS (Evolution de SMB, supporté par Samba ainsi que par Windows 
2000 et XP)

Cluster
   * GPFS, General Parallel File Sytem : Linux, AIX
   * LustreFS, Compression de Linux et de Cluster : Linux

Cours d'administration Linux
   * OCFS2, développé par Oracle : Linux
   * PVFS2, Parallel Virtual FileSystem version 2 : Linux, Unix

Spécialisés
   * CFS Cryptographic File System : FS chiffré (BSD, Linux)
   * cramfs : FS compressé (Linux en lecture seule)
   * EFS Encrypting File System : FS chiffré au dessus de NTFS (Windows)
   * ISO 9660 : en lecture seule sur tous les systèmes lisant les 
CDROM/DVDROM de données
   * JFFS et JFFS2 : FS pour support physique sans block, typiquement des 
cartes flash. Il est compressé et journalisé (Linux)
   * QNX4fs : FS utilisé pour le temps réel (QNX, Linux en lecture seule)
   * UDF : le format de disque universel (système de fichiers des DVD­ROM 
et des disques optiques réinscriptibles tels les CD­RW, DVD±RW, etc.)

Formater un système de fichiers

La commande mkfs (make filesystem) permet de formater un système de 
fichiers. Exemple :

 # mkfs ­t ext3 /dev/sdc1.

Le swap

 Partition de swap

Le SWAP signifie échange, il s'agit d'une mémoire virtuelle en effet lorsque 
la mémoire de l'ordinateur arrive à saturation, le systéme écrit sur une 
partition SWAP de façon à liberer de la mémoire.Il est possible de créer une 
partition SWAP grace à la commande mkswap :

 # mkswap /dev/sdb5

On utilisera la commande swapon /dev/sdb5 pour l'activer :

 # swapon /dev/sdb5

Avec la commande 'free,' il est possible de vérifier si le swap est activé :

 # free
 ...
 Swap:      1951856      65080    1886776

Cours d'administration Linux
Pour lister les partitions SWAP :

 # cat /proc/swaps

Voir le tableau comparatif par OS à l’Annexe5.

montage des périphériques

L'opération de montage des périphériques :
Windows utilisent la notion d'unité logique pour fournir un accès aux 
ressources de stockage
( A: ­> floppy, C: ­> disque dur, ... E: ­> lecteur CD)

Linux utilise la notion de montage :
­ un périphérique est associé à un point de montage (répertoire) par une
« opération de montage » (commande mount)
­ la commande mount peut être utilisée « à la main »
exple : mount /dev/hda1 /
mount /dev/sda1 /mnt/removable

• tous les périphériques montés bénéficient du « cache disque »
• avant d'extraire un périphérique amovible (disquette, clef USB, ...), on 
DOIT le
démonter (umount), pour synchroniser les écritures (vidage du cache disk)
tous les montages permanents sont indiqués dans le fichier /etc/fstab

8.0 Gestion des fichiers:Propriétaires et droits d'accés

Les droits d'accès

Fonctionnement

Chaque fichier du système est associé à des droits d'accès. Ceux­ci sont 
affichés par la commande ls en utilisant le format long : ls ­l.

Ces droits d'accès sont résumés en 10 caractères de la forme suivante :

type u_read u_write u_exec g_read g_write g_exec o_read o_write o_exec

Exemple : drwxr­xr­x

Cours d'administration Linux
Le premier caractère représente le type de fichier :

Types de fichier
Type Description
­ Regular file : fichier normal
d Directory : répertoire
l Link : lien
b Block device : périphérique bloc (périphérique à accès direct)
Character device : périphérique caractère (périphérique à accès 
c
séquentiel)
s Socket

Le reste de la chaîne est scindé en 3 blocs de 3 caractères qui représentent 
les différents niveaux de droit :

• user(u) : droits concernant le propriétaire du fichier,
• group(g) : droits concernant les autres membres du même groupe 
que le propriétaire du fichier,
• other(o) : droits concernant tous les autres utilisateurs.

Les trois caractères d'un bloc sont les suivants, dans l'ordre :

• r (read) : droit de lire le fichier / lister le contenu du répertoire
• w (write) : droit d'écrire dans le fichier / modifier le répertoire 
(créer/supprimer des fichiers)
• x (execute) : droit d'exécuter le fichier (programme ou script) / ou de 
traverser le répertoire (changer le répertoire courant).

Si l'un des droits n'est pas accordé, un tiret est affiché à sa place.

Exemple :­rwxrw­r­­  ...  script.sh

Le fichier script.sh est un fichier normal (­) et est associé aux droits 
suivants :

• Le propriétaire peut lire, écrire et exécuter ce fichier (rwx),

Cours d'administration Linux
• Les membres du même groupe que le propriétaire peuvent lire et 
écrire, mais pas exécuter ce fichier (rw­),
• Les autres utilisateurs peuvent seulement lire ce fichier (r­­).

Modifier les droits d'accès

La commande chmod permet de modifier les droits associés à un fichier.

Enlever le droit de lecture (r) aux autres (o)

~$ chmod o­r nom_de_fichier

Ajouter un droit d'écriture (w) au groupe (g)

~$ chmod g+w nom_de_fichier

Combinaison des deux commandes :

~$ chmod o­r,g+w nom_de_fichier

Spécifier tous les droits avec une valeur numérique :

~$ chmod 0754 nom_de_fichier

r=4;  w=2;   x=1

Les droits par défaut et la commande umask

Les droits par défaut d'un nouveau fichier sont définis par rapport à un 
masque des droits défini pour chaque utilisateur avec la commande 
umask.

Afficher le masque courant :

~$ umask
0022

Exemples :

Cours d'administration Linux
• Un fichier est créé avec les droits par défaut 666 (rw­rw­rw­) filtré par 
le masque 022 :

666 & ~022 = 644  rw­ r­­ r­­

• Un >répertoire est créé avec les droits par défaut 777 (rwxrwxrwx) 
filtré par le masque 022 :

777 & ~022 = 755  rwx r­x r­x

Les propriétaires et les groupes

La commande chown

La commande chown permet de changer le propriétaire d'un fichier ou d'un 
répertoire. Il faut être propriétaire du fichier ou répertoire, ou root selon la 
ressource que l'on souhaite modifier.

La commande chgrp

Comme la commande chown, la commande chgrp change le groupe 
propriétaire d'un fichier ou d'un répertoire.

9.0 Principes de fonctionnement de Linux

Lancement du système : boot et chargement du noyau
• Au boot le BIOS exécute le MBR (Master Boot Record) situé sur le 
premier
secteur (512 octets) du support bootable choisi (disque, CD, clef USB, ...)
• Le MBR :
­ scanne le disque pour trouver LA partition bootable (flag)
­ lance le boot loader (chargeur de démarrage) du secteur de boot (premier
secteur) de la partition bootable

Le bootloader :
­ charge le noyau en mémoire et l'exécute
­ charge le ramdisk initrd.img en mémoire

Sur architecture PC, il existe deux programmes permettant de charger le 
noyau Linux, ou un autre système d'exploitation: Lilo (Linux Loader) et 
Grub (Grand Unified Bootloader)

Cours d'administration Linux
Les messages du noyau Linux

Une fois chargé en mémoire, le noyau va se charger de détecter et 
d'initialiser les composants de la carte mère et les périphériques présents. 
Ces messages sont affichés sur l'écran lors du démarrage. La commande 
dmesg permet de consulter ces messages ultérieurement.

Le processus init 

Lancement du système : boot ­> init

• Une fois le noyau chargé en mémoire, il lance le premier 
processus :/bin/init
• init est le père de tous les autres processus 
• init lit le fichier /etc/inittab pour savoir :
­ quel est le fichier à exécuter pour continuer le chargement du système
­ quel est le runlevel (niveau d'exécution) par défault
­ comment lancer les services pour un runlevel donné

La syntaxe de ce fichier est la suivante : code:niveau:action:commande

Exemple de fichier /etc/inittab :

 # Indique le runlevel par défaut (ici le 2)
 id:2:initdefault:
 # Script d'initiation du boot du système
 si::sysinit:/etc/init.d/rcS
 # mode mono­utilisateur
 ~~:S:wait:/sbin/sulogin

 # runlevel 0 : arret du système
 l0:0:wait:/etc/init.d/rc 0
 # runlevel 1 : mono­utilisateur
 l1:1:wait:/etc/init.d/rc 1
 # runlevel 2 : runlevel par défaut sur Debian
 l2:2:wait:/etc/init.d/rc 2
 # runlevel 3, 4 et 5 : autres runlevels disponible
 l3:3:wait:/etc/init.d/rc 3
 l4:4:wait:/etc/init.d/rc 4
 l5:5:wait:/etc/init.d/rc 5
 # runlevel 6 : redémarrage du système
 l6:6:wait:/etc/init.d/rc 6

Cours d'administration Linux
 # mode emergency
 z6:6:respawn:/sbin/sulogin
 # lance le reboot quand on appuie sur CTRL­ALT­DEL
 ca:12345:ctrlaltdel:/sbin/shutdown ­t1 ­a ­r now

 # Pour les onduleurs
 pf::powerwait:/etc/init.d/powerfail start
 pn::powerfailnow:/etc/init.d/powerfail now
 po::powerokwait:/etc/init.d/powerfail stop
 # Démarre les ttys en mode console
 1:2345:respawn:/sbin/getty 38400 tty1
 2:23:respawn:/sbin/getty 38400 tty2
 3:23:respawn:/sbin/getty 38400 tty3
 4:23:respawn:/sbin/getty 38400 tty4
 5:23:respawn:/sbin/getty 38400 tty5
 6:23:respawn:/sbin/getty 38400 tty6

Les runlevels et les scripts de démarrage

Une fois que le système a effectué le runlevel S (initialisation minimale, 
comme par exemple vérifier l'intégrité des systèmes de fichiers), il va dans 
le runlevel 2 .

Les niveaux de Runlevel

• S: Initialisation commune à tous les runlevels
• 0: Arrêt de la machine
• 1: mode Single 
• 2:mode multi­utilisateur sans prise en compte du réseau,
• 3:mode multi­utilisateur avec prise en charge du réseau et services 
(fonctionnement normale)
• 4: mode non utilisé et laissé à la disposition de l’utilisateur
• 5: Fonctionnement normale avec interface graphique au démarrage
• 6: Reboot de la machine

Le principe de fonctionnement est le suivant :

• tous les scripts de démarrage et d'arrêt sont stockés dans le 
répertoire /etc/init.d/
• les répertoires rc0.d, rc1.d ... rc6.d contiennent des liens qui vont 

Cours d'administration Linux
appeller les scripts d'initialisation.
• Si le lien commence par un S, le script va etre appellé avec l'option 
start
• Si le lien commence par un K, le script va etre appellé avec l'option 
stop
• le numéro qui suit le S ou le K indique l'ordre de démarrage ou 
d'arrêt.

Exemple, le serveur web :

Le script de démarrage et d'arrêt est situé dans /etc/init.d :

 $ ls ­l /etc/init.d/httpd
 ­rwxr­xr­x 1 root root 3099 sep 18  2007 /etc/init.d/httpd

Le lien suivant indique qu'il faut appeller ce script avec l'option start dans 
le runlevel 2 

 $ ls ­l /etc/rc2.d/K15httpd
 
lrwxrwxrwx 1 root root 15 nov 6 16:31 /etc/rc2.d/K15httpd 
­>../init.d/httpd

Le lien suivant indique qu'il faut appeller ce script avec l'option stop dans le 
runlevel 0 (arrêt de la machine):

 $ ls ­l /etc/rc0.d/K15httpd
lrwxrwxrwx 1 root root 15 nov 6 16:31 /etc/rc0.d/K15httpd 
­>../init.d/httpd

La commande chkconfig

attention: spécifique à REDHAT

Pour savoir en quel(s) runlevel est lancé un service (ie. postgresql)

# chkconfig ­­list postgresql

Pour positionner le lancement d'un service à un runlevel donné (ie. 3, 4 et 
5)

Cours d'administration Linux
# chkconfig ­­level 345 postgresql

Commandes pour manipuler les runlevel

La commande runlevel permet de connaître le runlevel dans lequel on est :

 # runlevel
 N 2

Dans cet exemple, on est dans le runlevel n°2 (fonctionnement sous 
Debian). Le N nous indique le runlevel précédent (N (No) : pas de runlevel 
précédent)

La commande init ou la commande telinit permet de changer de runlevel. 
Exemple:

 # init 6

Arréter ou redémarrer le système

Pour arréter le systeme:

• Commun à tous les UNIX: shutdown

• Spécifique Linux et systèmes récents : halt et reboot

 # shutdown ­h now & (& pour garder la main)

Il existe différentes options telles que :

• ­h (h pour halt) : arrêt immédiat
• ­r now (r pour reboot) : redémarrage immédiat
• ­h +10 : arrêt différé dans 10 minutes
• ­h 10:30 : arrêt à 10h30
• ­c : annule l'arrêt

10.0  gestion des processus

Un processus est un programme en cours d'exécution. Par exemple, chaque 
fois que l'on lance la commande ls, un processus est créé durant 
l'exécution de la commande.

Cours d'administration Linux
Un processus est identifié par un numéro unique que l'on appelle le PID 
(Process IDentifiant).

Un processus dispose d'un processus père que l'on appelle le PPID (Parent 
PID).

La particularité d'un processus est de s'exécuter avec les droits accordés à 
l'utilisateur qui a lancé la commande. Ceci participe fortement à la sécurité 
du système. Ainsi, si un utilisateur contracte un programme malveillant 
(un virus par exemple), le processus sera soumis au droit d'accès de cet 
utilisateur, et ne pourra pas effectuer des opérations non autorisées 
(comme par exemple modifier le fichier de mots de passe).

Au démarrage de l'ordinateur, le système charge le noyau Linux qui se 
charge de l'initialisation du matériel et de la détection des périphériques. 
Ceci fait, il démarre ensuite le processus init qui a comme particularité 
d'être le premier processus et de disposer du PID n°1. Ce processus 
démarre ensuite des processus noyaux (noté entre crochet), et les premiers 
processus systèmes.

Chaque processus a ainsi un père (sauf init), et ce même processus peut 
être le père d'autres processus, etc.

La commande pstree permet de visualiser l'arbre des processus. L'option ­p 
permet de visualiser les PID de chaque processus.

Afficher la liste des processus

La commande ps permet d'afficher les processus. Utilisée sans option, la 
commande ps affiche les processus de l'utilisateur courant associé au 
terminal courant.

Pour connaître tous les processus, y compris ceux qui ne sont pas associés 
au terminal courant, on utilise les options aux (notation BSD) et ­ef 
(notation Unix). Pour connaître la totalité des options, consulter la page de 
manuel de la commande ps (man ps).

Cours d'administration Linux
Les signaux

Définition

Les signaux offrent un mécanisme permettant d'envoyer un message à un 
processus en cours d'exécution. On se sert généralement des signaux pour 
terminer un processus, lui indiquer de relire sa configuration, etc.

Les différents signaux

Pour connaître la liste des signaux, il suffit de consulter la page de manuel 
de signal

Envoyer un signal à un processus

La commande kill permet d'envoyer un signal au processus. Syntaxe :

 $ kill ­<numéro du signal ou nom du signal> <PID du processus>

On peut connaitre le PID du processus en utilisant la commande ps, ou 
bien utiliser la commande pidof

 Exemple
$ pidof cupsd
 2571
 $ kill ­15 2571

La commande killall permet d'indiquer le nom du processus plutôt que son 
PID, et va envoyer le signal à tous les processus possédant ce nom.

Autres commandes affichant les processus

La commande top permet d'afficher (entre autres) la liste des processus de 
manière dynamique (rafraîchit la liste toutes les 3 secondes).

Lorsque la commande top fonctionne, les lettres suivantes permettent de 
changer son fonctionnement :

• h : affiche l'aide
• q : quitte la commande top

Cours d'administration Linux
• M : tri les processus par utilisation de la mémoire (du plus gourmand 
au plus sobre)
• P : tri les processus par utilisation du processeur (du plus gourmand 
au plus sobre)
• s : permet de changer la durée de rafraîchissement de top
• k : permet d'envoyer un signal à un processus

11.0 Installation d'applications

gestionnaires de paquets  RPM et Débian
GNU/Linux et les applications tournant sous ce système peuvent être livrés 
(source ou binaires) sous 3 formats principaux :
• Le format Read Hat (RPM : ReadHat Package Manager) :
fichiers *.rpm
• Le format DEBIAN (DPKG : Debian PacKaGe) 
fichiers *.deb
• Le format (archive) ou classique :
­ fichiers *.tar : archive créée par la commande tar
­ fichiers *.tar.gz : archive tar comprimée par gzip
­ fichiers *.tar.bz2 : archive tar comprimée par bzip
­ fichiers *.zip
Les systèmes de gestions de paquets Read Hat ou Debian permettent une 
gestion très puissante des applications installées sous GNU/Linux :
• Création des paquets (compilation et création du paquet source ou du 
paquet binaire)
• Installation des paquets (gestion des composants nécessaires)
• mise à jour des paquets (gestions des dépendances, des conflits, ...)
• Suppression des paquets (gestion des dépendances, et de tout ce qui 
a été installé)
• Interrogation :
­ liste des paquets,
­ fichiers contenus dans un paquet donné,
­ quel paquet contient un fichier donné,
Gestionnaire RPM
Commande rpm : infos sur les paquets installés
(options de confort : v ­> verbose ; h ­> barre d'avancement tracée avec des 
#)
Installation (install) : rpm ­ivh nom_du_paquet
Exple : rpm ­ivh acpid1.0.44mdk.rpm
mise à jour (update) : rpm ­Uvh nom_du_paquet
Exple : rpm ­Uvh acpid1.0.44mdk.rpm
Suppression (erase) : rpm ­e nom_du_paquet

Cours d'administration Linux
Exple : rpm ­e acpid
Interrogation (query) :
­ Informations sur un paquet : rpm ­q nom_paquet_court
Exple : rpm ­q emacs (réponse : emacs21.320mdk)
Interrogation (query) suite :
­ informations sur un paquet : rpm ­qi paquet
­ liste des fichiers d'un paquet installé :
rpm ­ql paquet_installé , ou rpm ­ql ­p fichier_rpm
Exple : rpm ­ql cups
­ liste de tous les paquets installés : rpm ­qa
­ rechercher si un paquet est installé : rpm ­qa | grep paquet
­ recherche des paquets installés contenant un fichier :
rpm ­qf nom_de_fichier_absolu
Exple : rpm qf /usr/sbin/cupsd
Gestionnaires URPM / yum 
Ils gèrent les installations à partir de divers médias 
­ ftp, http,
­ volumes nfs et locaux,
­ médias amovibles (CD, DVD, ...)
Voir les manuels sur les commandes et les TP
 Gestionnaire DEBIAN (*    .deb) 

Commande dpkg : gestion d'un paquet isolé,
pas de gestion automatique des dépendances
dpkg [option] [fichier.deb ...] ; Principales options :
­i : installe le(s) paquets contenus dans les fichiers(s)
­r : désinstalle le paquet sans supprimer ses fichiers de configuration
­­purge : désinstallation complète (paquet + fichiers config)
­reconfigure paquet : rejouer la configuration du paquet
­l : liste de tous les paquets
­L : affiche la liste de tous les fichiers contenus dans le paquet
­S fichier : recherche de tous les paquets contenant fichier
Exples :
dpkg I cups
dpkg S /usr/bin/cupsd

Le système APT : Advanced Package Tool
Résoud automatiquement les problèmes de dépendances entre paquets
Tient à jour les listes des installés et des paquets disponibles
Gère la liste des sources d'installation (fichier /etc/apt/sources.list)
apt­get install fichier.deb ... : installer des paquets Debian
apt­get remove [purge]
fichier.deb ... : désinstaller des paquets
apt­get update : récupère la liste des paquets disponibles en utilisant les

Cours d'administration Linux
sources mentionnées dans le fichier sources.list
apt­get upgrade : mise à jour des paquets
apt­get clean : supprime les fichiers présents dans
/var/cache/apt/archives
Récapitulatif incomplet et approximatif des équivalences RPM/DEBIAN !!!
rpm ­ql paquet  dpkg ­L paquet
rpm ­qa   dpkg –l  / dpkg –get­selection
rpm ­i paquet   dpkg ­i paquet
rpm ­e paquet   dpkg ­­purge paquet
?  dpkg ­r paquet
?  dpkg ­reconfigure paquet
rpm ­qf fichier  dpkg ­S
urpmi paquet /yum install paquet apt­get install paquet
urpme paquet  apt­get remove paquet

Il existe des interfaces graphiques pour la gestion des paquetages
­ Mandriva : drakrpm
− Debian : synaptic, aptitude

12.0 TRAVAUX PRATIQUES

TP1 Installation de Linux
TP2 nom de machine & les combinaisons de touches Ctrl Alt FN
Connectez­vous à un poste sous LINUX.
Une fois connecté(e), lancez la commande « hostname » qui donne le nom de la 
machine sur laquelle on travaille.
Que vous renvoie­t­elle pour votre poste ? 

Fermez votre session graphique en entier.
Retrouvez sur la fenêtre d'accueil graphique le nom de votre machine.

Cours d'administration Linux
après avoir démarré une session X, que se passe­t­il si vous appuyez sur « Ctrl Alt 
F1 » ou d'une façon plus générale « Ctrl Alt FN » avec N variant de 1 à 6 ? 

Que se passe­t­il si depuis un écran en mode texte, vous appuyez sur « Ctrl Alt F7 » 
?

TP3 Utilisation de commandes diverses
Connectez­vous et ouvrez un terminal. 

Lancez les commandes UNIX pour réaliser les questions suivantes : 

• Affichez le fichier « /etc/passwd ». 
• Affichez le fichier « /etc/passwd » page d'écran par page d'écran. Utilisez les 
deux commandes vues en cours et observez les différences. 
• Créez dans votre répertoire d'accueil l'arborescence « UNIX/TP/1 » dans 
laquelle vous rangerez les exercices et fichiers temporaires des TP d'UNIX de 
la session. 
• Faites une copie du fichier « /etc/passwd » dans « UNIX/TP/1 » sous le même 
nom. 
• Déplacez vous dans « UNIX/TP/1 ». 
• Dupliquez « passwd » en « passwd2 ». 
• Dupliquez « passwd » en « passwd3 ». 
• Au moyen des flêches de curseur, remontez dans les commandes déjà 
entrées et voyez leurs effets dans diverses directions. 
• Voyez l'effet sur votre ligne de commande shell de la combinaison de 
touches Ctrl­A 
• Voyez l'effet sur votre ligne de commande shell de la combinaison de 
touches Ctrl­E 
• Voyez l'effet sur votre ligne de commande shell de la combinaison de 
touches Ctrl­U 
• Voyez l'effet sur votre ligne de commande shell de la combinaison de 
touches Ctrl­Y 
• Tapez « more passwd» puis appuyez sur la touche TAB et constatez ce qui se 
passe.

TP4 Utilisation de Vi

1. Créez un fichier que vous nommerez testvi.txt
2. Passer en mode Insertion et saisir le texte suivant :
« C 'est facile de travailler avec vi »
Revenez en mode commande
3. Modifier « C'est facile » en « C'est très facile »
Revenez en mode commande

Cours d'administration Linux
4. Ajouter à la fin du texte sur une nouvelle ligne :
« mais je préfère écrire sous Word. »
Revenez en mode commande

5. Sans quitter le mode commande, supprimer le mot « Word », passer
en mode Insertion et le remplacer par « ... oups ! OpenOffice"
6. Sauvegarder votre fichier et quitter vi 

7. Copier le fichier /etc/httpd.conf dans votre répertoire de travail pour ce TP

• Rechercher le mot­clé "ServerName", faire une copie de la ligne définissant 
le nom du serveur http
• Décommenter cette nouvelle ligne et remplacer le nom donné en exemple 
par "www.acme.org"
• Enregister vos modifications et quitter vi

Vous allez intégrer un fichier externe dans le fichier httpd.conf

• Copier le fichier ~corsini/unix/aoi/tp1/new­vh dans votre répertoire de 
travail pour ce TP
• Modifier ce fichier et remplacer toutes les occurences de dummy­
host.example.com par monvh.acme.org
• Enregister vos modifications et quitter vi
• Modifier à nouveau votre copie de httpd.conf et y intégrer à la fin du fichier, 
le fichier new­vh que vous vennez de créer.
• Enregister vos modifications et quitter vi

TP5: Création d'une arborescence

Placez vous dans votre répertoire d'accueil. 

Soit la succession suivante de commandes : 

cp /etc/hosts a
mkdir b c
cd b
cp ../a d
mkdir ../e f
cd
cp a b/f/g
cd b/f
cp g ../../e
cd ..
rm ../a
rmdir ../c
mv ../e/g ../e/x
Sans lancer ces commandes, dessinez l'arborescence résultante en procédant 
étape par étape.

Cours d'administration Linux
Quel est le répertoire courant à la fin de l'opération ? 

Vérifier que votre résultat est bon en tapant ces commandes. 

Quelle séquence de commandes vous permet de créer l'arborescence de la figure 
ci­dessous : 

TP6 : lien symboliques 

Créez dans votre répertoire d'accueil l'arborescence et les fichiers (avec la 
commande touch) suivants :

UNIX/TP/1/data
            |­ compta
            |­ market
            |­ pub
                |­ fichier1.txt
                |­ fichier2.txt
                |­ fichier3.txt
                |­ images
                       |­ img1.jpg
                       |­ img2.jpg
                       |­ img3.jpg
                       |­ img4.jpg

On imagine maintenant qu'il n'y a plus assez de place dans l'arborescence 
"data/pub". L'objectif est de créer un nouveau répertoire pour acceuillir les 
données du répertoire "pub" (UNIX/TP/1/data2/pub) , de copier les données de 
data/pub vers /data2/pub, puis de de faire pointer data/pub vers /data2/pub 
grâce aux liens symboliques afin de ne pas modifier la "vue utilisateur" des 
données. 
Quelles sont les commandes à saisir pour aboutir à ce résultat ? Pouvez­vous 

Cours d'administration Linux
accéder aux fichiers du répertoire pub comme avant ?

Est­ce possible de faire cela avec des liens hard ? Pourquoi ? 

 TP7: droits sur les fichiers

• Créer dans ~/UNIX/TP2 le répertoire nommé rep.
• Créer à l'aide de vi un fichier texte nommé fichier.txt dans le répertoire rep 
contenant une phrase quelconque.
• Déterminez les droits du répertoire rep et de fichier.txt
• Enlevez les droits d'écriture et de lecture pour fichier.txt pour l'utilisateur 
propriétaire. 
• Essayez de modifier fichier.txt. Y arrivez­vous ? Pourquoi ?
• Enlevez les droits de lecture pour fichier.txt pour l'utilisateur propriétaire.
• Essayez de modifier avec vi fichier.txt. Comparer la différence d'affichage 
avec la question 5. 
• Remettre les droits d'écriture et de lecture pour fichier.txt pour l'utilisateur 
propriétaire. 
• Remplacer le contenu de fichier.txt par la ligne "echo Hello monde". Placez 
vous dans le répertoire rep et exécutez la commande "./fichier.txt" 
(explications au cours du TP). Cela fonctionne­t­il ? Pourquoi ?
• Modifiez les droits de fichier.txt afin de pouvoir l'exécuter.

TP8 : droits sur les répertoires

• Placez­vous dans le répertoire père de rep et retirez­vous les droits en 
lecture sur ce répertoire. Pouvez­vous lister le contenu du répertoire ? 
Pouvez­vous visualiser le contenu de fichier.txt ? Rétablissez le droit en 
lecture sur rep.

• Créez le fichier fichier2.txt dans rep. Supprimez les droits en écriture au 
répertoire rep ainsi qu'au fichier fichier2.txt. Modifiez fichier2.txt. Est­ce 
possible ? Pourquoi ?
• Essayez de faire une copie de fichier2.txt en fichier3.txt.

• Ajoutez le droit d'écriture et enlevez le droit d'exécution du répertoire rep. 
Essayez de créer un fichier dans rep. Essayez de lister le contenu de rep. 
Essayez de vous déplacer dans rep. Qu'en concluez­vous sur l'utilisation du 
droit d'exécution sur un répertoire ?

TP9: création assistée d'un compte

Cours d'administration Linux
Créez à nouveau un compte utilisateur « user2» en utilisant cette fois­ci la 
commande système LINUX «useradd ». Cet utilisateur appartient également au 
groupe « stage ».

On laissera la commande useradd affecter un UID non utilisé. 

Connectez­vous avec le nouveau compte user2. 

Le prompt est­il différent de celui de l'utilisateur user1 ? A votre avis pourquoi ? 
(Indication : jetez un oeil sur les fichiers cachés des répertoires home de user1 et 
user2)

Détruisez le compte utilisateur dernièrement crée en utilisant la commande 
système LINUX «userdel ». 

TP10 : Introduction au ACL

Le but de cet exercice consiste à mettre en place les ACL sur une partition.

Le répertoire /data contient 3 répertoires :
­ projet1
­ projet2
­ marketing
Désireux d'isoler au mieux les répertoires, les droits ont été fixés à 700

On dispose de 3 utilisateurs :
­ pierre (un stagiaire) qui appartient au groupe stage
­ paul (un ingénieur) qui appartient au groupe devpt
­ jacques ( un ingénieur commercial) qui appartient au groupe market

L'objectif consiste à utiliser les ACL pour affiner les accès aux différents 
répertoires sur les 
règles suivantes :
­ le groupe stage  n'aura un accès en lecture uniquement sur les répertoires 
projet 1 et projet2
­ le groupe devpt à un accès total sur les répertoires projet1 et projet2
­ le groupe market à un accès total sur le répertoire market aucun accès sur les 
projets
­ Exceptionnellement, jacques participe au projet 2 et doit avoir un accès en 
écriture sur le répertoire
   projet2

  

• Créer les ACL permettant de mettre en oeuvre la stratégie de permissions 

Cours d'administration Linux
précédante (les utilisateurs, groupes et répertoires sont déjà crées dans la 
machine virtuelle). 

Visualisez les droits de chaque répertoire avec la commande ls puis avec la 
commande getfacl.

2. Prendre l'identité de paul (mot de passe donné en TP) grâce à la commande
"su ­ paul" ou ouvrez une console supplémentaire (Alt+F2).

Créez un fichier texte quelconque dans les répertoires /data/projet1 et 
/data/projet2.

Essayez de créer un fichier dans /data/marketing.

3. Quitter l'identité de paul (commande "exit") et prendre l'identité de pierre ou 
ouvrez une console supplémentaire (Alt+F3) et ouvrez une session sous 
l'identité de pierre.

Essayez de créer un fichier dans /data/projet1.

Essayez de lire le fichier crée par paul dans /data/projet1.

Pouvez­vous lire le contenu du répertoire /data/marketing.

4. Quitter l'identité de pierre (commande "exit") et prendre l'identité de jacques 
ou ouvrez une console supplémentaire (Alt+F4) et ouvrez une session sous 
l'identité de jacques.

Créez un fichier dans /data/marketing.

Essayez de lire le fichier crée par paul dans /data/projet1.

Créez un fichier dans /data/projet2.

Visualisez les ACL du fichier crée par jacques.

5. Quitter l'identité de jacques (commande "exit") et prendre l'identité de paul 
ou basculez sur la console de  paul  (Alt+F2).

Essayez de modifier le fichier crée précédemment par jacques. Est­ce 
possible ? Pourquoi (difficile).

Cours d'administration Linux
TP11: Configuration IP

Contrôlez votre configuration IP

4.0 Examinez le fichier /etc/sysconfig/network
5.0 Examinez le fichier /etc/sysconfig/network­scripts/ifcfg­eth0
6.0 Examinez le fichier /etc/resolv.conf

TP12: Modification configuration IP
Modifiez votre configuration IP pour utiliser une adresse fixe : adresse 
donnée
Pour cela utilisez l'utilitaire system­config­network 

Redémarrez votre interface ethernet à l'aide de la commande service 
network restart

Vérifiez le résultat de votre configuration IP (adresses et route par défaut)

Constatez les modifications dans les trois fichiers vus en TP11

Vérifiez que vous pouvez communiquer vers l'extérieur :
­ ping @ locale
­ ping @ passerelle
­ ping extérieure 

TP13 Installation de webmin

1) Installer apache(httpd) avec yum

2) Verifier si apache est lancé au démarrage

3) Activer le démarrage automatique d'appache

4)  Installer webmin avec yum

5) Connectez­vous au webmin par interface web

6) Connectez­ vous avec vos paramètres administration

7) Installer ssh­server depuis l'interface webmin

8) quelles opérations  pouvez­vous effectuer depuis cette interface?

TP14 : Installation d'un paquetage rpm
Objectif : installer le navigateur lynx avec rpm

Cours d'administration Linux
Récupérer le rpm correspondant
http://archive.fedoraproject.org/pub/archive/fedora/linux/releases/8/Fed
ora/i386/os/Packages/lynx­2.8.6­7.fc8.i386.rpm

Installer avec une commande rpm ce paquet

Est­ce que cela fonctionne ? Manque­t­il quelque chose ? Pourquoi à votre 
avis ?

TP15: Niveaux d'exécution
Démarrer la machine et passer en mode single user.

Modifier le mot de passe root.

Passer en run level 3.

Cours d'administration Linux
ANNEXES

Cours d'administration Linux
Le rôle de l’administrateur ou root est de :

• configurer le noyau du système d’exploitation ;
• sauvegarder les données et réparer les systèmes de fichier ;
• gérer les utilisateurs ;
• installer de nouveaux logiciels ;
• intégrer de nouveaux disques durs et de nouvelles partitions ;
• configurer le processus de démarrage de Linux ;
• configurer le réseau
Du fait que le super­utilisateur root possède tous les droits, il doit posséder des connaissances 
concernant le fonctionnement du système

Cours d'administration Linux

Вам также может понравиться