Cours Linux 2008
Cours Linux 2008
Cours Linux 2008
Premiers pas
Avril 2008
ii
Préambule
Préambule iii
5 Objectif installation 13
5.1 L’exploration du système . . . . . . . . . . . . . . . . . . . . . . 13
5.1.1 Le partitionnement . . . . . . . . . . . . . . . . . . . . . 13
5.1.2 Les paramètres réseau : . . . . . . . . . . . . . . . . . . . 15
5.1.3 Les paramètres pour X : . . . . . . . . . . . . . . . . . . 15
5.1.4 Le matériel pour booter . . . . . . . . . . . . . . . . . . . 16
5.2 Une première installation . . . . . . . . . . . . . . . . . . . . . . 16
vi TABLE DES MATIÈRES
6 L’utilisateur 19
6.1 Informations et authentifications, bases de donnèes locales et cen-
tralisèes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.1.1 Locales : . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.1.2 Centralisées : . . . . . . . . . . . . . . . . . . . . . . . . 20
6.2 Création de compte . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.2.1 local . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.2.2 centralisé . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6.3 Environnement . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.4 Fichiers de configuration . . . . . . . . . . . . . . . . . . . . . . 24
6.4.1 Configuration par défaut, générale : . . . . . . . . . . . . 24
6.4.2 Fichiers de configuration de l’utilisateur : . . . . . . . . . 24
6.4.3 Quelques essais de modifications . . . . . . . . . . . . . . 24
6.5 Environnement X . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.6 En prime : les scripts, un aperçu . . . . . . . . . . . . . . . . . . 26
10 NFS 53
10.1 Côté serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
10.2 Côté client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
11 Sécurité 55
11.1 Introduction à SELinux : . . . . . . . . . . . . . . . . . . . . . . 55
11.2 Firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
11.2.1 Paramétrage plus fin, exemple d’un serveur NFS3 . . . . . 56
12 SAMBA 59
12.1 Serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
12.2 Client, les outils . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
12.2.1 Graphiques . . . . . . . . . . . . . . . . . . . . . . . . . 60
12.2.2 Lignes de commande . . . . . . . . . . . . . . . . . . . . 61
13 Connexions à distance 63
13.1 SSH, Secure SHell . . . . . . . . . . . . . . . . . . . . . . . . . 63
13.1.1 ssh et scp . . . . . . . . . . . . . . . . . . . . . . . . . . 63
13.1.2 ssh et les clés . . . . . . . . . . . . . . . . . . . . . . . . 64
13.2 Autres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
13.3 Terminal distant . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
13.4 VPN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Annexe 65
viii TABLE DES MATIÈRES
A Organisation linuxline.epfl.ch 65
A.1 Répertoires de base . . . . . . . . . . . . . . . . . . . . . . . . . 65
A.1.1 fedora . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
A.1.2 RedHatEnterprise . . . . . . . . . . . . . . . . . . . . . . 65
A.2 Mises à jour Fedora . . . . . . . . . . . . . . . . . . . . . . . . . 65
A.3 Accès . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
B Editeur VI 67
B.1 Fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
B.1.1 Mode commande . . . . . . . . . . . . . . . . . . . . . . 67
B.1.2 Mode insertion . . . . . . . . . . . . . . . . . . . . . . . 67
B.1.3 Mode ligne . . . . . . . . . . . . . . . . . . . . . . . . . 68
B.1.4 Quelques indications sommaires . . . . . . . . . . . . . . 68
B.2 Mode d’emploi . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
B.3 Autres éditeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
C kickstart 71
D grub 75
D.1 Spécifier une partition et des fichiers dans le GRUB : . . . . . . . 75
D.1.1 Désignation des périphériques de stockage . . . . . . . . 76
D.1.2 Désignation des partitions . . . . . . . . . . . . . . . . . 76
D.1.3 Désignation des fichiers par leur nom . . . . . . . . . . . 76
D.1.4 Désigner un périphérique par défaut . . . . . . . . . . . . 76
D.2 Quelques exemples de commandes . . . . . . . . . . . . . . . . . 77
D.2.1 Commandes de base pour amorcer un noyau . . . . . . . 77
D.2.2 Retrouver sur quelle partition sont les fichiers d’amorçage 77
D.2.3 Restaurer un secteur de boot sur un disque dur . . . . . . 77
D.3 Exemple de fichier /etc/grub.conf . . . . . . . . . . . . . . . 77
E vncviewer et X-win32 79
E.1 La base, vnc, Virtual Network Computer : . . . . . . . . . . . . . 79
E.1.1 Côté linux : . . . . . . . . . . . . . . . . . . . . . . . . . 79
E.1.2 Côté windows : . . . . . . . . . . . . . . . . . . . . . . . 80
E.2 X-win32 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
E.2.1 Côté linux : . . . . . . . . . . . . . . . . . . . . . . . . . 80
E.2.2 Côté windows : . . . . . . . . . . . . . . . . . . . . . . . 80
E.3 Outils graphiques sous linux, reposant sur VNC . . . . . . . . . . 80
E.3.1 Serveurs . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
E.3.2 Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
TABLE DES MATIÈRES ix
Index 89
x TABLE DES MATIÈRES
Chapitre 1
Historique et distributions,
rappel
1.2 Distributions :
Une distribution comprend le noyau, des pilotes de périphériques, des
bibliothèques, des utilitaires d’installation et de post-installation, ainsi que des
logiciels.
Quelques distributions :
• Slackware, la première des distributions qui a popularisé Linux.
• RedHat : a développé le paquetage, un paquetage comprenant un logiciel, sa
documentation, et des utilitaires pour simplifier l’installation, la désinstallation
et la mise à jour. Ce concept a été repris ensuite par d’autres distributions. La
distribution de Redhat étant devenue commerciale, c’est Fedora qui a repris la
suite pour la distribution non commerciale.
• Debian : le développement de Debian est réalisé via Internet de la même
manière que le développement du noyau Linux. Utilise son propre format de
paquetage. C’est la distribution des utilisateurs confirmés et des puristes.
• Ubuntu : c’est LA distribution à la mode ! C’est une distribution basée sur
Debian, et adaptée par la société Canonical afin d’être plus facilement “prise en
main”. (pour faire un peu de mauvais esprit : debian.org alors que ubuntu.com )
• SuSE : distribution d’origine allemande, possède ses propres outils
d’installation, utilise les paquetages RedHat. SuSE sponsorisait le groupe
Xfree86 pour le développement de serveurs X de cartes graphiques récentes.
• Mandriva (ex Mandrake) : une bonne distribution pour les débutants
Chapitre 2
Structure du système
d’exploitation
2.1 Le noyau
• Contrôle les terminaux, les imprimantes, les disques, et autres périphériques
• Gère et alloue les ressources pour les utilisateurs.
• Gère le système de fichier
' $
Pour mémoire, des gestionnaires anciens mais très légers :
• twm : Le Tab Window Manager minimaliste, proposant la boîte
à outils la plus basique.
• fvwm2 : Dérivé du gestionnaire de fenêtres twm incorporant
une apparence 3D
• un site parmi d’autres : http://www.plig.org/xwinman/
& intro.html %
6 Structure du système d’exploitation
Chapitre 3
3.2 Super-utilisateur :
ATTENTION : root a tous les droits. Evitez de travailler systé-
matiquement sous le compte root !
On verra plus tard la commande sudo 6.2.1 à la page 20
8 Un tour dans l’environnement graphique
' $
Un paramétrage fin de Gnome est aussi possible avec
gconf-editor
C’est un peu comparable à la base de registres Windows (en
mieux, forcément . . .). Toutes les options de configurations sont
accessibles d’un seul coup, et on peut également intervenir sur des
paramètres « cachés »
On peut visualiser les configurations en entrant dans un browser
l’url about:config
& %
On peut aussi démarrer par défaut en mode console, c’est même
parfois indispensable ... on reviendra sur ce point plus tard
Chapitre 4
tail -f : lecture d’un fichier en continu, visualisation du flux
d’entrée dans ce fichier au fur et à mesure. Pratique pour examiner
les fichiers de log, et voir "en direct" ce qui se passe
4.5 Les redirections des commandes 11
ls /usr/bin | grep lp
ls /etc/init.d/p* | xargs cat
ls | xargs du sh
script -f essai.txt
...
exit (pour terminer la commande script et fermer le fichier)
12 Les premières commandes
Chapitre 5
Objectif installation
Pour une nouvelle machine :on peut vérifier les listes de compatibilité hardware
sur le site http://bugzilla.redhat.com/hwcert/
le site http://bugzilla.redhat.com permet aussi de recher-
cher les bugs répertoriés, ou d’en signaler.
5.1.1 Le partitionnement
swap
Presque toutes les distributions vous obligent à utiliser une partition de swap
(=fichier d’échange). Cette partition servira à écrire lorsque la mémoire vive
déborde. Dans le temps, on disait que le swap devait faire le double de la taille de
la RAM. Maintenant que le kernel a changé et que les RAM sont énormes ainsi
que les disques durs, une fois la RAM est généralement suffisant..
racine, notée /
Ici se trouve la partition racine du système. Obligatoire. Plus ou moins grande
selon ce que vous mettrez dessus. Sachez que la saturation de cette partition est
14 Objectif installation
/boot
Il peut être bon que le système de démarrage soit sur une partition à part. Donc un
/boot en ext2, de très petite taille (150 Mo).
/home
Ici seront vos données. L’intérêt de les séparer physiquement est de pouvoir par
exemple réinstaller Linux sans toucher à vos données. Donnez la taille que vous
voulez. Le format peut être ext2 ou ext3.
Attention : il peut être intéressant de prévoir un automontage home. Dans ce cas là
il faudra donner un autre nom à cette partition, et les répertoires des utilisateurs
seront montés sous le nom symbolique de home.
/usr
Ici seront installés les programmes. Cette partition doit être de grande taille
(minimum 1,5 Go) si vous voulez beaucoup de programmes. Vous pouvez ne pas
créer de /usr. Simplement, votre / devra alors être plus grande. Et attention à ne
pas installer trop de programmes qui satureraient alors /. Format ext2 ou ext3.
(Cette partition est facultative)
/var
En résumé
Tous les répertoires qui n’ont pas une partition spécifique seront automatiquement
installés dans la partition /, dite partition racine, ou partition root, mais à ne pas
confondre avec le répertoire /root qui est le répertoire de l’utilisateur
administrateur root !
Au minimum : swap, /boot, / (racine, root) , /ma_partition
Et toujours disposer d’au moins UNE partition qu’on ne touchera pas si l’on doit
réinstaller le système.
5.1 L’exploration du système 15
#
lorsqu’on installe une nouvelle version du système, il est bon de
sauvegarder le répertoire /etc , le répertoire /var , le répertoire
/home
Si le répertoire /home est sur une partition,on pourra réinstaller
sans toucher à cette partition.
" !
être « bootable ».
' $
La commande dd permettait la fabrication de disquettes d’amor-
çage, elle est plutôt utilisée maintenant pour fabriquer un support
d’amorçage USB :
dd if=bootdisk.img of=/dev/sda
(à condition que le bios supporte le démarrage à partir d’un péri-
phérique USB)
& %
' $
L’image qui va permettre le démarrage de l’installation est spéci-
fique à la distribution que l’on veut installer : si on a gravé un CD
de boot à partir du répertoire fedora/fc5, on ne pourra pas démarrer
une installation de fedora fc7 !
Il est donc très important de bien repérer le répertoire à partir du-
quel on a fabriqué le matériel de boot pour pouvoir ensuite indi-
quer le bon répertoire NFS ,Network File System) lors de l’instal-
lation.
& %
– Serveur linuxline.epfl.ch
– Répertoire
Fedora : /export/mirror/fedora/f8/i386/os
RedHat Enterprise : /export/RHE/ws-5/update1/x86_32/iso
• Install custom
5.2 Une première installation 17
#
les paramétrages utilisés pour l’installation sont stockés automati-
quement dans un fichier /root/anaconda-ks.cfg
On peut donc ensuite sauvegarder, éventuellement modifier ce fi-
chier, et l’utiliser pour une autre installation en mode kickstart,
voir C à la page 71.
" !
' $
RHE : ATTENTION
Lors du premier démarrage : SAUTEZ l’étape d’enregistrement
proposée par défaut ! Cliquez sur « Tell me why i need ... », et
sur l’écran suivant sélectionnez « I can no complete registration
... ». Vous pourrez ensuite accréditer votre machine en utilisant un
script qui vous est fourni lorsque vous recevez votre accréditation,
ou en utilisant une ligne de commande.
& %
18 Objectif installation
Chapitre 6
L’utilisateur
#
Un même utilisateur peut appartenir à plusieurs groupes différents,
la commande newgrp permet de s’identifier comme appartenant
à tel ou tel groupe, et de bénéficier des permissions allouées à ces
groupes. La commande groups permet de voir à quels groupes
on appartient
" !
20 L’utilisateur
Les ACL , Access Control Lists, sont reconnues et utilisables, elles
permettent de positionner des permissions avec un grain beaucoup
plus fin que les simples niveaux utilisateur/groupe. Voir la section
7.6.3.3 à la page 40.
6.1.2 Centralisées :
Il est possible de chercher des données dans d’autres bases de données que les
fichiers locaux.
La plus importante pour l’EPFL : LDAP, Lightweight Directory Access Protocol,
annuaire pour toute la communautè de l’EPFL
Server : ldap.epfl.ch Base : o=epfl, c=ch
L’ordre de consultation pour les principales bases de données est fixé dans un
fichier
#/etc/nsswitch.conf
...
passwd : files ldap
shadow : files ldap
group : files ldap
hosts : files dns
On peut, en tant qu’utilisateur, lancer une commande qui nècessite les droits de
"root" en faisant prècèder cette commande de sudo Il faut cependant que
l’utilisateur fasse partie d’un groupe possédant les droits "sudoers".
man sudo
Ajouter l’appartenance au groupe wheel d’un utilisateur local
Examiner et modifier avec la commande visudo
6.2.2 centralisé
Paramétrage et validation de l’accès à une base LDAP :
utilisation d’un outil graphique au clic souris
Systems settings, Authentication
ou appelé en ligne de commande
system-config-authentication
(au besoin relancer ssh /etc/init.d/sshd , et le gdm manager
gdm-restart )
Création d’un répertoire de travail pour un utilisateur existant dans LDAP
cp -r /etc/skel /repertoire-home/nom-utilisateur
Attribution de ce répertoire è l’utilisateur :
chown -r nom-utilisateur /repertoire-home/nom-utilisateur
' $
On DOIT filtrer les autorisations de connections en modifiant dans
le fichier
/etc/ldap.conf
la valeur du paramètre pam_filter .
Par exemple pour autoriser les utilisateurs des groupes 10072 et
10073
pam_filter |(gidNumber=10072)(gidNumber=10073)
& %
' $
Il est possible d’utiliser un mode encrypté pour communiquer avec
le serveur LDAP, cf. la case Use_TLS . Si on utilise cette option,
il faut installer un certificat.
http://certauth.epfl.ch/CA/cacert.html
Ce certificat est normalement installé dans le répertoire
/etc/openldap/cacerts , mais on peut configurer le nom d’ac-
cès au certificat dans le fichier /etc/ldap.conf
& %
22 L’utilisateur
Il peut être nécessaire d’ajouter dans le fichier /etc/ldap.conf
une ligne nss_initgroups backlink pour diminuer le temps
de login des utilisateurs déclarés dans le serveur LDAP de l’EPFL
Il existe aussi des groupes gérés au niveau du serveur LDAP de
ATTENTION :si on utilise l’authentification LDAP, la configura-
tion par défaut peut rendre impossible l’accès aux comptes locaux,
y compris le compte root si l’accès au réseau est défectueux
6.3 Environnement
Un utilisateur va pouvoir personnaliser son environnement en paramètrant les
variables d’environnement dans des fichiers dits fichiers cachés (dont le nom
commence par un point, et qui ne sont « vus »que si on ajoute l’option -a è la
commande ls .
Si on a choisi l’interprèteur de commande bash les deux fichiers qui vont
permettre de personnaliser l’environnement de l’utilisateur sont :
.bash_profile exécuté è la connexion, personnalisation de la session de
travail
.bashrc lu au moment de l’exécution de .bash_profile : définition des
alias, définitions de fonctions etc.
Tous les systèmes d’exploitation proposent un certain nombre de ces variables qui
permettent aux applications d’obtenir des informations sur la configuration du
système, par ex. la variable TMP fournit le chemin du dossier temporaire.
La valeur d’une variable d’environnement peut être propre à chaque utilisateur ;
par exemple, la variable HOME destinée à fournir le chemin d’accès au répertoire
personnel de l’utilisateur contiendra la valeur /disqueA/titi pour l’utilisateur
titi, et /disqueC/toto pour toto. Pour les deux utilisateurs, un programme
utilisant la variable HOME (le nom de la variable est précédé du $ si l’on veut
indiquer la valeur de la variable ) fonctionnera de la mème manière, quelque soit
l’utilisateur, et quelque soit l’emplacement physique des répertoires personnels.
Un utilisateur peut définir et utiliser ses propres variables d’environnement. Il
suffit de modifier le fichier .bashrc pour définir,par exemple, une variable
donnant le chemin d’accès à un répertoire de données :
REPERTOIRE_DONNEES=/partage/donnees_a_traiter
Afin que cette variable soit utilisable par les programmes lancés par l’utilisateur, il
faut exporter cette variable, la rendre publique, en ajoutant
export REPERTOIRE_DONNEES
Les programmes et autres processus lancés ensuite hériteront de cette variable, et
pourront l’utiliser.
Les alias
C’ est le mécanisme qui permet de désigner une commande, ou une suite de
commandes, par un nouveau nom, le nom d’alias, et d’ajouter des options qui
seront automatiquement associées à une commande.
La commande alias permet de voir quels sont les alias, et d’en définir de
nouveaux. Pour supprimer un alias : unalias
Exemple d’alias :
Rappelons que plupart du temps il s’agit de fichiers dits silencieux, leur nom
commence par un point, et par défaut ils n’apparaissent pas avec la commande ls
lancée sans option , voir la section 6.3 à la page 22. Ils sont pris en compte
APRES les fichiers de configuration par défaut, et vont permettre à l’utilisateur de
personnaliser son environnement :
∼/.bash_profile, ∼/.bashrc , mais aussi ∼/.emacs si on travaille avec
l’éditeur emacs , les répertoires ∼/.gnome ou ∼/.kde
Rappel :∼ représente le répertoire home de l’utilisateur)
Variable PATH
• Examiner cette variable d’environnement :
set | grep PATH
• Modifier la variable d’environnement PATH en éditant et en
modifiant le fichier bash_profile pour ajouter un nouveau
chemin, par ex. /usr/local
• Faire prendre en compte les nouveaux paramètres :
source .bash_profile
• Réexaminer la nouvelle valeur de la variable :
set | grep PATH
6.4 Fichiers de configuration 25
' $
PATH est initialisé avec une liste minimale de chemin dans le fi-
chier /etc/profile . L’utilisateur pourra compléter cette liste
dans son fichier .bash_profile
6.5 Environnement X
Le bureau chargé par défaut pour l’ensemble des utilisateurs est défini dans le
fichier /etc/sysconfig/desktop .
Ressources X :
INITIATION
#!/bin/bash
# exemple2:test des parametres passes en ligne de commande
#
echo "mon nom est $0"
echo " J’ai $# parametres"
echo " Les voici : $* "
echo " Le premier est : $1"
#
6.6 En prime : les scripts, un aperçu 27
APPEL DE FONCTIONS
#!/bin/bash
# tstfic, appel de fonction
# entrer sur la ligne de commande des noms de fichiers et de repertoires
#
# Fonction
ifile() {
if test -f $f
then
return 0
else
return 1
fi
}
# Corps du script
for i
do
f=$1
echo "$1"
shift
if ifile
then
echo "$f est un fichier"
else
echo "$f n’est pas un fichier"
fi
done
#
28 L’utilisateur
CHAINES DE CARACTERES
#!/bin/bash
# Substitution d’un pattern è un autre dans un fichier texte
# i.e., "subst Smith Jones letter.txt".
ARGS=3
E_BADARGS=65 # Wrong number of arguments passed to script.
# Test number of arguments to script (always a good idea).
if [ $# -ne "$ARGS" ]
then
echo "Usage: ‘basename $0‘ old-pattern new-pattern filename"
exit $E_BADARGS
fi
#
old_pattern=$1
new_pattern=$2
#
if [ -f "$3" ]
then
file_name=$3
else
echo "File \"$3\"does not exist."
exit $E_BADARGS
fi
#
# Substitution pour TOUTES les occurences, cf. man sed
sed -e "s/$old_pattern/$new_pattern/g" $file_name
# ’s’ is, of course, the substitute command in sed,
exit 0 # Succes : returns 0.
6.6 En prime : les scripts, un aperçu 29
VARIABLES
#!/bin/bash
# Variables: assignment and substitution
a=375
hello=$a
echo hello # Not a variable reference, just the string "hello".
echo $hello
echo ${hello} # Identical to above.
#
hello="A B C D
echo $hello # A B C D
echo "$hello" # A B C D
# Quoting a variable preserves whitespace.
echo ’$hello’ #$hello
# Notice te effect of different types of quoting
exit 0
#!/bin/bash
# Lecture et affichage du fichier /etc/fstab.
File=/etc/fstab
{
read line1
read line2
} < $File
#
echo "Premiere ligne de $File:"
echo "$line1"
echo
echo "Seconde ligne de $File:"
echo "$line2"
exit 0
Quelques exemples sur
/net/linuxline/export/mirror/divers/cours/exo_rep
30 L’utilisateur
Chapitre 7
7.1.2 Partitions :
Un disque physique est en général découpé en partitions, ce sont des divisions
fonctionnelles du disque. Des informations sur ces partitions sont obtenues grâce
à la commande df Examen (et/ou création) des partitions d’un disque :
fdisk /dev/hda
parted
• vgdisplay
• lvdisplay
Une commande utile : lvmdump
7.2 Montage
Lorsque le système démarre, le système de fichier root (cad / ) est monté. Puis
les autres systèmes de fichiers seront montés selon les instructions contenues dans
le fichier /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/boot1 /boot ext2 defaults 1 2
LABEL=/travail /travail ext3 defaults 1 2
/dev/hda /media/cdrecorder auto pamconsole,exec,
noauto,managed 0 0
7.2.2 Automontage :
ls /net/linuxline/export/mirror/redhat
34 Première approche du système de fichier
Fichiers de configuration :
/etc/auto.master
# Sample auto.master file
# This is an automounter map and it has the following format
# key [ -mount-options-separated-by-comma ] location
# For details of the format look at autofs(5).
#/misc /etc/auto.misc --timeout=60
/net /etc/auto.net
/home /etc/auto.home
/etc/auto.home
#
coulmance localhost:/maison/coulmance
fabbri localhost:/groupe_dit/fabbri
michele ditsbpc16:/travail/michele
#
Pour créer un point de montage : mkdir point_de_montage
Un point de montage n’est rien d’autre qu’un répertoire VIDE
Un montage n’est possible que si le point de montage est VIDE
ls /sys
ls -lr /dev/disk/bypath
udevinfo -a -p /sys/block/sda
udevtest /sys/block/hda
Avec fedora6 ou RHEL5 :
on peut examiner ce qui se passe lorsqu’on connecte une clé USB
udevmonitor env
Une fois que le nouveau périphérique est devenu utilisable à travers un fichier, il
reste à avertir les utilisateurs que ce matériel est disponible. C’est HAL , Hardware
Abstraction Layer, qui va s’en charger en collectant et en rendant accessibles les
informations
lshal
Ensuite il faut faire parvenir les informations collectées par HAL à l’utilisateur.
HAL va « poster »un message, message qui sera pris en compte par d’autres
programmes utilisateurs grâce à D-bus (qui permet aux applications de
communiquer entre elles )
Finalement des logiciels de l’ environnement graphique
gnome-volume-manager par exemple, vont être capable grâce à DBUS de savoir
quand un CDROM est introduit, de quel type de CD il s’agit, et quelle est
l’application à lancer : lire un cd audio par exemple, et jouer la musique, ou bien
monter le périphérique et ouvrir nautilus pour montrer les fichiers.
36 Première approche du système de fichier
ls l /etc/hal/device.d
' $
/dev/null et /dev/zero : les données écrites sur ces fichiers
virtuels spéciaux sont éliminées. On peut aussi se servir de ces
pseudo-fichiers pour effacer le contenu d’un fichier :
cat /dev/null > fichier_à_effacer
Mais ATTENTION ces fichiers ne DOIVENT JAMAIS être effa-
cés.
Commandes pour les recréer « au cas où » :
mknod -m 666 /dev/null c 1 3
mknod -m 666 /dev/zero c 1 5
chown root :root /dev/null /dev/zero
& %
-R,-r : récursif
-i : interactif
38 Première approche du système de fichier
7.5.1.2 find
Rechercher (et pouvoir éliminer automatiquement) certains fichiers :
find . \(-name core) -size +1c print
find . type f mtime +7 print0 | xargs -0 rm -f
7.5.1.3 du
Afficher l’espace occupé par des utilisateurs :
cd /home
ls | xargs du -sk
• 3 types de permissions :
1. Lecture read, permet d’afficher le contenu d’un répertoire ou d’un fichier
2. Ecriture write, permet de modifier le contenu d’un fichier ou d’un
répertoire, de créer, de copier, ou de supprimer un fichier.
3. Exécution execute, permet d’exécuter un programme, permet de pouvoir
entrer dans un répertoire.
7.6.2 Appartenance
chown : changer le propriétaire d’un fichier uniquement si on est root.
Exemple :
chown coulmance:dit-sb un_fichier
ATTENTION : vérifier où l’on est dans l’arborescence avant de
7.8 Archivage
la commande star (ancienne commande = tar ) permet de créer une archive en
regroupant une partie d’une arborescence de fichiers dans un fichier unique. Ce
7.8 Archivage 41
fichier peut être créé sur le disque dur, sur une bande de sauvegarde etc.
7.8.1 Options :
• c générer une archive
• t visualiser le contenu d’une archive
• x extraire une archive
• v verbose (afficher des informations sur les opérations)
• z compresser ou décompresser
• f nom du fichier
7.8.2 Utilisation
Niveaux de fonctionnement,
processus
8.1 Démarrage
4 Inutilisé
5 X11
6 Mise hors service et redémarrage : sert durant le redémarrage du système à
partir d’un niveau de fonctionnement (2, 3, 4, 5). Le système passera
ensuite au niveau 0.
Lors de la phase de démarrage, init doit savoir à quel niveau placer le système.
Pour cela, il recherche dans le fichier /etc/inittab la ligne qui configure ce
niveau par défaut :
id :5 :initdefault :
Pour connaître le niveau de fonctionnement : runlevel
Pour changer de niveau de fonctionnement : telinit , ou init
telinit 3 pour entrer en mode « réseau »si on est en niveau 1
telinit 5 pour entrer en mode graphique
telinit est surtout utile lorsqu’on a du démarrer en mode
« single user »et que l’on teste au fur et à mesure le démarrages
des différents services
à noter : Ctrl-Alt-F1 . . . Ctrl-Alt-F6 : passage en consoles
texte
Ctrl-Alt-Backspace pour « tuer »X
=> Mise en évidence des problèmes de sécurité. . .
46 Niveaux de fonctionnement, processus
more /etc/init.d/lpd
A tout moment, pour stopper, démarrer, relancer, examiner l’état d’un service :
/etc/rc.d/init.d/lpd status
/etc/rc.d/init.d/lpd stop
/etc/rc.d/init.d/lpd start
/etc/rc.d/init.d/lpd restart
Equivalent à la commande : service nom_du_service
Il est important de bien contrôler les services lancés au démarrage,
en particulier tous les services pouvant mettre en cause la sécurité
de la machine
8.7 Processus
8.7.1 Examen de l’état du système
Menu system tool, system monitor outil graphique
uptime, free, ps, top commandes en ligne
9.1 RPM
RedHat PackageManager : outil puissant, très utile
Cf une documentation http://linuxline.epfl.ch/Doc/
9.2 yum
9.2.1 Configuration
fichiers /etc/yum.conf
la ligne gpgcheck=1 signifie que par défaut les paquets doivent
être « signés »et qu’on doit avoir la clé permettant de vérifier l’au-
thenticité de ces paquets.
/etc/yum.repos.d/fedora-updates.repo
[updates-released]
name=Fedora Core $releasever - $basearch - Released Updates
#baseurl=ftp://linuxline/fedora-updates/5/i386
mirrorlist=ftp://linuxline/fedora/yum-fc6/local-updates
enabled=1
gpgcheck=1
Ne pas oublier d’importer les clés pour la vérification des paque-
tages, surtout avec l’option gpgcheck=1
Sous Fedora :
Aller sur le site http://rpm.livna.org
Installer un paquetage livna-release
Examiner les changements apportés dans le répertoire
yum.repos.d
#
Les distributions Debian (et donc ubuntu’s) utilisent un autre
format pour gérer les paquetages (.deb) et donc un autre ou-
til :Advanced Package Tool pour gérer les paquetages.
Cependant actuellement il existe des outils apt dans les distribu-
tions
"
RedHat, et des outils rpm dans les distributions Debian. !
52 Gestion des packages
Chapitre 10
NFS
autoriser l’exportation
Fichier /etc/exports :
#
#Exemple d’exportation
#
#Rep_local_exporté à_qui(comment)
#
/export/sic-ii suntest1.epfl.ch(rw)
/export/mirror *.epfl.ch(ro,insecure)
#
/etc/init.d/nfs restart
vérifier
showmount -e localhost
Attention si on a activé un firewall, voir la section 11.2 à la page
56
54 NFS
Essayer un montage
mount machine_distante_serveur:/rep_exp/mnt/rep_test
automontage
Voir la section 7.2.1 à la page 33 Si c’est bon, on peut essayer un auto-montage :
Fichier /etc/auto.master
/home auto.home --timeout 100
/net auto.net
/home et /net : répertoires sous lesquels seront monté les ressources d’après les
règles définies dans auto.home et auto.net
Ces points de montage doivent être VIDES
Sécurité
file:///net/linuxline/export/RHE/doc/rhe/RH-DOCS/rhel-rg-fr-4/
ch-selinux.html
http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/
selinux-guide/
« SELinux fournit un système de contrôle d’accès obligatoire (ou MAC, de
l’anglais Mandatory Access Control) intégré au noyau Linux. Sous un système
standard de contrôle d’accès discrétionnaire Linux (ou DAC, de l’anglais
Discretionary Access Control), une application ou un processus exécuté en tant
qu’utilisateur (UID ou SUID) reçoit la permission de l’utilisateur sur des objets
tels que des fichiers, des sockets et d’autres processus. L’exécution d’un noyau
MAC SELinux permet de protéger le système contre des applications
malveillantes ou défectueuses qui peuvent endommager ou détruire le système.
SELinux définit les droits d’accès et de transition de chaque utilisateur,
application, processus et fichier du système. SELinux gouverne alors les
interactions de ces sujets et objets à l’aide d’une politique de sécurité qui spécifie
le degré de rigueur ou de souplesse d’une installation donnée de Red Hat
Enterprise Linux. »
Les applications sont « confinées » : le comportement d’une application peut être
étudié, quels sont les ports utilisés, quels sont les fichiers utilisés, en écriture, en
lecture, etc ; des règles de fonctionnement « normal »de cette application sont
ainsi générées, et toute déviation à ces règles sera soit empêchée si le mode est
enforcing , soit signalée si le mode est permissive .
Pour vérifier le statut de SELinux : sestatus v
Pour examiner les droits d’accès SELinux des fichiers : ls Z
(user :role :type)
56 Sécurité
11.2 Firewall
Activation d’un firewall : Boîte à outil graphique :
Menu System Settings, Security level
system-config-securitylevel
Fichier : /etc/sysconfig/iptables
Création du fichier
/etc/sysconfig/nfs
#fichier /etc/sysconfig/nfs:
MOUNTD_PORT=4002
LOCKD_TCPPORT=4001
LOCKD_UDPPORT=4001
STATD_PORT=4000
#
redémarrer le service
/etc/init.d/nfs restart
11.2 Firewall 57
SAMBA
12.1 Serveur
Depuis la version 3, Samba va également permettre l’intégration d’une machine
linux dans Active Directory, et l’interrogation du serveur kerberos d’Active
Directory pour authentifier les utilisateurs, ce qui devrait permettre une unification
de la gestion des utilisateurs : authentification avec LDAP côté linux, avec
Kerberos côté Active Directory, l’identité, le numéro d’utilisateur, le mot de passe
étant alors identiques.
Pour permettre à des PC sous Windows d’accéder à des ressources disponibles sur
un système linux, il faut décrire les ressources mises à disposition : où, à qui etc.
Cf. des exemples de configurations dans
/net/linuxline/export/mirror/divers/samba3
Fichier /etc/smb.conf
[homes]
comment = Home {\%}u
browseable = no
writable = yes
[reputil]
comment = util
path = /export/util
writable = yes
browseable = yes
60 SAMBA
Positionnement du type d’authentification dans
/etc/samba/smb.conf :
security=ADS si on veut utiliser Active Directory
Ne pas oublier de configurer également l’authentification
kerberos
Configuration kerberos :
Outil graphique system-config-authentication
Ou édition et modification du ficher /etc/krb5.conf)
Exemple :
Realm SCX.INTRANET.EPFL.CH
KDCs SCX.INTRANET.EPFL.CH :88
smb://SERVERS
smb://linuxline
Pour accéder à une ressource d’un PC dans Active Directory avec konqueror on
pourra entrer dans l’ URL
smb://SCX.INTRANET.EPFL.CH\coulmance@siipc20/coulmance
C’est à dire
smb://domaine\user_name@host_name/share_name
webdav://linux.epfl.ch/site/linuxline/
...
• à l’ancienne :
mount -t smbfs -o username=coulmance/SCX.intranet.epfl.ch \
//scxdata/coulmance$ /home/coulmance/scxdata
62 SAMBA
Connexions à distance
' $
AUCUN accès sur une machine de l’EPFL n’est possible depuis
l’extérieur ; voir DIODE
http://dit.epfl.ch/page51041.html
Certaines machines pouvant être « ouvertes »dans certaines condi-
tions et sur demande, la forteresse n’est cependant pas inexpug-
nable !
& %
La redirection X n’est pas autorisée par défaut. C’est à dire qu’on n’a pas la
possibilité de lancer en ligne de commande à partir de la fenêtre terminal de la
machine distante,lorsqu’on est connecté, une commande permettant d’ouvrir une
application X, par ex. xclock sur l’écran de la machine sur laquelle on travaille.
L’autorisation de la redirection X se fait :
• côté client : fichier /etc/ssh/ssh_config ForwardX11 yes
• côté serveur : fichier /etc/ssh/sshd_config X11Forwarding yes
13.2 Autres
putty, winscp : pour se connecter à une machine linux depuis Windows
13.4 VPN
Virtual PrivateNetwork
http://network.epfl.ch/vpn/
Annexe A
Organisation linuxline.epfl.ch
i386 et x86_64
A.1.2 RedHatEnterprise
/export/RHE /ws-n ou /as-n (n : numéro de version)
/iso : images des CD
/i386 : distribution
/update n : mises à jour
les répertoires iso et os peuvent se trouver dans des sous-
répertoires x86_32 et x86_64
F-Errata :
/master : tous les derniers patchs
/patches : TOUS les patchs
A.3 Accès
• montage NFS /net/linuxline
• Samba, à partir de l’explorateur réseau sous Windows, group Servers ,
linuxline
• http://linuxline pour RHEL à partir de la version 4, pour fedora à partir de
la version 7
• ftp://linuxline pour les distributions fedora
Annexe B
Editeur VI
Editeur VI : pas très convivial, mais si utile qu’il est indispensable d’en connaître
les bases.
C’est un éditeur
• Interactif
• Visuel
• Utilisant un fichier temporaire (le document original est conservé jusqu’à ce
qu’une demande explicite d’écriture sur disque soit faite)
B.1 Fonctionnement
• Mode commande
• Mode insertion
• Mode ligne
kickstart
#System language
lang en{\_}US
#Language modules to install
langsupport en{\_}US fr{\_}FR --default en{\_}US
# CLAVIER
keyboard fr{\_}CH-latin1
# autre clavier courant :keyboard us
# SOURIS
mouse generic3ps/2
#System Timezone
timezone Europe/Zurich
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# ATTENTION ATTENTION ATTENTION PARTITIONNEMENT
# PREMIER EXEMPLE : ON PART DE RIEN
# ON VA CREER SUR LE PREMIER DISQUE IDE LES 3 PARTITIONS MINIMALES
# ON CREE SUR CE DISQUE 3 PARTITIONS INDISPENSABLES
# A PEU PRES STANDARD POUR LA TAILLE
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# UTILISATION DU SERVICE LDAP
# TRES PRATIQUE
#System authorization information
auth --useshadow --enablemd5 --enableldap --enableldapauth --ldapserver
ldap.epfl.ch --ldapbasedn o=epfl,c=ch
# Firewall configuration
firewall --enable
#Video
xconfig --depth 16 --resolution 640x480
%packages --resolvedeps
@System Tools
@Printing Support
# RHN
# INDIQUER votre cl\’e d’activation puis d\’ecommentez
#rhnreg{\_}ks --activationkey=nnnnnn
# configuration de la cliente RHN pour site proxy EPFL
#wget -O- http://rh-proxy/pub/conf{\_}proxy | bash
Annexe D
grub
http://doc.polynum.org/howto/grub/grub-howto.html
file:///net/linuxline/export/mirror/Docs/cours/grub
Le GRUB, Grant Unified Bootloader, possède de nombreux avantages par rapport
à LILO, ne serait-ce que la possibilité d’utiliser un shell : le GRUB est un
mini-système d’exploitation. Le programme, par exemple installé sur une
disquette, permet, sans noyau disponible sur celle-ci, d’aller en chercher un, et de
lui passer la main.
Le GRUB a été défini, dès l’origine, comme un outil dont l’objectif est d’être un
gestionnaire d’amorçage universel, puissant et flexible. Il dispose d’un mini-shell
autorisant l’exploitation de toutes les commandes internes. A l’aide d’un CD
contenant le GRUB, vous pouvez démarrer n’importe quel poste dès lors que vous
parvenez à retrouver, sur l’un des disques, un noyau. Et si le poste n’a pas de
disque ? C’est qu’il doit démarrer par le réseau, et cela, le GRUB sait le faire aussi.
stipule donc que le système de fichiers par défaut est celui existant sur la première
partition du premier disque dur.
vncviewer et X-win32
#!/bin/sh
# Uncomment the following two lines for normal desktop:
unset SESSION{\_}MANAGER
exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
startx &
80 vncviewer et X-win32
E.2 X-win32 :
E.2.1 Côté linux :
Autoriser le protocole XDMCP en modifiant le fichier
/etc/X11/gdm/gdm.conf
XDMCP enable=true
' $
L’administrateur peut modifier les configurations par défaut de
l’environnement Gnome
gconftool-2 −−direct −−config-source \
xml :readwrite :/etc/gconf/gconf.xml.defaults \
−−type bool \
&
−−set /desktop/gnome/remote_access/enabled true %
E.3.2 Clients
Un outil client pour KDE, qu’on peut aussi utiliser sous Gnome, il suffit d’avoir
installer le paquetage kdenetwork .
Accessible à partir de :
Applications, Internet, Remote Desktop Connection
Ou bien appeler la fenêtre graphique avec la commande krdc
Rappel : avec VNC, les communications ne sont pas chiffrées. On
peut sécuriser en utilisant un « tunnel »SSH
82 vncviewer et X-win32
Annexe F
F.4.2 growisofs
Pour un support DVD, on peut aussi utiliser la commande growisofs pour
fabriquer l’image et la graver.
Il est préférable de TESTER avant de graver , en utilisant l’option -dry-run
Exemple :
growisofs -dry-run -dvd-compat -Z /dev/scd0 -J -R
/chemin/repertoire
• option -Z pour graver une première session
• option -dvd-compat : ATTENTION cette option ferme le disque, on ne
pourra pas faire ensuite de multi-session (option -M, cf. ci-dessous), mais elle
offre une grande compatililité ensuite avec les lecteurs DVD.
• option -M : multisession, permet d’ajouter une nouvelle session aux
précédentes, tant que l’on n’a pas utilisé l’option -dvd-compat
Quelques liens :
http://www.novell.com/coolsolutions/tip/2289.html
Une référence pour d’autres jeux de clavier :
Linux essential keyboard shortcuts and sanity commands
http://linux-newbie.sunsite.dk/html#6.Linux%20Shortcuts%20and%
20Commands|outline
<Ctrl>d (pressed at the beginning of an empty line) Log out from the current
terminal. See also the next command.
<Ctrl>d Send [End-of-File] to the current process. Don’t press it twice else you
also log out (see the previous command).
<Ctrl>s Stop the transfer to the terminal.
<Ctrl>q Resume the transfer to the terminal. Try if your terminal mysteriously
stops responding. See the previous command.
<Ctrl>z Send the current process to the background.
exit Logout. I can also use logout for the same effect. (If you have started a
second shell, e.g., using bash, this command will make you exit the second
shell, and you will be back in the first shell, not logged out. Then use
another exit to logout.)
reset Restore a screwed-up terminal (a terminal showing funny characters) to
default setting. Use if you tried to "cat" a binary file. You may not be able to
see the command as you type it, but it still will work.
<MiddleMouseButton> Paste the text which is currently highlighted
somewhere else. This is the normal "copy-paste" operation in Linux. It a
fast and powerful supplement to the widely-known GUI "copy-paste"
menu-based operation. (It doesn’t work inside older versions of Netscape
which use the Mac/MS Windows-style "copy-paste" exclusively. It does
work in the text terminal if you enabled "gpm" service using "setup". It also
works inside any dialog boxes, etc.–really convenient !) It is best used with
a Linux-ready 3-button mouse (Logitech or similar) or else set "3-mouse
button emulation". The <MiddleMouseButton> is normally emulated on a
2-button mouse by pressing both mouse buttons simultanously.
∼ (tilde character) My home directory (normally the directory
/home/my_login_name). For example, the command cd ∼/my_dir will
change my working directory to the subdirectory "my_dir" under my home
directory. Typing just "cd" alone is an equivalent of the command "cd ∼". I
keep all my files in my home directory.
(dot ) Current directory. For example, ./my_program will attempt to execute
the file "my_program" located in your current working directory.
(two dots ) Directory parent to the current one. For example, the command cd
.. will change my current working directory one one level up.
Some additional KDE keyboard shortcuts (useful, but non-essential)
<Alt><Tab> Walk through windows. To walk backwards : <Alt><Shift><Tab>
<Ctrl><Tab> Walk through desktops. To walks backwards :
<Ctrl><Shift><Tab>
<Ctrl><Esc> Show the table of processes running on my system. Allow me to
kill any of the processes I started (or send other signals to them)
88 Quelques raccourcis clavier
/proc, 13 gdm-restart, 21
/swap, 13 getfacl,setfacl, 40
/var, 14 grep, 10
groups, 19
ACL, 20, 40 head, 10
Active Directory, 59 id, 10
alias, 23 ifconfig, 15
apt, 51 kill, 47
automount, 33 konqueror, 9
background, 48 locate, 10
boot, 45 ls, 10, 22, 37
bureau, 4 lvmdump, 32
Gnome, 8 makewhatis, 9
gnome, 8 man, 9
mkdir, 37
cifs, 61 modinfo, 62
commandes more, 10, 19, 37
alias unalias, 23 mount, 33, 54
apropos, 9 mv, 37
arp, 15 newgrp, 19
cat, 10, 19, 37 parted, 15
cd, 10, 37 pipe, 11
cdrecord, 83 ps, 47
chkconfig, 46 pvdisplay,vgdisplay,lvdisplay, 31
chmod, 39, 40 pwd, 10, 37
chown, 21 redirection, 11
cp, 10, 37 rm, 10, 37
dd, 16 rmdir, 37
df, 15 rpcinfo, 56
diff, 10 scp, 63
dmesg, 44 script, 11
du, 37 service, 46
fdisk, 15 sestatus, 55
find, 37 set unset, 23
free, 15, 47 showmount, 33, 53
fsck, 32 shutdown, 44
90 INDEX
smbacls, 40 passwd, 19
smbclient, 61 services, 56
ssh, 63 shadow, 19
ssh-add, 64 skel, 21
ssh-keygen, 64 smb, 59
sshd, 21 ssh, 63
sudo, 7, 21 system-auth, 22
sync, 44 X11, 15
system-config-authentication, 21 yum, 50
system-config-securitylevel, 56 firewall, 17, 55
tail, 10 foreground, 48
tar, 40
telinit, 45 gateway, 15
top, 47 grub, 17, 43, 47, 75
touch, 37
HAL, 35
umount, 34
uname, 47 kerberos, 59
uptime, 47 kickstart, 17, 71
visudo, 21 knoppix, 47
whatis, 9
who, 10 LDAP, 20, 20, 21
whoami, 10 liveCD, 47
LVM, 31
DHCP, 15
distribution, 2 MBR, 43
mount, 33
environnement, 22, 23
multiboot, 43
fichiers de configuration, 24
NFS, 16, 53, 56
.ssh, 64
auto.home, 54 outils graphiques
auto.master, 34, 54 authentication, 21
auto.net, 54 hardware browser, 13
cachés, 22, 24 konqueror, 60
DNS resolv.conf, 15 messages, 44
exports, 33, 53 pirut, 51
fstab, 15, 32 pup, 51
group, 19 Security level, 56
ifcfg, 15 system monitor, 47
inittab, 45 users, 20
iptables, 56
ldap.conf, 21 pam_mount, 62
network, 15 pare-feu, voir firewall
nfs, 56 partitionnement, 13, 31
nsswitch.conf, 20 permissions, 38
INDEX 91
portmapper, 56
RAID, 31
routeur, voir gateway
RPM, 49
runlevel, 44, 45
samba, 59
scripts, 26
SELinux, 55
services, 46
setgid, 40
setuid, 40
shell, 3, 7, 22
single user, 45
SSH, 63
sticky bit, 39
system monitor, 13
udev, 34
yum, 50