Linux_Personal_Tutorial

LINUX personal tutorial

Ce tutoriel est basé sur un cours Linux faisant partie d’une de mes différentes formations continue. Son contenu a été repris depuis une page statique, il est se peut donc qu’il ne correspond pas au goût du jour en terme de contenu Web.

1. Les bases de linux

 

 

 

 

2. Installation, administration, configuration

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. Les commandes

 

 

 

 

 

4. VI

5. Les shells

 

 

 

 

 

6. Manipulations de textes

7. Outils de sauvegarde

 

 

 

99. Trucs et astuces

 

 

 

1. Les bases de Linux

1.1. Historique

Linux est issu de Unix, ci-dessous un tableau résumant les grandes étapes de son évolution :

Année Evénement
1969 AT&T Bell Laboratories (Ken Thompson, Dennis Ritchie), PDP7
1973 ré-écrit en C (portabilité)
1974 Université de Bekerley(BSD)
1979 Bourne shell
1983 AT&T UNIX System V
1984 TCP/IP sur 4.2 BSD –> Internet
1991 Linux en développement (par Linus Torvalds)
1993 Novell rachète UNIX à AT&T
1995 SCO rachète UNIX à Novell
1999 Linux 2.2
2001 Linux 2.4

et ses différentes versions qui peuvent être Unix Based(HP-UX, Solaris, AIX…) ou Unix like(Linux, FreeBSD…):

HP-UX (Hewlett-Packard) – osiris, polaris, …
Solaris (Sun) – r2d2
AIX (IBM)
Xenix (Microsoft, abandonné)
IRIX (SGI, Silicon Graphics)
BSD (Université de Berkeley)
FreeBSD (Open Source et gratuit)
Linux (Open Source et gratuit)
MacOS X (Apple)
QNX

1.2. Open source

Pour comprendre la phylosophie de Linux il est important de comprendre certains principes. Parmi ceux-ci on a :

Free Software Foundation(FSF) :

Free Software Foundation. Créé par Richard Stallman. Son manifeste pour un monde du logiciel sans brevet ni marques déposées fait partie de l’anthologie de l’informatique. Basée à Cambridge, dans le Massachussetts (É-U), tout comme le MIT, la FSF produit des programmes systématiquement mis sous licence GPL, et dont les principaux représentants forment le projet GNU. Des centaines de programmeurs, parmi les meilleurs, ont travaillé pour elle quasiment gratuitement. [Source Le jargon français]

General Public License(GPL) :

Le statut juridique des logiciels distribués « librement », à l’origine utilisé pour le projet GNU de la FSF. Ça commence comme ça : « Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [Source Le jargon français]

Le détail sous : http://www.linux-france.org/article/these/gpl.html

Free Documentation License(FDL) :

Licence d’exploitation de documentations, analogue à la GPL pour les logiciels, mise au point au sein du projet GNU (d’ailleurs le véritable nom de cette licence est « GNU FDL »). [Source Le jargon français]

Copyleft :

À l’origine, copyright particulier appliqué à ses productions par la FSF, et donnant le droit à quiconque de les utiliser, les recopier et les modifier librement, la seule restriction étant que les nouvelles productions ainsi obtenues soient libres elles aussi. Le mouvement général actuel est d’étendre cette notion dans la mesure du possible à toutes les productions intellectuelles imaginables. [Source Le jargon français]

GNU :

GNU is not Unix (la définition récursive est prisée des hackers). SE cousin d’Unix mis dans le domaine public par la FSF, assez difficile à maîtriser car très puissant et au service d’assistance technique assuré par ses utilisateurs même ainsi que par des sociétés commerciales. Il fonctionne très bien, du moment que vous disposez des sources, et que ceux-ci n’ont pas été modifiés par un petit rigolo. Le manifeste GNU a été publié dans le journal Dr. Dobb’s un an et demi après le début du projet. [Source Le jargon français]

GNU/LINUX :

Le vrai nom de Linux, qui lui n’est en fait que le noyau du système, programmé, géré et exploité principalement à l’aide des utilitaires et des applications GNU (le noyau représente quelques pourcents du système, les outils GNU quelques dizaines de pourcents). [Source Le jargon français]

1.3. Le système

Linux est système d’exploitation constitué d’un noyau(kernel), d’un interpréteur de commandes(shell) et d’une multitudes d’utilitaires.

Le noyau sert d’interface entre l’homme et la machine; il assure la gestion des ressources physiques et logiciels. Ce noyaux sous Linux existe en deux « versions » :

    1. o Une version stable (ex. 2.4.19 appelée Current)

 

    o une version de développement(ex. 2.5.62 appelée latest)

L’interpréteur de commandes plus communément appelé shell permet à l’utilisateur d’accéder au noyau. Ils existent plusieurs shells différents(bash, korn shell, c-shell) que nous verront dans la partie consacrée au shell. L’interface utilisateur est composée d’une bibliothèque de programmes exécutables : les commandes et du shell lui-même.

Parmi les nombreux utilitaires on trouve : des compilateurs(C++), des outils de bureautiques(messagerie), des éditeurs de texte(vi,ed), des formateurs de texte, des outils pour le web(apache), des serveurs de fichiers(samba)…

Linux est un système multitâche, où plusieurs tâches(processus) peuvent s’exécuter simultanément. Chacun de ces processus étant défini par une identification(ID).

Le tableau ci-dessus résume l’architecture du système et ses composants :

Couche Composants
Kernel TCP/IP stack
device interfaces
multitasking
Shell bash
sh
csh
ksh
Utilities ls
cat
wc
vi

2. Installation, administration, configuration

2.1. Installation

