497 lines
14 KiB
Plaintext
Executable File
497 lines
14 KiB
Plaintext
Executable File
15 octobre 2008
|
||
|
||
====== Gestion des utilisateurs ======
|
||
|
||
===== Général =====
|
||
|
||
Chaque utilisateur possède :
|
||
|
||
* identifiant
|
||
* mot de passe
|
||
* uid : numéro d'utilisateur
|
||
* gid : numéro de groupe
|
||
* un répertoire "home"
|
||
* un shell de démarrage par défaut
|
||
|
||
Un groupe :
|
||
|
||
* un nom
|
||
* un gid
|
||
|
||
Type d'utilisateurs :
|
||
|
||
* root (uid=0) : pas concerné par les droits
|
||
* application (uid > 0, et < à 500)
|
||
|
||
par exemple : lp, apache, ... => limiter l'accès des applications sur les fichiers
|
||
|
||
Fichiers importants :
|
||
|
||
* /etc/login.defs : politique employée pour les mots de passe
|
||
* /etc/nsswitch.conf : mode d'authentification qu'on va utiliser => utile pour LDAP ou NIS
|
||
* /etc/passwd
|
||
* /etc/group
|
||
* /etc/shadow
|
||
|
||
===== Le fichier **/etc/passwd** =====
|
||
|
||
Il suit la chaîne suivante :
|
||
|
||
<code bash>
|
||
login:passwd:pid:gid:gecos:homedir:shell
|
||
</code>
|
||
|
||
===== Le fichier **/etc/group** =====
|
||
|
||
Il suit la chaîne suivante :
|
||
|
||
<code bash>
|
||
group:passwd:gid:logins
|
||
</code>
|
||
|
||
===== Le fichier **/etc/shadow** =====
|
||
|
||
Il suit la chaîne suivante :
|
||
|
||
<code bash>
|
||
login:passwd:last:min:max:inactif:expire:drapeau
|
||
</code>
|
||
|
||
inactif : durée d'inactivité "légale" d'un compte
|
||
|
||
===== Gestion d'utilisateurs, groupe et mots de passe (mode assisté) =====
|
||
|
||
On fait les commandes suivantes :
|
||
|
||
* useradd/del/mod
|
||
* groupadd/del/mod
|
||
* passwd
|
||
|
||
==== Utiles ====
|
||
|
||
Pour les utilisateurs :
|
||
|
||
* id => uid, gid
|
||
* su ou su -s => pour être root sans limite de temps
|
||
|
||
Sur les fichiers :
|
||
|
||
* chfn : changement gecos
|
||
* chsf : changement de shell
|
||
|
||
* makepasswd
|
||
* openssl passwd
|
||
* crypt
|
||
|
||
====== Compilation du noyau ======
|
||
|
||
===== Installation =====
|
||
|
||
Pour installer son noyau il faut :
|
||
|
||
* Récupérer le noyau :
|
||
<code bash>
|
||
wget http://domaine.com/noyau.tar.gz
|
||
</code>
|
||
* Se placer au bon endroit :
|
||
<code bash>
|
||
cd /usr/src/linux2.X
|
||
</code>
|
||
* tar xvf linux-2.X.YY.tar.gz
|
||
* make config, puis question Y/m/n
|
||
* Y : compiler le noyau
|
||
* m : compiler en module
|
||
* n : ne rien faire
|
||
|
||
===== Compilation du noyau =====
|
||
|
||
Compilation du noyau :
|
||
|
||
<code bash>
|
||
make clean && make dep && make image
|
||
</code>
|
||
|
||
Compilation des modules :
|
||
|
||
<code bash>
|
||
make module
|
||
</code>
|
||
|
||
Installation :
|
||
|
||
<code bash>
|
||
make install
|
||
</code>
|
||
|
||
====== Architecture de réseau sous UNIX ======
|
||
|
||
Uniquement pour des réseaux de confiance (pas très sécurisé, voire pas du tout).
|
||
|
||
===== Solution X-Window =====
|
||
|
||
L'objectif est de pourvoir à un ensemble d'utilisateur un accès réparti à leurs données.
|
||
|
||
Serveur (fichiers, etc.)
|
||
|
||
Client X11
|
||
|
||
+----+
|
||
| |-------- Client
|
||
/| |\
|
||
/ | | \
|
||
/ +----+ \
|
||
Client Client
|
||
(Serveur X11)
|
||
|
||
Il y a deux façons pour se faire :
|
||
|
||
* terminal texte (getty)
|
||
* terminaux graphiques : Terminaux X sur lequel un serveur X11 est installé, ce qui implique au minimum d'avoir une carte réseau
|
||
|
||
X11 est le protocole standard client/serveur (graphique) d'UNIX. Pour s'y connecter on utilisera les sockets (via TCP/IP).
|
||
|
||
X-Window s'est inspiré du travail de **Rank Xerox** nommé WIMP( = Window, Icons, Menus, Pointer).
|
||
|
||
Un des clients indispensable à un serveur X est le Window Manager qui gère le déplacement des fenêtres.
|
||
|
||
==== Contrôle d'accès ====
|
||
|
||
Deux méthodes :
|
||
|
||
* Clé de session : cookie. On manipule alors les cookies avec la commande **xauth**
|
||
* xauth list
|
||
* xauth add
|
||
* xhost : manipuler l'accès des machines sans les bons cookies
|
||
|
||
Semaine prochaine nous utiliserons la seconde méthode.
|
||
|
||
==== Démarrage d'un terminal X ====
|
||
|
||
* Chargement des paramètres réseau puis récupération du système ( NFS + DHCP / BOOTP )
|
||
* Démarrage du serveur X11
|
||
|
||
Côté client : XDMCP (X Display Manager Control Protocol).
|
||
|
||
XDMCP dispose de 2 modes :
|
||
* mode direct : X -query IP [:n°]
|
||
* mode indirect : indirection via une autre machine
|
||
|
||
==== Avantages ====
|
||
|
||
* Fiabilité (à part la carte réseau, rien de spécial pour les terminaux X
|
||
* Confort de travail : juste l'écran, donc pas de bruits de la tour, etc.
|
||
* Gestion centralisée des comptes (facile pour l'administrateur)
|
||
* Administration aisée des TX
|
||
|
||
==== Inconvénients ====
|
||
|
||
* Charge réseau : pénible si pas de bande passante suffisante
|
||
* Charge processeur : si plus de 100 équipements qui tournent à plein régime sur une machine pas assez suffisante pour tenir la charge, il y aura des soucis de puissance
|
||
* Pas de périphériques locaux : pas de clé USB, disquettes, etc.
|
||
* Sécurité : ça marche sur réseau de confiance, mais pas évident à gérer. Les données passent en clair sur le réseau
|
||
* Prix : pour le serveur ...
|
||
|
||
====== NFS / NIS : solution distribuée ======
|
||
|
||
===== Partage des fichiers avec NFS (Network File System) =====
|
||
|
||
Architecture client / serveur : le client veut les fichiers, le serveur les donne. Comme les fichiers sont un peu partout, chaque machine est à la fois client et serveur.
|
||
|
||
Le serveur __exporte__ des répertoires (/etc/export) vers machines nommées explicitement via leurs IPs.
|
||
|
||
Le client __monte__ ses répertoires (des sytèmes de fichiers de type NFS).
|
||
|
||
La sécurité vient seulement des identifiants ... donc si on accède avec une machine en tant que ROOT, NFS croit qu'on a tout les droits sur les fichiers.
|
||
|
||
===== NFS, côté serveur =====
|
||
|
||
3 démons permettent à NFS de tourner :
|
||
|
||
* rpc.nfsd : exportation de fichiers (requêtes de transfert de fichiers)
|
||
* rpc.mountd : demande de montage des clients (requêtes de montage)
|
||
* rpc.lockd : vérifier à ce que le fichier reste cohérent (verrouillage de fichiers lorsqu'ils sont utilisés)
|
||
|
||
NFS peut tourner en UDP ou en TCP.
|
||
|
||
La vérification des droits d'accès se fait en 2 temps :
|
||
|
||
* Le //portmapper// (démon portmap) associant un numéro de port à un service RPC (Remote Procedure Call) peut vérifier grâce à TCPwrappers que la machine a le droit d'accès
|
||
* Si ce droit est acquis, mountd vérifie que l'entrée dans **/etc/exports** existe bien. Finalement nous travaillerons principalement dans ce fichiers pour l'ensemble des droits
|
||
|
||
==== 1 exemple de ligne dans /etc/exports ====
|
||
|
||
<code bash>
|
||
/CDROM-ro,access=130.79.92.15,anon=0
|
||
</code>
|
||
|
||
===== NFS, côté client =====
|
||
|
||
Commande manuelle :
|
||
<code bash>
|
||
mount serveur:/rep /point_de_montage
|
||
</code>
|
||
|
||
==== Paramètres d'écriture dans NFS ====
|
||
|
||
Options pour l'export de fichiers :
|
||
|
||
* rsize,wsize : taille des blocs transmis par NFS. Exemple : 8ko (bon compromis)
|
||
* hard (si prob réseau, l'appli fige) / soft ( = un timeout, si aucune réponse au bout d'un moment, il s'arrête et ne cherche pas à comprendre)
|
||
|
||
* * * *
|
||
|
||
Les démons côté client :
|
||
|
||
* rpc.lockd
|
||
* rpc.statd : notifieur de redémarrage, il permet de restaurer les locks au redémarrage
|
||
|
||
L'authentification par uid => aucune sécurité
|
||
|
||
La commande **exportfs -a** permet de (ré)-exporter toutes les entrées de /etc/exports.
|
||
|
||
====== NIS, Network Information Service ======
|
||
|
||
L'objectif est de centraliser les mots de passe.
|
||
|
||
Tout est dans ce fichier : **/etc/nsswitch.conf** ; c'est l'ordre d'authentification.
|
||
|
||
NIS a été crée par SUN sous le nom de YellowPages mais BT (Britisch Telecom) avait déjà déposé le nom.
|
||
|
||
Authentification système à plat contravenant à LDAP.
|
||
|
||
Architecture client/serveur
|
||
|
||
Pour un accès rapide, la base de données est construite avec les fichiers ASCII du système : /etc/passwd et /etc/shadow.
|
||
|
||
Pour éviter un trou de sécurité, il faut bloquer l'accès à la commande permettant de voir les mots de passe chiffrés.
|
||
|
||
Les fichiers sont donc hachés au format [n|g]dbm (n = new, g = gnu).
|
||
|
||
Sur le serveur on va créer un domaine et des sous domaines, mais rien à voir avec les domaines réseaux DNS.
|
||
|
||
<code bash>
|
||
+::::::
|
||
</code>
|
||
|
||
Ce code dit d'aller sur le serveur NIS pour s'authentifier (centralisation de l'authentification)
|
||
|
||
NYS : corrige les failles de sécurité
|
||
|
||
NIS+ : adapté aux réseaux de grande taille
|
||
|
||
NIS côté serveur\\
|
||
démon ypserv\\
|
||
éventuellement utilisé conjointement avec TCPwrappers comme pour NFS
|
||
|
||
Sécurité : /var/yp/secuevents\\
|
||
Configuration : /etc/ypserv.conf\\
|
||
Commande pour le peuplement de la base : **ypinit-m** (prend les trois fichiers nécessaires, les prépare, les mélanges, etc et peuple la base de données)
|
||
|
||
ypinit utilise un makefile spécifique : /var/yp/Makefile
|
||
|
||
Modifier les mots de passe : yppasswd
|
||
|
||
===== NIS, côté client =====
|
||
|
||
Commande démon ypbind
|
||
|
||
Fichier de configuration : yp.conf (nom de domaine puis adresse IP du serveur)
|
||
|
||
Étapes supplémentaires :
|
||
|
||
* Modifier nsswitch.conf
|
||
* Ajouter +:::::: à la fin de /etc/passwd
|
||
|
||
ypcat : affichages des tables en ASCII
|
||
|
||
ypmatch <table><nom> : toutes les infos de la personne
|
||
|
||
====== Système de fichiers ======
|
||
|
||
Microsoft :
|
||
|
||
FAT (File Allocation Table)
|
||
|
||
FAT12, FAT16, FAT32, VFAT
|
||
|
||
+------+---------+----------------------+----------------------+-------------------+------+------+-----+-----+
|
||
| Boot | options | Table d'allocation 1 | Table d'allocation 2 | Répertoire racine | Bloc | Bloc | ... | ... |
|
||
+------+---------+----------------------+----------------------+-------------------+------+------+-----+-----+
|
||
|
||
FAT16 : Adresse sur 1- bits => 2^16 clusters --> FAT dispose de 2 puissance 16 cases.
|
||
|
||
Taille de la FAT : 2x2^16 = 128Ko (va contenir une suite d'addresses)
|
||
|
||
===== Organisation du répertoire racine =====
|
||
|
||
+---+---+---+---+---+---+---+---+
|
||
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|
||
+---+---+---+---+---+---+---+---+
|
||
|
||
1. Nom de fichier sur 8 octets
|
||
2. Extension sur 3 octects
|
||
3. Attributs sur 1 octets
|
||
4. Réservé sur 10 octects
|
||
5. Heure sur 2 octets
|
||
6. Date sur 2 octets
|
||
7. Adresse du premier bloc, sur 2 octets
|
||
8. Taille, sur 4 octets
|
||
|
||
===== NTFS (New Technology File System) =====
|
||
|
||
Vient de NT3.1 en 1993
|
||
|
||
* L'arborescence des répertoires est sous la forme d'un arbre B+ (permet de parcourir la base de données de manière plus rapide). Ce n'est pas pareil que l'arborescence d'un dossier par exemple, c'est très proche du côté base de données.
|
||
* Information sur les clusters sont sotckés avec chaque cluster et non dans une FAT
|
||
* Gestion de très gros fichiers
|
||
* Utilisation d'une technologies ACL (Access Control List)
|
||
* Système journalisé => on note tout dans un journal
|
||
|
||
Inconvénients :
|
||
|
||
* Moins étendu que la FAT
|
||
* Grosse perte de place
|
||
|
||
===== Tableau comparatif des différentes FAT et de NTFS =====
|
||
|
||
+--------+----------+----------+---------------+
|
||
| FAT 12 | FAT 16 | FAT 32 | NTFS |
|
||
+----------+--------+----------+----------+---------------+
|
||
| Taille | | 2Go (95) | | |
|
||
| max de | 32 Mo | | 4Go | 16To |
|
||
| fichiers | | 4Go (NT) | | |
|
||
+----------+--------+----------+----------+---------------+
|
||
| Nombre | | | | |
|
||
| max de | 4086 | 65 536 |4 177 290 | 4 294 967 295 |
|
||
| fichiers | | | | |
|
||
+----------+--------+----------+----------+---------------+
|
||
| Taille
|
||
| max | 32 Mo | 2Go/4Go | 32Go(+)| 256 Tb |
|
||
| volume
|
||
+----------+--------+----------+----------+---------------+
|
||
| Taille
|
||
| max nom
|
||
| de fichiers 8.3 8.3 8.3 ou 255 8.3 ou 255
|
||
+----------+--------+----------+----------+---------------+
|
||
|
||
|
||
===== Sous UNIX =====
|
||
|
||
+------+-------+-------+----------------------------+--------------------+------+-------+-----+-----+------+
|
||
| Boot | Super | Block | Informations d'allocations | Liste des i_noeuds | Bloc | Bloc2 | ... | ... | Bloc |
|
||
+------+-------+-------+----------------------------+--------------------+------+-------+-----+-----+------+
|
||
|
||
* Super Block : Informations sur le FS lui - même (structures, dates de MàJ, etc.)
|
||
* Informations d'allocations : Carte d'allocation des i-noeuds et des blocs
|
||
* Liste des i_noeuds : description de fichiers physiques
|
||
|
||
==== Structure d'une inode ====
|
||
|
||
+----------+-----------+
|
||
| Mode | Proprio |
|
||
+----------+-----------+
|
||
| Taille en octets |
|
||
+----------------------+
|
||
| Dates |
|
||
+----------+-----------+
|
||
| Groupe | Liens +
|
||
+----------+-----------+
|
||
| Taille en blocs |
|
||
| de 512 octets |
|
||
+----------------------+
|
||
| Flags |
|
||
+----------------------+
|
||
| Adresse en bloc de |
|
||
| données |
|
||
+----------------------+
|
||
|
||
sous EXT2 --> 15
|
||
|
||
=== Adressage en bloc de données ===
|
||
|
||
+-----------------------------+
|
||
| 3 Adresse direct |
|
||
+-----------------------------+
|
||
| 7 |
|
||
+-----------------------------+
|
||
| 17 |
|
||
+-----------------------------+ Cette table x15
|
||
| 8 |
|
||
+-----------------------------+
|
||
| Adressage simple indirection|
|
||
+-----------------------------+
|
||
| Table indirection |
|
||
+-----------------------------+
|
||
| Triple indirection |
|
||
+-----------------------------+
|
||
|
||
==== Histoire de SGF ====
|
||
|
||
* Ext2 (système natif)
|
||
* Ext3 (2001) Système journalisé + ext2
|
||
* Ext4 (2006) Gestion de très gros disques et très peu de fragmentation
|
||
* ReiserFS (2001) : le plus performant des systèmes de fichiers
|
||
|
||
==== Comparatif ====
|
||
|
||
<thead>
|
||
<tr>
|
||
<td></td>
|
||
<td>Ext2</td>
|
||
<td>Ext3</td>
|
||
<td>Ext4</td>
|
||
<td>ReiserFS</td>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td>Taille max d'un fichier</td>
|
||
<td>2To</td>
|
||
<td>2To</td>
|
||
<td>2To</td>
|
||
<td>8To</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Nombre max de fichiers</td>
|
||
<td>536 870 912</td>
|
||
<td>idem</td>
|
||
<td>? (trop grand)</td>
|
||
<td>4294 967 293</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Taille max d'un volume</td>
|
||
<td>4To</td>
|
||
<td>4To</td>
|
||
<td>1024^2 To</td>
|
||
<td>16 To</td>
|
||
</tr>
|
||
|
||
</tbody>
|
||
|
||
==== Les fichiers ====
|
||
|
||
* Montage automatique : **/etc/fstab et /etc/mtab**
|
||
* Montage manuel :
|
||
<code bash>
|
||
mount de dir type options
|
||
</code>
|
||
|
||
dev: /dev/sdxy où x = lettre de l'alphabet du DD et y le numéro de partition dans la table de partition
|
||
dir: point de montage
|
||
type: ext2,vfat,...
|
||
options: ro, rw, uid, gid, defaults, ...
|
||
|
||
* fsck : cohérence du FS
|
||
* fdisk : partitionnement en ligne de commande
|
||
* pour ext2 :
|
||
* mke2fs : créatiopn du FS (formatage)
|
||
* e2fsck : vérification et correction
|
||
* dumpe2fs : affichage des paramètres
|
||
* debugfs : déboguage manuel
|
||
* tune2fs : réglages et configuration
|
||
* lsattr / chattr : montre beaucoup d'attributs des fichiers (immuable [ni modifié], suppression sécurisée, etc.)
|
||
* vmstat
|
||
* free : mémoire
|
||
* df -k : espaces disque
|
||
|