310 lines
		
	
	
		
			8.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			310 lines
		
	
	
		
			8.4 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
 | 
						|
 | 
						|
 |