L’installation ne sera pas expliquée en détail(pour plus de détail se référer aux différents liens ou manuels traitant très bien le sujet), seul les points les plus importants seront soulevés. Il existe plusieurs manières d’installer Linux :

    1. o Mode local par disquette(boot) – CD-Rom – DVD

 

    o Mode réseau NFS ou FTP

Parmi les points importants ou « délicats » je reléverais :

    1. o le partitionnement du disque dur (DiskDruid, fdisk, YaSTFDISK)

 

    1. o la définition des points de montage

 

    1. o sélection de la partition de swap

 

    1. o sélection des packages à installer

 

    1. o configuration réseau

 

    1. o configuration TCP/IP

 

    1. o sélection des services (démons)

 

    1. o définition du mot de passe root

 

    1. o création d’une disquette d’amorçage

 

    1. o configuration de Lilo pour le démarrage automatique

 

    o configuration environnement graphique(configuration X)

2.2. RPMS

RPM signifie Red Hat Package Manager. C’est le système Red Hat pour générer les packages de leur distribution Linux; ils peuvent être employé dans d’autres distributions(par exemple pour installer Samba)

Installer des packages rpm rpm -i
Désinstaller des packages rpm rpm -e
Mettre à jour des packages rpm -U
Interroger la base de donnée rpm rpm -q
Afficher la liste des fichiers concernés par l’installation d’un package rpm -ql
Afficher la description d’un package donné rpm -qi
A quel package appartient le fichier xyz rpm -qf /chemin/nom_de_fichier

2.3. LVM

LVM signifie Logical Volume Manager. Avant de pouvoir installer Linux il est nécessaire de « préparer » la machine et entre autres les disques durs. La commande fdisk permet de préparer les disques pour les partionner. Il est possible d’avoir 4 partitions primaires ou 3 primaire et 1 étendue.

Le principe général du LVM est :

    1. 1. Chaque disque va être transformé en volume physique; ce qui consiste à découper le disque en tranches appelés Physical Extend(PE)

 

    1. 2. Chaque volume va être intégré dans un groupe de volumes. Un groupe de volumes est un espace logique découpé en Logical Extend(LE). Le système va établir un lien entre LE et PE

 

    3. La dernière étape consiste à découper le volume logique dans lesquelles nous installerons les systèmes de fichier.

2.4. Lilo et Grub

2.5. Arborescence Linux

Le système de fichier est organisé en structure arborescente dont les noeuds sont des répertoires et les feuilles des fichiers. La racine de cette arborescence est la racine(root). Dans l’environement Linux « tout est fichier »(fichier simple, périphérique, répertoire…). Ces fichiers sont identifiés par un numéro appelé numéro d’inode. En tapant la commande ls -i on peut connaître ce numéro.

L’image ci-dessous résume cette arborescence.

Ci-dessous les différents répertoires sous Linux :

swap Ce n’est pas un répertoire à proprement parlé, il sert de zone d’échange. Mémoire virtuelle sur disque.
/etc Contient les fichiers de configuration généraux, les commandes à exécuter au démarrage du système.
/etc/init.d Contient tous les scripts de démarrage du système
/boot Contient Lilo ou Grub ainsi que le noyau linux
/bin Contient des commandes nécessaires lors du démarrage du système. Ces commandes pourront par la suite être utilisées par les utilisateurs.
/sbin Contient des commandes nécessaires lors du démarrage du système, réservés par contre à l’administrateur du système(root).
/home Contient les comptes des utilisateurs.
/dev Contient tous les fichiers spéciaux utilisés pour accéder au matériel.
/proc Voici un pseudo-répertoire : en réalité, son contenu n’existe pas physiquement sur le disque, mais est manipulé directement par le système lui-même.
/usr Répertoire à usages multiples les principaux sont(voir ci-dessous)
/usr/bin Commandes utilisables par tous les utilisateurs, et non nécessaires lors du démarrage du système.
/usr/sbin Commandes réservées au super-utilisateur et non nécessaires lors du démarrage du système.
/usr/man Contient les pages de manuel.
/usr/doc Contient de nombreuses documentations et sources d’informations.
/usr/X11R6 Contient (normalement) tous les fichiers se rapportant à la couche graphique X-Window.
/usr/local Lieu où sont stockés les fichiers spécifiques au système installé.
/var Contient des données mises à jour par différents programmes durant le fonctionnement du système.
/var/spool Répertoires utilisés pour l’organisation du travail des imprimantes, de la messagerie électronique….
/var/log Contient les fichiers logs provenant de différents points du système.

Ci-dessous un exemple de partitionnement :

swap Mémoire vive * 2 (entre 256 – max 512)
/boot 50 MO
/home 100 MO ou selon besoins
/data Selon besoins
/var 5 GO
/ 5 GO
/usr 5 GO
/sandbox 1 GO
/tmp 500 MO

2.6. Démarrage d’un système Linux

Le démarrage d’un système Linux peut se résumer dans les étapes suivantes :

    1. 1. Chargement en mémoire vive du fichier image du noyau
    1. 2. Détection des composants matériels connectés au système
    1. 3. Lancement du premier processus portant le numéro 0(idle) qui a pour seule tâche d’occuper les ressources de traitement aussi longtemps qu’aucun autre processus n’est lancé. Le processu 0 démarre le processus 1 appelé « processus parent ». Ce processus s’appelle

init

    1. et gère la suite du démarrage.

4. Le processus /sbin/init lance le processus init V piloté par le fichier config /etc/inittab

5. Lancement du processus /etc/rc.d/rc.sysinit qui charge le module noyau, montage des systèmes de fichier, amorçage partition swap, mode monoutilisateur

6. Le processus init démarre le script rc. Initialisation des niveaux d’éxécutions multiutilisateurs. Le niveau d’éxécution(Run Level) est démarré par un lien symbolique vers le niveau d’exécution correspondant(0,1,2,3,4,5,6) /etc/rc.d/rcX.d où X correspond au niveau d’exécution. Chaque script rcX.d démarre ces démons et services placés dans le répertoire /etc/init.d. Les scripts sous rcX.d portent un nom commençant par S(Start) ou K(Kill). ex. /etc/rc3.d/S10network démarre le démon de réseau sous /etc/init.d/… ce service peut être terminé à l’aide du script K dans /etc/rcX.d

7. Pour finir init initialise les processus getty pour les différentes consoles et exécute le programme de login correspondant au shell (/sbin/bash).

Il suit en résumé cheminement suivant :

    1. o BIOS

 

    1. o MBR

 

    1. o Os loader(Grub, lilo)

 

    1. o Kernel

 

    1. o init => script rc (Sxx – Kxx en fonction du run Level), répertoire (/etc/init.d) avec un lien symbolique (/etc/init.d/rc3.d/script -> /etc/init.d/script

 

    o services

Les différents niveaux d’exécution comme a pu le voir dans la procédure de démarrage dépendent des distributions. Mais dans l’ensemble ils suivent certaines règles communes. Parmi ceux-ci :

    1. o mono utilisateur

 

    1. o multiutilisateurs sans réseau

 

    1. o multiutilisateurs avec réseau

 

    o utilisation sous une interface graphique

Ci-dessous la liste des Run Level :

0 Arrêt du système(Halt – commande shutdown)
1 Mode utilisateur seule(maintenance)
2 Mode multiuser
3 Mode multiuser et réseau
4 Inutilisé
5 Environnement graphique (X11)
6 Redémarrage du système(Reboot)

Ci-dessous le contenu du répertoire /etc/rc.d :

rc.sysinit Exécuté une fois au démarrage pour initialiser le système
rc Script de gestion du niveau d’exécution
rc.local Script utilisé pour les initialisations particulières à la machine
init.d Répertoire contenant les scripts d’initialisation des sous-systèmes
rc0.d Répertoire contenant un lien sur les scripts du répertoire init.d devant être lancé à un niveau d’éxécution 0
rc1.d Répertoire contenant un lien sur les scripts du répertoire init.d devant être lancé à un niveau d’éxécution 1
rc2.d Répertoire contenant un lien sur les scripts du répertoire init.d devant être lancé à un niveau d’éxécution 2
rc3.d Répertoire contenant un lien sur les scripts du répertoire init.d devant être lancé à un niveau d’éxécution 3
rc4.d Répertoire contenant un lien sur les scripts du répertoire init.d devant être lancé à un niveau d’éxécution 4
rc5.d Répertoire contenant un lien sur les scripts du répertoire init.d devant être lancé à un niveau d’éxécution 5
rc6.d Répertoire contenant un lien sur les scripts du répertoire init.d devant être lancé à un niveau d’éxécution 6

2.7. Paramètres de montage des fichiers

Le montage se fait par exemple grâce à la commande : mount -t iso9660 /dev/hdc /mnt/cdrom. Ici le fichier de périphérique /dev/hdc indique que le lecteur de CD-Rom est connecté en tant que maître à la seconde interface IDE. Le répertoire /mnt/cdrom doit avoir été créé.

Pour le démontage utiliser la commande : umount

Bien évidemment ces points de montages peuvent être automatisée, ou le sont déjà lors de l’installation de Linux. Si toutefois on veut qu’un périphérique soit monté à chaque fois que Linux redémarre, il suffit de configurer le fichier /etc/fstab.

Périphériques

Se trouvent sous /etc/dev

Sytème de fichiers

KERNEL
    1. <=>

 

VFS(Interface)
EXT2 EXT3 FAT32 NTFS
ext2 Standard Linux
ext3 Fichiers Linux journalisés(permet de récupérer les données)
iso9660 CD-Rom
nfs Fichiers réseaux sous Linus
ntfs Fichiers windows 2000/xp
smbfs Fichiers samba
umsdos Fichiers DOS ainsi que les disquettes traditionnelles
vfat Fichiers windows 9x ainsi que les disquettes traditionnelles

Le fichier fstab doit contenir 6 champs au maximum(4 au minium).

      1. o périphérique (ex. /dev/hda5 => 5ème partition du 1er disque IDE)

 

      1. o point de montage (ex. /mnt/disque)

 

      1. o système de fichier (ex. ext2)

 

      1. o options

 

      1. o sauvegarde

 

    1. o répartition/test

Ci-dessous un petit exemple d’entrée du fichier fstab

    1. /dev/hda4 swap swap defaults 0 0

 

    1. /dev/sda6 swap swap defaults 0 0

 

    1. /dev/hda3 / ext2 defaults 1 1

 

    1. /dev/sda1 /boot ext2 defaults 1 1

 

    1. /dev/hda1 /mnt/WIN-C vfat defaults 0 0

 

    1. /dev/fd0 /floppy auto noauto,user 0 0

 

    1. none /proc proc defaults 0 0

 

    1. none /dev/pts devpts defaults 0 0

 

    /dev/hdb /mnt/cdrom auto user,exec,noauto,codepage=850,iocharset=iso8859-15,ro 0 0

Certains fichiers permettent de savoir les unités que l’on peut monter => more /etc/fstab ou ceux qui sont monté => more /etc/mtab.

Notez que selon les distributions il se peut que les points de montage puisse se trouver dans des répertoires différents (media ou mnt).

2.8. Système de fichiers

Les fichiers dans l’environement Linux sont de plusieurs types. On peut voir sa représentation visuelle en tapant la commande ls -l :

drwxrwxr-x 2 toto1 toto 512 Apr 12 12:04 toto.txt

Attributs Liens Uid User Gid du Groupe Taille Date de modification Nom du fichier
drwxrwxr-x
2
toto toto1 512 Apr 12 12:04 toto.txt

Chaque fichier Unix a 10 attributs :

    1. 1 pour le type

 

    1. 3 pour le propriétaire

 

    1. 3 pour le groupe

 

    3 pour les autres users

Les types de fichiers principaux sont les suivants :

fichier ordinaire
répertoire
d
fichier spécial périphérique
c
fichier spécial périphérique
b
tube nommé
p
lien symbolique
l
socket
s

Chaque fichiers a 3 types d’utilisateurs

    1. 1. Propriétaire du fichier(user)

 

    1. 2. Membre du groupe(groupe)

 

    3. Autres utilisateurs(other)

Chaque type d’utilisateurs a 3 modes principaux

    1. 1. Autorisations d’écriture W

 

    1. 2. Autorisations de lecture R

 

    3. Autorisations d’exécution X

2.9. Attributs des fichiers sous Linux

Type d’objet Droit du propriétaire Droits des membres du groupe Droits de tous les autres utilisateurs
d(répertoire)

rwx

rw-

r–

-(fichier de donnée)
b(périphérique)
c(périphérique)
USER(U)
GROUP(G)
OTHER(O)

Il existe d’autres attributs comme lecture seule par exemple. Ils peuvent être visualisée grâce à la commande lsattr ou modifiée avec la commande chattr.

Cette notion des attributs se révèlent importante lors de l’attribution des droits pour les fichiers ou répertoires. Voici quelques exemples d’attribution de droits:

    1. chmod ug+w toto.txt => donne le droit d’écriture sur le fichier toto.txt pour le user ainsi que les membres du groupes

 

    chmod o-rw toto.txt => enlève le droit d’écriture et de lecture sur le fichier toto.txt aux autres utilisateurs

2.10. Commandes utiles pour la gestion des droits et des utilisateurs

Il est intéressant de savoir qu’il existe deux modes pour attribuer des droits avec linux. Une manière est symbolique (p. ex chmod u+x toto.txt)
l’autre manière est numérique(chmod 750) où l’on emploie une numérotation octal, ainsi l’on a l’attribution des droits en octal comme ci-dessous :

Lire 4
Ecrire 2
Exécuter 1

Exemple : chmod 541 file ou chmod u=rx,g=r,o=x

Un autre aspect important est la notion de umask qui permet de fixer les droits qui seront enlevés par défaut lors de la création d’un fichier par un utilisateur. Cette commande est lancée une fois lors de l’ouverture de session et est intégrée à l’interpréteur de commande.

Ci-dessous les valeurs par convention pour les fichiers et les répertoires :

Droit maximal d’un fichier 666 rwx rw rw
Droit maximal d’un répertoire 777 rwx rwx rwx

Le calcul se passe de la manière suivante :

Valeur par défault d’un fichier 666 rw- r– r–
– Umask 022
Valeur 644

Quelques commandes intéressantes pour gérer les users, groupes, autorisations :

chgrp groupe fichier Changement de propriété d’un fichier d’un groupe à un autre
chmod ugo(+/-) rwx Modification des droits d’accès sur un fichier
chown utilisateur fichier Changement de propriété d’un fichierd’un utilisateur à un autre
gpasswd Permet d’ajouter un user dans un groupe
groupadd Création d’un nouveau groupe; nouvelle entrée dans /etc/groups
newgrp Transfert d’un utilisateur d’un groupe à un autre(stocké dans /etc/groups)
umask Permet de définir une valeur par défaut pour l’attribution des droits à un fichier
useradd Création d’un nouvel utilisateur; nouvelle entrée dans /etc/passwd

Quelques exemples d’utilisation de ces commandes :

    1. groupadd general => création du groupe general

 

    1. useradd -g general toto => création de l’utilisateur toto dans le groupe general

 

    1. passwd toto => création ou changement du mot de passe de l’utilisateur toto

 

    1. useradd -m toto => création de l’utilisateur toto ainsi que le home directory de cet utilisateur

 

    useradd -d /data/home/toto -m -p xxxx toto => création de l’utilisateur toto, le home directory dans /data/home/toto et le mot de passe xxxx

Notez que les groupes sont stockés dans le fichier /etc/group. Les users dans le fichier /etc/passwd. Les passwords sont eux mis dans le fichier /etc/shadow. Les utilisateurs et les groupes sont repérés par des numéros :

    1. o uid(User IDentifier) pour le numéro d’utilisateur

 

    1. o gid(Group IDentifier) pour le numéro de groupe.
    1. Un utilisateur est représenté par une ligne du type :

 

      1. toto:*:500:500:toto:/home/toto:/bin/bash

 

      1. nom du user:mot de passe crypté:uid:gid:nom complet:répertoire de départ:shell

 

    1. Un groupe est représenté par une ligne du type :

 

      1. groupe1:*:400:toto, john, jack

 

    1. nom de groupe:mot de passe:gid:liste des utilisateurs

Il existe par contre encore deux symboles supplémentaires ‘s’ et ‘t’ qui peut prendre la place du ‘x’.

    1. ‘s’ Dans le cas d’un fichier exécutable il sera exécuté avec le droit du propriétaire ou du groupe en fonction de son positionnement.Dans le cas d’un répertoire, tous les fichiers créés appartiendront au même groupe que celui du répertoire en question.
    ‘t'(Sticky Bit) pour les fichiers exécutables demande de garder le code en mémoire. Pour les répertoires permet de limiter la destruction des fichiers au propriétaire du répertoire ou fichier.

2.11. Les process

Chaque programme utilise un process pour fonctionner à l’intérieur d’un système d’exploitation. Dans l’environement Linux le système attribue à chaque process un numéro unique appelé PID. Un process peut lui-même créer un autre process(fork), il devient alors un processus parent et chaque nouveau processus s’appelle un processus enfant. Ce process créé est identifié par son PID et son processus père par le PPID. Chaque processus est ainsi identifé par son PID, son PPID identifie celui qu’il l’a créé. Le seul process qui ne suit pas cette règle est le process init qui a pour PID 1 et pour PPID 0 lancé par le noyau.

Pour visualiser les process on passe la commande : ps -ef. Dans les différentes colonnes ont a :

UID Nom du user qui a lancé la commande
PID Numéro du process
PPID Numéro du process parent
C Priorité(plus la valeur est grande, plus le process est prioritaire)
Stime Heure de lancement du process
Tty Nom du terminal
Time Durée de traitement du process
Command Nom du process

Il existe deux « types » de process :

    1. o process système(deamon)

 

    o process utilisateur(tous les process se trouvant sous login)

Exécution de commande

Le mode d’éxécution d’une commande peut se faire au premier plan(foreground) ou au deuxième plan(background). L’exécution d’un process au deuxième plan se réalise grâce au & que l’on met directement derrière la commande à exécuter. Pour empécher à la clôture du shell d’arrêter le process il est nécessaire d’ajouter nohup à la fin de la commande à exécuter.

Il est également possible d’exécuter une commande de manière différée à l’aide du daemon at, le daemon at gère l’exécution, il peut être exécuté qu’un seule fois grâce aux fichiers at allow et at deny.

Le mode batch permet de placer une commande dans une liste d’attente et va les exécuter les unes après les autres.

Le mode cyclique peut être exécuté à l’aide du daemon cronD. La commance crontab permet de configurer les process cyclique.

Les commandes process :

Commandes Utilisation
ps Lister les tâches actives (ex. ps -ef)
kill Arrêter une tâche (ex. kill -9 10125)
pstree Permet d’afficher les processus actifs avec parents et enfants
top Permet de voir les activités du système
nice Changer la priorité des processus
ctrl + c Arrêter un processus
ctrl + z Suspendre la commande de premier plan
& Démarre un processus en tâche de fond
fg Relance la dernière commande au premier plan
bg Permet de relancer au premier plan la dernière commande suspendue

Crontab

Permet la planification des tâches à l’aide de la commande crontab -e. Ces tâches peuvent être dans un répertoire qui détermine quand sont exécutés les scripts(/var/spool/mail/user).

2.12 Les fichiers de configuration importants

Démarrage système
/etc/inittab Configuration du démarrage système
/etc/rc.d Configuration du run level et des services
/etc/fstab Vue d’ensemble des partitions, sert avant tout à la définition des points de montage
/etc/mtab Configuration RAID
/etc/conf.modules Modules de noyau
/etc/lilo.conf Fichier de configuration de LILO
/etc/rc Paramètres globaux du système
Utilisateurs et sécurité
/etc/passwd Base de données utilisateurs standard
/etc/shadow Base de données utilisateurs standard(système de mot de passe shadow)
/etc/groups Base de données des groupes d’utilisateurs
Configuration des programmes temporisés
/etc/crontab Configuration du démon crontab
/etc/cron.d Configuration du démon crontab
/etc/cron.daily Configuration du démon crontab
/etc/cron.hourly Configuration du démon crontab
/etc/cron.monthly Configuration du démon crontab
/etc/cron.weekly Configuration du démon crontab
Configuration de l’imprimante
/etc/printcap Configuration du système BSD
Configuration réseau et PPP
/etc/hosts

/etc/lmhosts

/etc/resolv.conf

Configuration de la résolution de noms en l’absence de DNS,DHCP,WINS…
/etc/route Configuration du routage et des passerelles
/etc/inetd.conf Configuration du démon de connexion internet
/etc/diald Configuration du démon de connexion automatique
/etc/exports Définition des lecteurs à exporter via NFS
/etc/smb.conf Définition des lecteurs à exporter via Samba
/etc/smbpasswd Fichier de mots de passe Samba
/etc/ppp/… Configuration PPP via modem
/etc/isdn/… Configuration ISDN
/etc/httpd/… Configuration du serveur WWW apache
/etc/sendmail.cf Configuration de sendmail
/etc/news/… Configuration du service de news
/etc/mail Configuration de la messagerie

2.13. Documentation

La documentation sous Linux est riche. Elle peut être bien évidemment recherchée sur internet où l’on retrouve les HowTo, les FAQ(Frequently Asked Question), les LDP (Linux Documentation Project) ou dans le répertoire d’installation /usr/share/doc. On peut également employer la commande man qui est le manuel de référence(ex. man dd) ou la commande suivi de –help(ex. ls –help).

Parmi les sites intéressants on trouve :

    1. o

www.fsf.org

    1. o

www.linux.org

    1. o

www.linuxdoc.org

    1. o

www.lea-linux.org

    1. o

www.tuxfinder.com

3. Les commandes

Dans l’environement Unix-Linux les commandes se composent de la manière suivante :

commande [+/- option…] [paramètre…]

3.1. Commandes système

crontab Modifier le fichier crontab qui permet d’exécuter des tâches autom.à une heure donnée
df -k Afficher l’espace restant sur un disque
errpt Affiche log des erreurs système hard et soft
fdisk Permet de manipuler des partitions
halt Arrêter Unix si shutdown ne fonctionne pas.
kill Arrêter un programme Unix
passwd Changer le mot de passe
rc Permet de stopper et démarrer des services
reboot Redémarrage de l’Unix
shutdown Arrêter Unix (shutdown -r => shutdown + redémarrage) (shutdown -g 120 => shutdown après 2 min.
sync Synchronisation des données du système (avant halt p. ex.)
uname -sr Permet de connaître la version du noyau

3.2. Commandes répertoires

cd Changer de directory (change directory)
du Occupation disques (disk usage)
find Recherche un fichier à partir du répertoire donné
mkdir Créer un répertoire (make directory)
pwd Affiche chemin du répertoire courant (print working directory)
rmdir Effacer un répertoire (remove directory)

3.3. Commandes fichiers

cat Permet d’afficher, créer, copier, concatener fichiers
chattr Changer les attributs d’un fichier
chmod Modifier droit d’accès sur un fichier (RWX)
chown Modifier le owner d’un user
cp Copier fichier (copy)
cut Couper en plusieurs champs des lignes d’un fichier
diff Liste les différences entre deux fichiers
echo Affiche à l’écran le texte qui suit la commande echo
expand Transforme les tabulations en espaces
find Rechercher un fichier
grep Recherche une chaîne de caractère dans un fichier
head Liste les n premières lignes d’un ou plusieurs fichiers
ln Désigner un fichier par plusieurs noms différents (link)
ls Afficher le contenu d’un répertoire
lsattr Permet de lister les attributs d’un fichier
mc Affiche l’écran Midnight Commander
more Affiche un fichier page par page
mv Déplacer ou renommer fichier (move)
paste Concatène les lignes des fichiers
pg Afficher le contenu d’un fichier
rev Inverse l’odre des lignes d’un fichier
rm Supprimer fichier (remove)
sdiff Affiche côte à côte deux fichiers en signalant les différences
sort Lire et trier des fichiers
stat Permet d’afficher plus d’informations sur un fichier
tac Concatène les fichiers en inversant l’ordre des lignes
tail Liste le contenu d’un fichier à partir de n lignes du début
tee Copie l’entrée standard sur la sortie standard
tr Traduit une chaîne de caractère selon une table de transcodage
touch Créer un fichier vide
uniq Elimine les doublons d’un fichier trié
wc Nombre de mots, ligne dans un fichier (word count)

3.4. Commandes diverses

alias Permet de donner une équivalence entre une commande et un nom quelconque
Compress Compresser un fichier (format .z)
clear Efface l’écran du terminal
ctrl + u Efface dans une session la ligne complète
diff permet d’obtenir la différence entre deux fichiers
exit Quitter une session
id Afficher l’identification du user
gzip Permet de compresser des fichiers (format .gz ou .gzip)
hexdump Affiche le contenu d’un fichier en hexdécimal
man Afficher des informations sur une commande
mount Montage d’une unité (par exemple un disquette, un cd-rom…)
lp Envoi fichier vers le spooler
lpr Envoi fichier vers le spooler
lslpp Afficher informations sur produits installés
ps -ef Afficher les tâches actives
pstree Permet d’afficher les process actifs avec process parents et enfants
set Permet de connaître la liste des variables internes du C-shell
setenv Permet de connaître la liste des variables d’environement
sleep Attend pendant le temp spécifié
stty Permet de visualiser et de modifier les caractéristiques de la l’entrée standard
su Changer de user
tar Permet de sauvergarder ou de restaurer des fichiers ou répertoires
top Permet de lister les process actifs et la mémoire utilisée
uncompress Permet de décompresser des fichiers
who Afficher les users connectés
whoami Afficher le user connecté

4. VI

Vi est un éditeur de texte. Il est très utile si l’on est privé d’interface graphique donc très pratique en cas de besoin de modifications dans des fichiers systèmes ou de configurations par exemple.

Remarque : Pour pouvoir exécuter une commande il faut appuyer sur ESC puis la commande

ctrl + B Revenir d’un écran
ctrl + F Avancer d’un écran
Esc – a Insérer du texte
Esc – o Insérer une ligne
Esc – x Effacer du texte
r Remplacer du texte
/ Rechercher du texte
:q Quitter vi
:q! Quitter vi sans sauver fichier
:w Enregistrer un fichier
:wq Enregister fichier et quitter vi

5. Les shells

Dans l’environement Unix-Linux il existe plusieurs shells liés aux différentes évolutions et à des besoins bien spécifiques. On peut citer parmi les plus importants dans l’ordre de leur création, le Bourne shell(/bin/sh), le C-shell(/bin/csh), le Korn shell(/bin/ksh), Bash(/bin/bash). Le bash est souvent le shell par défaut des systèmes Linux; pour savoir quel shell est employé à l’ouverture d’une session, il suffit de vérifier dans le fichier des users /etc/passwd, sur la ligne du user désiré, le shell utilisé (/bin/bash par exemple)

Ces différents shell servent d’une part d’interface entre l’utilisateur et le système d’exploitation et d’autre part constitue un language de programmation permettant d’exécuter une multitude de tâches diverses; on parle souvent de scripts.

5.1. Les variables de shells

Une variable du C-shell est une chaîne de caractères alphanumériques dont le premier caractère est alphabétique.

On distingue deux types de variables du C-shell:

1. les variables internes
2. les variables d’environnement

Par convention, les variables d’environnement sont en majuscules.

Pour connaître la valeur d’une variable, on utilise la commande echo $Nom.

    1. totol > echo $PATH

 

    1. /bin:/usr/bin:/usr/X11/bin:.

 

Pour connaître la liste des variables internes du C-shell ainsi que leur valeur, il suffit de taper la commande set :

    1. totol > set

 

    1. cwd /home../Toto/lettres

 

    1. gid 10004

 

    1. history 100

 

    1. home /home..

 

    1. path (/bin /usr/bin /usr/X11/bin .)

 

    shell /bin/bash

Pour connaître la liste des variables d’environement ainsi que leur valeur, il siffit de taper la commande setenv

    1. totol > setenv

 

    1. HOSTNAME=toto.edu.ch

 

    1. LOGNAME=toto

 

    1. MAIL=/usr/spool/mail..

 

    1. PAGER=more

 

    1. TERM=xterm

 

    1. PATH=/bin:/usr/bin:/usr/X11/bin:.

 

    1. HOME=/home..toto

 

    1. SHELL=/bin/tcsh

 

    1. LS_OPTIONS=-8bit -color=tty -F -T 0

 

    1. USER=toto

 

    MANPATH=/usr/man/preformat:/usr/man:/usr/X11/man

5.2. Variables de scripts

$0 Nom du script invoqué
$1 à $9 Paramètres transmis aux scripts (ex. scriptx toto1 toto2…)
$# Nombre de paramètres en argument
$* Liste des paramètres en argument
$! Numéro du dernier PID lancé
$$ Numéro du PID en cours d’exécution
$? Code retour de la dernière commande exécutée

5.3. Alias

Les alias permettent de donner une équivalence entre une commande et un nom quelconque. On peut par exemple associé un nom qui nous est familié avec une commande. La commande sera alias nom_alias ‘commandes'(ex. alias H history). Cette commande nous permet donc de créer « des noms de commandes » à notre guise et de les mettre directement dans le fichier de démarrage bash.profile(home directory de chaque user):

    1. alias es=’netstat -na |grep -i esta |grep -v 127.0.0.1 |sort -n -t. -k2′

 

    1. alias h=’history’

 

 

5.4. Scripts de shell

Les shell en plus d’être des interpréteurs de commandes sont des languages de programmation. Le mot employé pour désigner ces fichiers de commandes est script. Les scripts de shells permettent de faire énormément de choses, et des milliers de pages ne suffiraient pas à couvrir le sujet.Il ni aura donc que quelques concepts et exemples pour voir l’étendue et l’emploi des scripts.

En construction(sujet en cours d’étude)…

7. Manipulations de textes

Ci-dessous quelques outils intéressant dans la recherche ou la manipulation de textes

awk Recherche, modifie, affiche, traduit une chaîne de caractère
grep Recherche une chaîne de caractère
dd Sert à copier,convertir des fichiers
iconv Sert à convertir des fichiers
od Afficher un fichier en hexadécimale
perl language de programmation qui peut être utilisé également pour la manipulation de texte
sed Recherche une chaîne de caractère et la modifie
tr Complémentaire des outils ci-dessus

Voici quelques exemples de l’utilisation de ces différents outils :

    1. dd if=/tmp/trav/fichier.input of=/tmp/trav/fichier.output conv=ascii

 

    1. iconv -f ISO8859-1 -t IBM-850 fichier.input > fichier.output

 

    1. od -xc toto.txt

 

    1. perl -pe ‘s/\332/\015\012/g’ < toto.ascii> toto.prod

 

    1. tr -d ‘\025′ < toto.bin > toto.bin15 (supprimer char ’15’)

 

7. Outils de sauvegarde

7.1. La commande tar

Cette commande permet de sauvegarder et de restaurer une arborescence de fichiers sur un support. La syntaxe de la commande est .

tar clefs noms

Cette commande permet de sauvegarder et de restaurer une arborescence de fichiers sur disque, disquettes, lecteur de bande etc… La syntaxe de la commande est :

tar clefs noms où clefs est une chaîne qui contient les options et paramètres des options.

Options principales :

c Créer une nouvelle archive
r Ajoute les fichiers à la fin de l’archive même si les fichiers existe déjà dans cette archive
u Additionne les fichiers à l’archive s’ils n’y sont pas déjà ou si leur date de modification est plus récente que celle de la version contenue sur l’archive.
t Pes noms sont affichés autant de fois que qu’il apparaissent dans l’archive.Si aucun nom n’est indiqué c’est l’ensemble du contenu de l’archive qui est affiché.
x Permet d’extraire les fichiers de l’archive. Si les noms mentionnés sont des répertoires, tous les fichiers et sous répertoires sont restaurés. Si aucun nom est mentionné c’est l’ensemble de l’archive qui est restauré.

Options en complément des options principales :

v Cette option permet de visualiser la liste des fichiers archivés
f Permet de préciser le périphérique d’archivage (fichier spécial associé au périphérique). Par défaut, le périphérique d’archivage est /dev/rmt0. Si le périphérique d’archivage est désigné par -, alors c’est entrée ou la sortie standard qui est utilisée. Ce qui permet d’utiliser la commande tar dans un tube.
p associé à l’option x, permet de conserver ou restaurer les permissions des fichiers et répertoires.

Exemples.

1. Sauvegarde tar d’un répertoire avec un nom relatif

    1. toto> cd /home/toto

 

    toto> tar cvf /dev/rmt0 Divers

Sauvegarde de tout le répertoire Divers et affichage des fichiers sauvegardés.

2. Sauvegarde tar d’un répertoire avec un nom relatif

    1. toto> cd /home/toto

 

    toto> tar cvf /dev/rmt0 Divers

Sauvegarde de tout le répertoire Divers à la fin de l’archive et affichage des fichiers sauvegardés.

3. Récupérer un fichier d’une archive avec un nom relatif

    1. toto> cd /home/toto

 

    1. toto> tar xvf /dev/rmt0 divers/lettre

 

Récuperation du fichier lettre de l’archive de rmt0 dans le répertoire /home/toto/divers

4. Sauvegarde tar avec un nom absolu

    1. toto> tar cvf /dev/rmt0 /home/toto/Divers

 

5. Récupération du fichier lettre à partir de l’archive

    1. toto> cd /tmp

 

    1. toto> tar xvf /dev/rmt0 /home/toto/lettre

 

6. Création d’une archive sur le disque

    1. toto> tar cvf /tmp/archive.tar /home/toto

 

7.2. Compression de fichiers

La commande compress comprime un fichier donné et lui associe l’extension .Z. La décompression d’un fichier compressé par compress se fait avec la commande uncompress.

La syntaxe de la commande est :

    1. compress [ -f ] [ -v ] [ -c ] [ name … ]

 

    1. uncompress [ -f ] [ -v ] [ -c ] [ name … ]

 

La commande gzip comprime un fichier donné et lui associe l’extension .gz ou gzip. La décompression se à l’aide de la commande gunzip

    1. gzip [ -acdfhlLnNrtvV19 ] [ name … ]

 

    gunzip [ -acfhlLnNrtvV ] [ name … ]

99. Trucs et astuces

Comment se retrouver dans la désignation des périphériques sous Linux

Disque dur IDE
/dev/hda Disque dur complet relié à l’interface maître primaire
/dev/hda1(x) 1ère partition reliée à l’interface maître primaire. (x)ème partition reliée à l’interface maître primaire
/dev/hdb Disque dur complet relié à l’interface esclave primaire
/dev/hdb1(x) 1ère partition reliée à l’interface esclave primaire. (x)ème partition reliée à l’interface esclave primaire
/dev/hdc Disque dur complet relié à l’interface maître secondaire
/dev/hdc1(x) 1ère partition reliée à l’interface maître secondaire. (x)ème partition reliée à l’interface maître secondaire
/dev/hdd Disque dur complet relié à l’interface esclave secondaire
/dev/hdd1(x) 1ère partition reliée à l’interface esclave secondaire. (x)ème partition reliée à l’interface esclave secondaire
Disques durs SCSI
/dev/sda Totalité du premier disque SCSI
/dev/sda1(x) 1ère partition du premier disque dur SCSI. (x)ème partition du premier disque SCSI
/dev/sda Totalité du deuxième disque SCSI
/dev/sda1(x) 1ère partition du deuxième disque dur SCSI. (x)ème partition du deuxième disque SCSI
CD-Rom SCSI
/dev/scd0 1er lecteur de CD-Rom SCSI
/dev/scd1 2ème lecteur de CD-Rom SCSI
CD-Rom(propriétaires)
/dev/cdrom Lien vers le lecteur réel par exemple /dev/hdc
/dev/mcd Lecteur de CD-Rom Mitsumi
/dev/sonycd Lecteur de CD-Rom Sony CDU 3la
Streamer
/dev/scanner Lien vers le scanneur réellement utilisé
/dev/rmt0 1er streamer SCSI (par exemple DAT)
/dev/rmt1 2ème streamer SCSI
/dev/ftape Floppy Streamer
Souris
/dev/mouse Lien vers la souris réellement utilisée
/dev/psaux Souris PS/2
/dev/inportbm Souris série Microsoft
/dev/logibm Souris série Logitech
/dev/cua1 à /dev/cua(x) Les souris série standard sont définies via le fichier de périphérique de l’interface série à laquelle elles sont reliées
Ports séries
/dev/modem Lien vers le port série physique auquel le modem est relié
/dev/cua1 à /dev/cua(x) Port série de 0 à x pour les connexions modem
/dev/ttys0 à /dev/ttys(x) Port série de 0 à x
Divers
/dev/sdb1 Clef USB dans un environement avec un disque SCSI

Comment monter une clef USB dans un environement SCSI ?

Pour monter la clef manuellement(user root)

a) Créez un point de montage, à l’aide de la commande :

mkdir /mnt/cle

b) Monter le périphérique, à l’aide de la commande :

mount -t vfat /dev/sd(x)1 /mnt/cle

Dans mon cas le (x) est remplacé par le b => /dev/sdb1 est le périphérique de ma clef.

Pour monter la clef automatiquement(user root)

a) Créez un point de montage, à l’aide de la commande :

mkdir /mnt/cle

Ajouter une ligne au fichier /etc/fstab comme ci-dessous :

/dev/sdb1 /mnt/cle vfat defaults,rw,user,noauto 0 0

Voici un petit aperçu des propriétés :

/dev/sdb1

    1. : représente la partition du périphérique

/mnt/cle

    1. : représente le point de montage

vfat

    1. : le système de fichier. Le système de fichier fat est employé sur la majorité des clés.

rw

    1. : permet de monter le système en lecture/écriture

user

    1. : un utilisateur autre que root peut monter le périphérique

noauto

    : Le système de fichier doit etre monté explicitement.

Monter la clef en tapant :

mount /mnt/cle

mnt/cle est le point de montage défini dans le fichier /etc/fstab

Pour démonter la clef (user root)

a) Pour vérifier les périphériques montés taper la commande :

mount

b) Arrêter la clef à l’aide de la commande :

umount /deb/sdb1

    1. ou umount

/mnt/cle

How to configure NFS ?

A) On the server side

1) Install nfs-kernel-server (Linux suse)

sudo zypper install nfs-kerne-server

2) Edit the /etc/exports file

vi /etc/exports

/directory-to-export *(ro)

3) Restart the nfs server

/etc/init.d/nfsserver restart

B) On the client side

1) Create a sharee directory

mkdir /home/nsf_local

2) Mount the filesystem

mount nfsserver:/directory-to-export /home/nsf_local

3) Mount the filesystem at system restart

vi /etc/fstab

nfsserver:/directory-to-export /home/nfs_local/ nfs defaults 0 0

 

2010-09-21