Cursus Solaris IS2

EssentielEssentiel

Laboratoire des Technologies Linux, SUPINFO Révision datée du30-11-2007 Copyright © 2007 SUPINFO

All rights reserved. Table des matières

1. Introduction à Solaris 10 ...... 1 1.1. Introduction ...... 1 1.1.1. Objectifs du module ...... 1 1.2. Qu'est ce que Solaris ? ...... 1 1.2.1. Historique ...... 1 1.2.2. Introduction à UNIX système V ...... 2 1.2.3. Versions et architectures supportées ...... 2 1.3. Obtenir Solaris 10™ ...... 4 1.4. Nouvelles fonctionnalités apportées par Solaris 10™ ...... 4 1.4.1. DTrace ...... 5 1.4.2. Performance réseau accrue ...... 5 1.4.3. Les « zones » ...... 5 1.4.4. Le système de fichiers ZFS ...... 6 1.4.5. Nouveau système de gestion des services ...... 6 1.4.6. Tolérance de pannes et d'erreurs ...... 6 1.4.7. Autres changements notables ...... 6 2. Installation de Solaris 10 ...... 8 2.1. Introduction ...... 8 2.1.1. Objectif du module ...... 8 2.2. Configuration minimale ...... 8 2.3. Les différents types d'installation ...... 9 2.3.1. Vocabulaire spécifique à Solaris et "Software Group" ...... 9 2.3.2. Installation en ligne de commande ...... 9 2.3.3. Installation avec l'interface graphique ...... 9 2.3.4. Mise à jour ...... 9 2.4. Les différentes méthodes d'installation ...... 10 2.4.1. ...... 10 2.4.2. WAN boot ...... 10 2.4.3. Flash archive ...... 10 2.4.4. Solaris Standard Upgrade method ...... 10 2.4.5. Solaris Live Upgrade ...... 10 2.5. Résumé des différentes installation ...... 11 2.6. Installation ...... 11 2.6.1. Installation sur une machine SPARC ...... 11 2.6.2. Installation sur une machine x86 ...... 13 2.7. Paquets et Patch ...... 14 2.7.1. Paquets ...... 15 2.7.2. Patchs ...... 17 3. Procédure de démarrage et d'arrêt ...... 20 3.1. Introduction ...... 20 3.1.1. Objectifs du cours ...... 20 3.2. OpenBoot PROM ...... 20 3.2.1. Introduction à l' OpenBoot PROM ...... 21 3.2.2. Commande de l'OpenBoot PROM ...... 21 3.2.3. La NVRAM ...... 21 3.2.4. Identification des périphériques de démarrage ...... 22 3.3. Séquences d'arrêt et de démarrage ...... 24 3.3.1. Séquence de démarrage pour SPARC ...... 24 3.3.2. Séquence de démarrage pour x86 ...... 25 3.3.3. Configuration des périphériques avec kdmconfig ...... 26 3.3.4. Les Run Levels ...... 27 3.3.5. Le fichier inittab ...... 27 Cursus Solaris IS2

3.3.6. Séquence d'arrêt ...... 28 3.3.7. SMF - Service Management Facility ...... 29 4. Gestion du système de fichiers ...... 36 4.1. Solaris 10 et les systèmes de fichiers ...... 36 4.1.1. Comprendre l'utilisation des systèmes de fichiers ...... 36 4.1.2. Les différents types de systèmes de fichiers...... 38 4.1.3. Hiérarchie du système de fichiers ...... 39 4.1.4. Les fichiers sous Solaris ...... 40 5. Gestion des disques ...... 44 5.1. Introduction ...... 44 5.1.1. Objectifs du module ...... 44 5.2. Architecture du disque ...... 44 5.2.1. Structure physique d'un disque ...... 45 5.2.2. SMI et EFI ...... 45 5.2.3. Convention de nommage des disques ...... 46 5.3. Partitionnent des disques ...... 48 5.3.1. Lister les périphériques ...... 48 5.3.2. Comment partitionner son disque ? ...... 51 5.3.3. Les erreurs possibles ...... 54 5.3.4. Solaris Management Console ...... 55 5.4. Monter et démonter ...... 55 5.4.1. Les différents types de système de fichier ...... 55 5.4.2. Création d'une partition UFS ...... 55 5.4.3. Monter un système de fichier ...... 55 5.4.4. Le fichier vfstab ...... 56 5.4.5. Vold : Volume management ...... 56 6. Gestion des utilisateurs ...... 57 6.1. Introduction ...... 57 6.1.1. Pré-requis ...... 57 6.1.2. Objectifs ...... 57 6.2. Particularité de l'administration des utilisateurs par rapport à Linux ...... 57 6.2.1. Base du système d'administration des utilisateurs ...... 58 6.2.2. Gestion des comptes ...... 61 6.2.3. Gestion des fichiers d'initialisation ...... 74 7. Gestion de la sécurité ...... 76 7.1. Introduction ...... 76 7.1.1. Objectifs du module ...... 76 7.2. Gestion de l'accès au système ...... 76 7.2.1. La surveillance des logins ...... 76 7.2.2. La surveillance des mots de passe ...... 78 7.3. Monitoring des accès au système ...... 80 7.3.1. Surveillance du système ...... 80 7.4. Optimisation de la sécurité ...... 83 7.4.1. Configurer correctement les accès distants de base ...... 83 7.5. Restreindre les accès aux données ...... 85 7.5.1. Gestion des permissions ...... 86 7.5.2. Changer l'utilisateur ou le groupe propriétaire...... 87 8. Gestion des processus ...... 88 8.1. Introduction ...... 88 8.1.1. Objectifs du module ...... 88 8.2. Voir les processus système ...... 89 8.2.1. Introduction ...... 89 8.2.2. Utiliser la commande ps ...... 89 8.2.3. Utiliser la commande pgrep ...... 91 8.2.4. Utiliser la commande prstat ...... 93 8.2.5. Contrôle des processus ...... 95 8.2.6. Utiliser le Gestionnaire de processus CDE ...... 95 8.2.7. Utiliser l'outil de gestion de processus de la Console de Management de Solaris ...... 97 Cursus Solaris IS2

8.3. Arrêter des processus figés ...... 98 8.3.1. Introduction ...... 98 8.3.2. Utilisation des commandes kill et pkill ...... 99 8.3.3. Réaliser une connection à distance ...... 100 8.4. Suspendre et terminer des processus avec SMC ...... 101 8.4.1. Introduction ...... 101 8.5. Plannifier l'exécution automatique d'une commande ...... 103 8.5.1. Introduction ...... 103 8.5.2. Utilisation de la commande at ...... 103 8.5.3. Contrôler l'accés à la commande at ...... 104 8.6. Planifier l'exécution récurrente d'une commande ...... 105 8.6.1. Introduction ...... 105 8.6.2. Introduction à la syntaxe du fichier crontab ...... 105 8.6.3. Utiliser la commande crontab ...... 106 8.6.4. Contrôler l'accés à la commande crontab ...... 107 8.6.5. Utiliser la Console de Planificateur de tâche de Solaris ...... 109 9. Gestion des impressions ...... 111 9.1. Objectifs de ce module ...... 111 9.2. Fonctionnement général de l'impression sous Solaris 10 ...... 111 9.3. Gestion des périphériques d'impression ...... 113 9.3.1. Vérification de l'état des périphériques d'impression ...... 113 9.3.2. Démarrer et arrêter le gestionnaire d'impression ...... 114 9.3.3. Lister et annuler les tâches d'impression ...... 115 9.4. Configuration du service d'impression ...... 115 9.4.1. Ajout d'imprimante ...... 116 9.4.2. Contrôle d'accès au service ...... 117 9.4.3. Contrôle d'accès au niveau utilisateur ...... 118 10. Backup et restauration ...... 120 10.1. Les utilitaires de sauvegarde ...... 120 10.1.1. Introduction ...... 120 10.1.2. Commandes de base sous Unix ...... 120 10.2. Sauvegarde sur un système de fichiers démonté ...... 123 10.2.1. La commande ufsdump ...... 123 10.3. Sauvegarde et restauration sur un système de fichiers monté ...... 124 10.3.1. Système de fichiers UFS ...... 124 10.3.2. Système de fichiers ZFS ...... 125 1

Chapitre 1. Introduction à Solaris 10

Table des matières

1.1. Introduction ...... 1 1.1.1. Objectifs du module ...... 1 1.2. Qu'est ce que Solaris ? ...... 1 1.2.1. Historique ...... 1 1.2.2. Introduction à UNIX système V ...... 2 1.2.3. Versions et architectures supportées ...... 2 1.3. Obtenir Solaris 10™ ...... 4 1.4. Nouvelles fonctionnalités apportées par Solaris 10™ ...... 4 1.4.1. DTrace ...... 5 1.4.2. Performance réseau accrue ...... 5 1.4.3. Les « zones » ...... 5 1.4.4. Le système de fichiers ZFS ...... 6 1.4.5. Nouveau système de gestion des services ...... 6 1.4.6. Tolérance de pannes et d'erreurs ...... 6 1.4.7. Autres changements notables ...... 6

1.1. Introduction

Solaris™ est un système d'exploitation de type UNIX System V créé par . Historiquement, le système d'exploitation de Sun Microsystems s'appelle SunOS™. 1.1.1. Objectifs du module

En suivant ce module nous allons suivre les objectifs suivants :

• Qu'est-ce que Solaris ?

• L'histoire de Solaris.

• Obtenir Solaris.

• Les avantages de Solaris 10.

1.2. Qu'est ce que Solaris ? 1.2.1. Historique Introduction à Solaris 10 2

Au début des années 1990, Sun décide de baser le développement de son système sur UNIX System V™ version 4 (encore appelé SVR4) pour SunOS™ 5 remplaçant dans la foulée Su- nOS 4™.

Pour marquer ce changement, l'équipe marketing de Sun trouve un nouveau nom pour ce sys- tème, il s'agit de Solaris 2™. SunOS 4™ sera alors nommé rétrospectivement Solaris 1™.

Figure 1.1. Logo de Solaris™

Aujourd'hui, le nom SunOS™ est encore utilisé et désigne en général la partie « centrale » du système. Le nom Solaris™ désigne en fait SunOS™ plus l'interface graphique et des modules supplémentaires. 1.2.2. Introduction à UNIX système V

UNIX System V™, plus communément appellé 'SysV', et plus rarement 'Système 5', a été l'une des premières version du système d'exploitation UNIX. Le Système V a été, à l'origine, developpé par AT&T dont la première version a vue le jour en 1983.

Il y a eu quatre versions principales du Système V, et la release 4 (System V Release 4, ou 'SVR4') est la plus connue et la plus réussie : le SVR4 est la source de plusieurs fonctionnali- tés du système d'UNIX, comme : "SysV init scripts" (/etc/init.d), qui peut contrôler le lancement et l'arrêt du système Unix.

Le Système V établit aussi la base de 'System V Interface Definition (SVID)', qui explique comment le Système V doit travailler.

L'autre branche la plus connue du système UNIX est la 'Berkeley Software Distribution (BSD)' 1.2.3. Versions et architectures supportées

Il existe aujourd'hui de nombreuses versions de Solaris et il est parfois difficile de s'y retrou- ver avec la convention de nommage utilisée par Sun.

Le numéro de version de Solaris™ est lié au numéro de version de SunOS™, la version de Solaris 2.0™ correspondant à SunOS 5.0™. Ainsi Solaris 2.1™ correspond à SunOS 5.1™, Solaris 2.2™ à SunOS 5.2™, etc.

Cependant, à partir de SunOS 5.7™, au lieu d'appeler son système « Solaris 2.7™ », Sun dé- cide de laisser tomber le « 2. » du numéro de version. Ainsi Solaris 7™ basé sur SunOS 5.7™ succède à Solaris 2.6™ basé sur SunOS 5.6™.

La version actuelle de Solaris™, basée sur SunOS 5.10™, Solaris 10 ™, est disponible depuis le 31 janvier 2005. Cette version est vue comme le renouveau de Solaris™ avec le support re- Introduction à Solaris 10 3

nouvelé de l'architecture x86, l'ajout de nombreuses fonctionnalités réellement novatrices et peut être le plus important, l'ouverture du code de Solaris™.

Figure 1.2. Versions et architectures supportées par Solaris™

La plateforme de référence pour Solaris™ est l'architecture SPARC, plateforme dont les per- formances et la stabilité ne sont plus à prouver mais qui a l'inconvénient d'être onéreuse. Les dernières versions (Solaris™ 9 et 10) supportent également les processeurs de types x86 et x86-64 tels que les AMD64™ et les EMT64™.

Solaris™ est réputé pour sa gestion hors pair des systèmes multi-processeurs possédant un très grand nombre de CPUs. Depuis ses débuts, le système Solaris™ est étroitement lié à l'architecture SPARC avec une gestion des SPARCs 64bits dès 1998 avec Solaris™ 7.

Le système était auparavant vendu directement avec des machines de type SPARC ce qui en- traînait un surcoût par rapport à des machines de type x86. C'est pour cette raison que, les der- nières versions de Solaris™ prennent non seulement en charge les processeurs de type x86, mais on même été conçues dès le départ (pour Solaris™ 10) pour supporter les processeurs de type x86-64.

Il est donc désormais possible d'installer Solaris™ sur un x86 sans pour autant perdre en per- formance ou en stabilité.

Figure 1.3. OpenSolaris

Autrefois entièrement propriétaire, le code source de Solaris™ est progressivement mis à dis- position sous licence open-source CDDL (Common Development and Distribution License) qui est une licence se situant, au niveau des restrictions, entre la GPL et la license BSD.

L'ouverture du code source de Solaris™ est coordonnée par le projet OpenSolaris1.

1 http://opensolaris.org/os/ Introduction à Solaris 10 4

1.3. Obtenir Solaris 10™

Solaris 10™ est avant tout un système d'exploitation vendu par Sun Microsystems. Cepen- dant, depuis 2005, Sun propose en libre téléchargement Solaris Express™, qui est un instanta- né binaire de la version de développement de Solaris 10™ réservé à une utilisation non com- merciale.

De plus, l'ouverture du code qui s'opère depuis 2005 via le projet OpenSolaris™, permet d'avoir accès aux sources du système d'exploitation.

Aussi plusieurs distributions basées sur OpenSolaris™ existent. C'est le cas de la distribution Nexenta2, basée sur Ubuntu mais utilisant un noyau SunOS™.

À noter que depuis 2006, la version de développement de Solaris™ est directement basée sur le code source disponible sur OpenSolaris.org.

Il existe Solaris Express: Community Edition™ qui reprend le concept de Solaris Express™, mais sous licence CDDL et maintenu par la communauté OpenSolaris™.

Vous pouvez télécharger Solaris™ 10 OS à partir du site de SUN, mais il vous faudra au préa- labre créer un compte utilisateur.

• Pour OpenSolaris: http://opensolaris.org/os/downloads/

• Pour Solaris10: http://www.sun.com/software/solaris/get.jsp

1.4. Nouvelles fonctionnalités apportées par Solaris 10™

Les nouveautés introduites dans Solaris 10™ ont, pour la plupart, provoquées de petites révo- lutions dans la communauté UNIX. En effet, les nouveautés sont variées et vont du système de fichiers à la gestion des services en passant par une pile TCP/IP totalement repensée.

Les principales nouvelles fonctionnalités sont les suivantes :

• Architecture de tracage dynamique avec DTrace

• Performance réseau accrue

• Les « zones »

• Un nouveau système de fichiers : ZFS

• Évolution du système de gestion de service

2 http://www.gnusolaris.org Introduction à Solaris 10 5

• Tolérance de panne

1.4.1. DTrace

DTrace est un outil très puissant qui se sert des fonctionnalités avancées du noyau de Solaris™. Il permet à un administrateur système ou à un utilisateur, d'analyser les applications pendant leur fonctionnement, sans risquer de provoquer une perte de stabilité du système ou des applications en question.

Cet outil peut être utilisé pour diagnostiquer des comportements anormaux d'applications ou encore, d'analyser les rapports d'erreurs (crash/core dumps) du noyau ou des applications.

DTrace fonctionne grâce à des scripts écrient en langage D™. Ce lLangage™ est un sous- ensemble du langage C™, lui ajoutant des fonctions et des variables spécifiques pour le "tra- cing".

DTrace a été le premier composant de Solaris 10 rendu disponible à la communauté Open Source sous licence CDDL. Il est actuellement porté sous FreeBSD™ ainsi que MacOS X 10.5™ (Léopard). 1.4.2. Performance réseau accrue

Le traitement de la pile TCP/IP a été entièrement repensé avec Solaris 10™. Le but de la nou- velle architecture est de rendre la communication plus rapide entre le(s) processeur(s) et la carte réseau et permet une synchronisation optimale pour les cartes réseaux du type 10GB/s.

L'ancienne architecture était conçue à l'époque pour BSD. Celle-ci est encore utilisée par la plupart des systèmes actuels, tels que Open/Free/NetBSD™, GNU/Linux™, Apple Mac OS X™ et même Microsoft Windows 2000/XP/2003/Vista™.

Cette refonte du traitement réseau est tellement importante que les fonctionnalités qui en dé- coulent vont faire progressivement leurs apparitions dans le système :

1. Un ensemble de fonctionnalités était déjà disponibles dès la sortie de Solaris 10™.

2. Des fonctionnalités vont s'ajouter au fil des "updates" délivrées pour Solaris 10™.

3. L'ensemble des fonctionnalités trouveront leur place dans Solaris 11™.

À ce jour, Solaris 10™ peut se targuer d'avoir une des meilleures piles réseau existantes, si ce n'est la meilleure. 1.4.3. Les « zones »

Solaris 10™ introduit le concept de « zones »: il est assez similaire aux « jails » des systèmes BSD couplées avec les notions de virtualisation apportées par des projets en vogue comme Xen.

Une zone est un espace virtuel possédant une partition racine « / » et son propre espace mé- moire. Chaque zone est capable de fonctionner comme un système à part entière, avec ses propres utilisateurs.

Juste après l'installation du système, on se trouve dans la « zone globale » et le compte root de cette zone possède le droit de créer de nouvelles zones, et d'associer des ressources matérielles à ces zones, les ressources pouvant être par exemple : des processeurs, de la mémoire, des Introduction à Solaris 10 6

disques durs, des cartes réseaux, etc.

Ainsi avec un seul noyau Solaris 10™ en fonctionnement, on peut créer une multitude de sous systèmes Solaris™ complètement indépendants les uns des autres, et ce en utilisant au mieux les ressources matérielles disponibles. 1.4.4. Le système de fichiers ZFS

Avec la mise à jour de juin 2006, un nouveau système de fichiers fait son apparition : il s'agit de ZFS pour Zettabyte File System. Ce système de fichiers est relativement novateur dans le fait qu'il inclut la notion de gestion de volumes dynamiques directement dans le système de fi- chiers.

Avec ZFS, plus besoin de partitions ! L'espace disque disponible fourni par tous les disques est mis en commun pour créer un « pool » d'espace allouable. On peut ensuite créer des vo- lumes qui vont utiliser ce pool pour stocker leurs données. Ces volumes n'utilisent que la taille dont ils ont besoin et s'agrandissent ou se rétrécissent à la volée.

Le système de fichiers ZFS est issu du projet Open Solaris et a ensuite été intégré dans la ver- sion commerciale de Solaris 10™. Ceci montre l'implication de Sun au niveau de la commu- nauté open source.

Mac OS X 10.5™ (Léopard) supportera les volumes ZFS mais sous une forme limitée à la seule lecture des volumes. 1.4.5. Nouveau système de gestion des services

Solaris 10™ remplace le système vieillissant de gestion de services hérités des systèmes V. Ce système est nommé SMF pour Service Management Facility.

Ce nouveau système de gestion de service a été conçu avec les trois objectifs suivants :

• Gérer les dépendances entre les services

• Unifier la configuration des services

• Surveiller les services tout au long de leur fonctionnement et les redémarrer si nécessaire

1.4.6. Tolérance de pannes et d'erreurs

Solaris 10™ introduit un nouveau système de gestion d'erreurs qui peuvent se produire au cours du fonctionnement du système. Ce système s'appelle le FMA pour Fault Management Architecture.

Ce système permet d'enregistrer et d'automatiser avec une grande flexibilité le processus de gestion des erreurs. 1.4.7. Autres changements notables

Plusieurs fonctionnalités déjà présentes sur Solaris 9™ ont été améliorées. On peut noter, en vrac :

• Amélioration du démarrage/installation via le WAN

• Unification de l'installation du système Introduction à Solaris 10 7

• Support d'une couche Trusted Solaris™ : cette couche se place au dessus du système exis- tant et, une fois activée, renforce la sécurité de la plate-forme

• Passage d'NFSv3 à NFSv4

• Modification de la configuration de sendmail : les fichiers se trouvent désormais dans l'emplacement standardisé /etc/mail. 8

Chapitre 2. Installation de Solaris 10

Table des matières

2.1. Introduction ...... 8 2.1.1. Objectif du module ...... 8 2.2. Configuration minimale ...... 8 2.3. Les différents types d'installation ...... 9 2.3.1. Vocabulaire spécifique à Solaris et "Software Group" ...... 9 2.3.2. Installation en ligne de commande ...... 9 2.3.3. Installation avec l'interface graphique ...... 9 2.3.4. Mise à jour ...... 9 2.4. Les différentes méthodes d'installation ...... 10 2.4.1. JumpStart ...... 10 2.4.2. WAN boot ...... 10 2.4.3. Flash archive ...... 10 2.4.4. Solaris Standard Upgrade method ...... 10 2.4.5. Solaris Live Upgrade ...... 10 2.5. Résumé des différentes installation ...... 11 2.6. Installation ...... 11 2.6.1. Installation sur une machine SPARC ...... 11 2.6.2. Installation sur une machine x86 ...... 13 2.7. Paquets et Patch ...... 14 2.7.1. Paquets ...... 15 2.7.2. Patchs ...... 17

2.1. Introduction

Chaque système d'exploitation est doté d'un installeur et/ou d'un système de gestion d'installation. On retrouve à chaque fois les mêmes types d'installation : installation machine par machine, installation par le réseau, clonage, etc.

Nous verrons les differents outils proposés par Sun et nous ferons une installation classique de Solaris 10 sur ces deux types d'architectures : SPARC et x86. 2.1.1. Objectif du module

Dans ce module nous allons voir comment installer Solaris 10 en utilisant les outils mis à dis- position par Sun. De manière classique, en faisant une mise à jour, ou encore en déployant So- laris 10 dans un parc d'ordinateur. 2.2. Configuration minimale

Tableau 2.1. Configuration requise

Plateforme Differentes plateformes SPARC ou x86 Installation de Solaris 10 9

Mémoire vive Minimum : 64 Mo

Recommandé : 256 Mo

Avec l'interface graphique : 384 Mo SWAP (Place sur le disque dur utilisée comme mé- Defaut : 512 M moire vive) Processeur SPARC : 200 Mhz ou plus

x86 : 120 Mhz ou plus

Le CPU doit supporter les calculs à virgule flottante Espace disque 12 Go minimum

2.3. Les différents types d'installation 2.3.1. Vocabulaire spécifique à Solaris et "Soft- ware Group"

Package™ : Un package est un programme où les binaires sont précompilés et distribués aux utilisateurs. Il n'y a pas besoin de compiler les sources du programme pour qu'il puisse fonc- tionner.

Cluster™ : Un cluster est un ensemble de packages qui sont reliés entre eux par leur fonction- nalités.

Software group™ : Un "software group" est un ensemble de packages et de clusters.

Patch™ : Petit "programme" qui permet de supprimer des bugs ou de mettre à jour un logiciel. 2.3.2. Installation en ligne de commande

Installation classique dans le monde UNIX. L'installation se fait en CLI (Command Line In- terface). Elle permet l'installation de Solaris 10 sur des machines possèdant moins de 384 Mo de mémoire vive. Les options d'installations sont les mêmes que dans l'installation avec l'interface graphique. 2.3.3. Installation avec l'interface graphique

Installation plus ergonomique que l'installation en ligne de commande. Elle nécessite plus de 384 Mo de mémoire vive. Si la mémoire est insuffisante, le système d'installation passe en mode ligne de commande. 2.3.4. Mise à jour

Simple mise à jour du système en fusionnant l'ancien système avec le nouveau. Ce type d'installation permet de ne pas perdre ses données et de ne pas à avoir à tout reconfigurer par la suite. Il existe deux méthodes de mise à jour, elles seront expliquées dans la partie suivante. 2.4. Les différentes méthodes Installation de Solaris 10 10 d'installation

Nous allons voir maintenant les différentes méthodes d'installation. Ces méthodes diffèrent peu des autres systèmes d'exploitation. On retrouve l'installation par le réseau, le clonage, ou encore la gestion de différents profils d'installation. 2.4.1. JumpStart

La méthode d'installation JumpStart™ permet d'installer ou de mettre à jour plusieurs sys- tèmes Sun Solaris en s'appuyant sur des profils préalablement créés. Cette méthode permet aux administrateurs système de déployer simplement un ensemble de systèmes pour lesquels seront définis des caractéristiques propres grâce aux profils. Cela concerne notamment l'installation de certains logiciels. 2.4.2. WAN boot

Cette méthode permet de démarrer et d'installer Sun Solaris 10 à travers un réseau de grande envergure (WAN) en utilisant le protocole HTTP. Pour cela, une machine cliente de type SPARC pourra récupérer via la connexion réseau une image flash à installer grâce à la mé- thode abordée ci-dessous. Des options permettent de chiffrer cette image, et d'utiliser une connexion HTTPS pour sa transmission pour des raisons évidentes de sécurité. 2.4.3. Flash archive

Ce type d'installation repose sur l'utilisation d'un système Sun Solaris dit "maître" à partir du- quel sera construite une archive flash contenant ses fichiers principaux. En utilisant cette mé- thode, le système maître sera cloné sur des machines possédant la même architecture interne. Il est donc nécessaire de posséder un système de base à partir duquel créer l'archive flash, qui pourra toute fois être optimisée à l'aide de scripts. 2.4.4. Solaris Standard Upgrade method

Une mise à niveau standard fusionne la nouvelle version du système Solaris avec les fichiers existants sur le disque du système. Les méthodes disponibles pour une mise à niveau standard sont l'installation en mode graphique, l'installation via la ligne de commandes et la procédure de JumpStart. Cependant nous devons noter que la mise à jour standard entraîne une indispo- nibilité temporaire du système équivalente à la durée de cette opération. 2.4.5. Solaris Live Upgrade

Ce type de mise à jour permet de créer et de mettre à niveau un duplicata de l'environnement courant et ainsi de s'affranchir de l'état d'indisponibilité inhérent à la méthode précédente.

Premièrement un système dit inactif est obtenu à partir d'une image du système actif. Ce sys- tème sera mis à niveau par une archive flash et défini à l'état actif, qu'il occupera à partir du prochain redémarrage. Il sera possible de revenir à la version antérieure du système passé maintenant en mode inactif simplement en changeant sont mode.

Cette méthode de mise à jour du système requiert une quantité d'espace disque disponible mi- nimale évaluée au lancement de la procédure. En cas de problème lié à cet espace, il est toute- fois possible d'annuler l'opération.

L'installation par défaut est l'installation graphique; cependant nous nous attarderons durant ce cours sur l'installation en mode ligne de commandes. Installation de Solaris 10 11

2.5. Résumé des différentes installation

Tableau 2.2. Les différentes installation

Installation d'un système sur une machine. Installation à partir du CD-ROM ou du DVD Installation automatique sur des systèmes multiples à JumpStart. partir de profils créés par l'administrateur. Installation du meme système sur des machines iden- Flash archive. tiques. Installation de différents systèmes à travers un réseau. WAN boot. Mise à jour d'un système en production. Solaris Live Upgrade. Isoler des environnements les uns des autres. Zone Solaris.

2.6. Installation

Nous allons enfin voir le pourquoi de ce chapitre : l'installation de Solaris 10. Nous verrons l'installation sur deux architectures différentes : SPARC et x86.

Avant de lancer l'installation, assurez-vous des éléments suivants :

• Votre machine possède les caractéristiques minimales citées plus haut pour l'installation de Solaris.

• Vous avez en votre possession un CD ou DVD d'installation correspondant à l'architecture de votre machine.

• Choisissez un nom d'hôte pour votre machine si elle doit etre connectée au réseau (voir les autres paramètres comme une IP, un masque, etc. selon le type de configuration réseau que vous souhaitez employer).

• Définissez un mot de passe root.

• Etablissez les différentes langues à implémenter.

Une fois toutes ces informations vérifiées et réunies, vous pouvez vous lancer dans l'installation du système en sauvegardant au préalable vos données si nécessaire. 2.6.1. Installation sur une machine SPARC

Voici les différentes étapes à suivre pour l'installation ou la mise à jour de Solaris 10 sur une machine de type SPARC :

1. Insérer le CD ou DVD de Solaris 10 dans le lecteur approprié.

2. Lancez la machine si vous utilisez un système vierge ou arretez le système en cours à l'aide des commandes init ou halt pour atteindre le prompt de boot ok.

3. Pour démarrer à partir du media d'installation, utilisez la commande :

ok boot cdrom Installation de Solaris 10 12

Cette commande vous permettra de lancer l'interface d'installation graphique par défaut. Si vous souhaitez utiliser un mode texte, deux options :

• -text : l'interface graphique est conservée mais l'installation s'effectue en mode texte.

• -nowin : plus d'interface graphique, l'installation se passe dans la console en mode texte.

Selon le mode d'installation, pour suivre les différentes étapes de l'installation, vous de- vez désormais soit cliquer sur le bouton "suivant" pour changer d'étape si vous utilisez l'interface graphique ou simplement suivre les instructions s'affichant à l'écran dans le cas d'un mode texte.

4. Sélectionnez la langue souhaitée pour effectuer l'installation. Après cela, le message d'accueil de l'installation de Solaris 10 apparaitra à l'écran.

5. Dans les étapes suivantes, répondez aux différentes questions concernant la configuration de la machine, comme par exemple celle du réseau, en utilisant les informations prépa- rées avant de lancer l'installation. A la fin de cette partie, un message de bienvenue sur Solaris 10 s'affichera.

6. Répondez aux questions demandant si vous souhaitez effectuer un redémarrage automa- tique et si le programme doit automatiquement éjecter le disque à ce moment.

7. Sélectionnez le media que vous utilisez pour effectuer l'installation.

8. Choisissez si vous souhaitez effectuer une installation complète du système ou simple- ment une mise à jour. Dans ce dernier cas, le programme d'installation vérifiera s'il existe une version de Solaris d'installée et s'il est possible de la mettre à jour. Si ces conditions sont remplies, il mettra à jour votre système.

9. Choisissez le type d'installation à effectuer :

• Installation par défaut de Solaris 10 ( système complet et interface Java Desktop).

• Installation personnalisée : choix des paquets (individuels ou par catégorie), sélection des locales, formatage manuel.

10. Répondez aux questions supplémentaires posées jusqu'à atteindre l'écran vous annonçant que le programme d'installation est pret à installer Solaris 10.

11. Validez l'installation de Solaris et suivez sa progression.

Une fois l'installation terminée, le programme redémarrera automatiquement la machine ou vous invitera à le faire. Si vous avez sélectionné des paquets supplémentaires, il vous sera demandé d'insérer le CD ou DVD correspondant. Pour une installation complète, l'installation est terminée et vous pouvez lancer le système. Si vous avez mis à jour votre système, vous devrez peut etre corriger manuellement certains points : consulter le conte- nu de /a/var/sadm/system/data/upgrade_cleanup pour déterminer si vous devez corriger certaines modifications préalables que le programme d'installation n'a pas pu préserver.

12. Si vous n'aviez pas sélectionné l'option de redémarrage automatique, vous devez le faire manuellement :

# reboot Installation de Solaris 10 13

Note : En mode installation texte, il ne vous sera pas proposé de sélectionner une installation par défaut ou personnalisée. Il vous faut soit dans le premier cas valider toutes les valeurs pro- posées, soit dans le second les modifier. 2.6.2. Installation sur une machine x86

Voici maintenant la procédure à respecter pour installer Solaris 10 sur une machine de type x86.

De la même manière que pour la version SPARC, vous pouvez choisir entre une installation ou une mise à jour. Notez que votre BIOS doit supporter le boot depuis un CD ou DVD et qu'il vous faudra le paramétrer en ce sens.

Voici les différentes étapes :

1. Insérer le CD,DVD ou encore la disquette de démarrage de Solaris 10 dans le lecteur ap- proprié.

2. Redémarrez la machine et paramétrez le BIOS pour démarrer sur le lecteur désiré si né- cessaire. Après une séquence de test sur la mémoire de reconnaissance du matériel, l'écran de démarrage de Solaris 10 apparait.

3. Configurez les différents paramètres possibles concernant la gestion de votre matériel et ajoutez manuellement les périphériques non reconnus par le programme d'installation si besoin. Après cette étape, l'écran de sélection du type d'installation apparait.

4. Vous avez maintenant le choix entre les différents types d'installation de Solaris 10 :

• Solaris interactive

• Custom Jumpstart

• Solaris Interactive Text (mode graphique)

• Solaris Interactive Text (mode console)

Sélectionnez le type de votre choix pour lancer le programme d'installation approprié. Si vous attendez plus de 30 secondes, le mode Solaris Interactive (avec mode graphique) démarrera par défaut. S'en suit une phase de configuration du matériel et de recherche de fichiers de configuration éventuels. Après quelques secondes, vous pouvez commencer l'installation à proprement parler.

5. Appuyez sur F2 pour continuer avec l'installation. A partir de cet instant, deux scénario sont possibles :

• Les périphériques concernant l'affichage graphique, le clavier, la souris sont bien dé- tectés par le programme et vous pouvez passer directement à l'étape 7.

• Tous les périphériques de ce type ne sont pas correctement détectés, il vous faut alors utiliser l'utilitaire kdmconfig en vous référant à l'étape 6.

6. Vous souhaitez avoir accès à l'interface graphique, il vous faut donc maintenant configu- rer vous meme vos périphériques d'affichage en suivant les instructions. Dans le cas contraire, vous pouvez directement passer à l'étape 7.

7. Choisissez la langues que vous souhaitez utiliser pour l'installation, vous arrivez ensuite sur l'écran d'accueil du programme d'installation de Solaris 10.

8. Appuyez sur suivant pour poursuivre l'installation. Répondez aux différentes questions Installation de Solaris 10 14

qui peuvent vous etre posées en utilisant les informations réunies avant de lancer l'installation.

9. Répondez aux questions demandant si vous souhaitez effectuer un redémarrage automa- tique et si le programme doit automatiquement éjecter le disque à ce moment.

10. Sélectionnez le media que vous utilisez pour effectuer l'installation.

11. Choisissez si vous souhaitez effectuer une installation complète du système ou simple- ment une mise à jour. Dans ce dernier cas, le programme d'installation vérifiera s'il existe une version de Solaris d'installée et s'il est possible de la mettre à jour. Si ces conditions sont remplies, il mettra à jour votre système.

12. Choisissez le type d'installation à effectuer :

• Installation par défaut de Solaris 10 ( système complet et interface Java Desktop).

• Installation personnalisée : choix des paquets (individuels ou par catégorie), sélection des locales, formatage manuel.

13. Répondez aux questions supplémentaires posées jusqu'à atteindre l'écran vous annonçant que le programme d'installation est pret à installer Solaris 10.

14. Validez l'installation de Solaris et suivez sa progression.

Une fois l'installation terminée, le programme redémarrera automatiquement la machine ou vous invitera à le faire. Si vous avez sélectionné des paquets supplémentaires, il vous sera demandé d'insérer le CD ou DVD correspondant. Pour une installation complète, l'installation est terminée et vous pouvez lancer le système. Si vous avez mis à jour votre système, vous devrez peut etre corriger manuellement certains points : consulter le conte- nu de /a/var/sadm/system/data/upgrade_cleanup pour déterminer si vous devez corriger certaines modifications préalables que le programme d'installation n'a pas pu préserver.

15. Si vous n'aviez pas sélectionné l'option de redémarrage automatique, vous devez le faire manuellement :

# reboot

Note : Une fois l'installation terminée, vous pouvez retrouver les logs de celle-ci dans les ré- pertoires /var/adsm/system/logs ou /var/adsm/install/logs.

Une fois le système installé, nous pouvons ajouter ou supprimer des paquets à celui-ci, ou en- core appliquer des patchs. 2.7. Paquets et Patch

Installer et supprimer des logiciels représente une partie majeure de l'administration d'un sys- tème et cela tient de la responsabilité d'un administrateur.

Sun et d'autres revendeurs tierces délivrent leurs softwares pour Solaris sous forme de paque- tages. De plus, entre deux révisions d'un système d'exploitation, de nouvelles fonctionnalités ou des correctifs peuvent etre apportés à l'aide de patchs.

Nous abordons ici la gestion de ces deux éléments. Installation de Solaris 10 15

2.7.1. Paquets

Les applications pour Solaris 10 sont délivrées sous formes de paquets. Ces paquets représente un format unifié utilisé pour les différents logiciels afin de faciliter leur déploiement sur tous les systèmes Solaris. Les facilités de déploiement, installation et maintenance sur l'infrastructure logicielle qui en découle représentent le point fort de ce sytème de paquets.

Pour construire un paquet, le développeur de l'application doit fournir les éléments suivants :

• Composants nécessaires :

• objets du paquet : les fichiers et répertoires de l'application.

• fichiers de controle : scripts d'installation et fichiers d'informations. Seulement deux sont obligatoires :les fichiers pkginfo et prototype.

• Composants optionnels :

• fichiers d'informations supplémentaires.

• Scripts d'installation.

Pour installer, supprimer ou encore obtenir des informations sur les paquets que vous obtenez, Solaris fournit différents utilitaires capables d'interprétrer le format ABI (Application Binary Interface) de vos paquets. Le tableau suivant résume les différents outils et leurs rôles :

Tableau 2.3. Les différents outils de gestion des paquets

pkgask Permet de sauvegarder les réponses entrées par l'utilisateur dans le cadre de la commande pkgadd pour automatiser une nouvelle installation. pkgadd Installe un paquet. pkgchk Vérifie l'installation d'un paquet. pkginfo Liste les informations concernant le paquet. pkgparam Affiche les valeurs des différents paramètres d'un pa- quet. pkgrm Supprime un paquet. pktrans Convertit un paquet dans un format différent.

2.7.1.1. Installer un paquet

Pour installer un paquet, il est possible d'utiliser la commande pkgadd. Celle-ci va décom- presser les fichiers présents dans le paquet et les installer sur le système à partir d'un media sé- lectionné.

N'oubliez pas qu'un paquet dans son format de base est inutilisable tel quel, il vous est néces- saire d'utiliser un outil approprié comme pkgadd.

La commande pkgadd a la syntaxe suivante, dont les options vous sont détaillées en dessous :

# pkgadd [-n] [-a ] [-d ] [-G] [-r ] [-R ] [] [] Installation de Solaris 10 16

• -a : spécifier le fichier d'administration à utiliser si vous ne souhaitez pas utiliser celui par défaut. Si vous spécifiez un chemin relatif, le fichier est d'abord recherché à par- tir du répertoire courant puis dans le dossier /var/sadm/install/admin s'il n'a pas été trouvé.

• -d : sélectionner le media à partir duquel récupérer le paquet (chemin complet ou identifiant d'un media amovible reconnu par le système). Vous pouvez également utiliser un alias de périphérique ou un flux de données créé à partir de la commande pkgtrans.

• -G : limiter l'installation du paquet à la zone courante.

• -n : faire l'installation en mode non-interactif. De plus la liste des fichiers du paquet n'est pas affichée.

• -r : spécifier le chemin vers le fichier contenant les réponses aux questions po- sées à l'utilisateur pendant l'installation pour automatiser celle-ci.

• -R : indiquer un répertoire racine à utiliser dans le cadre de cette installation.

: alternative à l'option -d pour spécifier le media source.

: lister les instances du paquet qu'il est possible d'utiliser.

Note : Une instance de paquet est crée au moment où l'on ouvre ce paquet et est stockée en mémoire. Elle permet d'accéder au contenu du paquet et initialise les valeurs requises à partir de celui-ci. L'instance est détruite lorsque l'on ferme le paquet et libère alors l'espace mémoire utilisé. Plusieurs instances d'un paquet peuvent exister en même temps et ce à partir du même paquet.

Si vous souhaitez seulement copier un paquet pour une installation ultérieure, il suffit d'utiliser l'option de spool de la manière suivante :

# pkgadd -d -s

Cette commande permet de copier les paquets délimités par des espaces indiqués en fin de commande à partir du media précisé avec -d. Par défaut, tous les paquets présents sur le media sont copiés. Si aucun media n'est précisé, les paquets sont recherchés dans / var/spool/pkg.

Après avoir installé un paquet, vous devez vérifier l'efficacité de son installation. 2.7.1.2. Vérifier un paquet

L'outil pkgchk va nous permettre de vérifier l'intégrité d'un paquet installé sur notre système ou encore d'afficher des informations sur les différents fichiers installés par ce paquet. Les éventuels problèmes détectés sont envoyés vers la sortie d'erreur accompagnés d'une explica- tion du conflit. Voici la syntaxe de cette commande :

# pkgchk [-a|-c] -l] [-p ] [-v]

Voici la signification des différentes options :

• -a | c : -a vous permet de ne controler que les attributs des fichiers sans regarder leur conte- nu et -c l'inverse. Par défaut, les deux sont controlés. Installation de Solaris 10 17

• -l : afficher les informations sur les fichiers contenu dans le paquet.

• -p : limiter les vérifications aux répertoires indiqués, séparés par une virgule ou un espace.

• -v : mode verbeux.

: liste de paquets délimités par un espace. Par défaut, tous les paquets sont controlés.

Pour controler des paquets qui n'ont pas encore été installés mais sont mis en spool sur un me- dia, utilisez juste l'option -d (répertroire, disque ...). Pour obtenir davantage d'informations sur un paquet, référez vous à la commande pkginfo. 2.7.1.3. Supprimer un paquet

Pour supprimer un paquet installé sur notre système, nous allons utiliser la commande pkgrm. Cet outil permet de supprimer tous les fichiers du paquet ainsi que les dépendances de celui-ci selon le contexte. Si la dépendance est partagée par un autre paquet le fichier d'administration des paquets est consulté pour connaitre l'action à entreprendre. Dans certains cas l'utilisateur doit répondre à quelques questions sur les éléments à supprimer ou non. Pour automatiser la désinstallation et supprimer tous les fichiers liés, l'option -n permet d'ignorer le mode interac- tif.

Voici sa syntaxe :

# pkgrm [-a ] [-A] [-n]

Signification des différentes options :

• -a : permet d'indiquer le chemin vers le fichier d'administration à utiliser pour la suppression du ou des paquet(s).

• -A : supprimer tous les fichiers ayant un lien avec le(s) paquet(s) à désintaller, meme ceux utilisés par d'autres paquets.

Cet outil permet également de supprimer tous les paquets en attente d'installation avec pkgrm -s , en indiquant un répertoire où les paquets sont stockés ( par défaut : / var/sadm/pkg ).

Note : Utilisez la meme méthode pour installer et désinstaller vos paquets. Par exemple, si vous avez installé un paquet avec l'utilitaire graphique, supprimez le avec celui-ci et idem pour l'outil en ligne de commande. Dans tous les cas, ne supprimez jamais les fichiers manuel- lement avec la commande rm. Cela créerait d'importants conflits dans votre structure de pa- quets.

Les paquets permettent l'ajout de fonctionnalités supplémentaires au système, mais ne sont pas destinés à la modification de celui-ci. Des paquets spéciaux appelés patchs sont utilisés pour modifier des éléments de votre système de base dans le cadre d'un correctif ou d'une mise à jour. 2.7.2. Patchs

Un patch est un ensemble de fichiers et de répertoires destinés à remplacer ou mettre à jour Installation de Solaris 10 18

ceux existants sur votre système. Chaque est identifié par un patch ID qui est une chaine al- phanumérique composée de deux parties : un code de patch et un numéro de révision de celui- ci, séparés par un tiret (ex :108528-10). Des patchs Solaris sont disponibles sur le site : http://sunsolve.sun.com.

Si les patchs sont donnés dans un format compressé, vous devez les décompresser avant de pouvoir les utiliser. Il n'est pas nécessaire d'installer tous les patchs disponibles, avant d'installer un patch, suivez la procédure suivante :

• Etablissez l'importance de la nécessité d'utiliser le patch en question (cout, risque, apports ...)

• Minimiser les changements apportés à votre système.

• Envoyez à Sun les différentes alertes et erreurs que vous rencontrez.

• N'effectuez des modifications sur votre environnement que s'ils permettent de résoudre un problème.

• Maintenez votre environnement au plus proche des réels besoins que vous avez.

Vous pouvez ajouter et supprimer des patchs en utilisant respectivement les commandes pk- gadd et pkgrm. 2.7.2.1. Gérer les patchs

La commande patchadd va nous permettre d'ajouter de nouveaux patchs sur notre système, mais également d'obtenir des informations sur ceux déjà installés. Cet outil est disponible à partir de la version 2 de Solaris et sa syntaxe est la suivante :

# patchadd [-d] [-G] [-u] [-B ] []

Voici la signification des différentes options :

• -d : ne pas effectuer une sauvegarde des fichiers système avant de patcher. Cette option enlève toute possibilité de retirer le patch par la suite, ce qui est possible par défaut.

• -G : appliquer le patch seulement à la zone courante.

• -B : spécifier un dossier où placer les fichiers de sauvegarde.

: source du patch (répertoire et patch ID).

: cible du patch (le système courant par défaut).

Pour connaitre les patchs installés sur le système, il est possible d'utiliser la commande de cette manière : patchadd -p .

Lorsque vous appliquez un patch, les logs des opérations effectuées sont disponibles dans / var/sadm/patch//log.

Voici les différentes conditions qui pourraient empecher l'installation d'un patch : Installation de Solaris 10 19

• Le paquet n'est pas complètement installé sur le système.

• L'architecture pour laquelle le patch est prévu diffère de celle du système.

• La version du patch ne correspond pas au paquet installé.

• Un patch ayant le meme code mais un numéro de révision supérieur a déjà été appliqué.

• Un patch rendant celui-ci obsolèté a déjà été appliqué.

• Le patch est incompatible avec un autre patch présent sur le système.Le fichier pkginfo contient des informations sur chaque patch installé.

• Le patch dépend d'un autre patch qui n'est pas encore installé.

Note : Pendant le processus d'installation d'un patch, la commande pkgadd est utilisée pour l'installer. Malgré cela, vous devez utiliser patchadd pour effectuer cette opération et non pk- gadd.

Pour obtenir des informations détaillées sur les révisions de patch installées sur votre système, utilisez la commande showrev -p. Il est entendu que l'application d'un patch implique plus de conséquences sur le système que l'installation d'un paquet. De ce fait il faut etre capable de pouvoir retirer un patch ultérieurement pour résoudre d'éventuels conflits qui pourraient appa- raitre. 2.7.2.2. Supprimer un patch

L'outil patchrm, disponible sur Solaris 2 et ultérieur, va nous permettre de retirer un patch ap- pliqué sur le système :

# patchrm [-f] [-G] [-B ]

Le patchID correspond bien entendu à un patch installé sur le système et voici l'utilité de chaque option :

• -f : forcer le retrait du patch, meme si un autre patch a été appliqué par dessus.

• -G : retirer le patch uniquement dans la zone courante.

• -B : spécifier le dossier où est stockée la sauvegarde effectuée pendant l'application du patch. Utile seulement si l'on a déplacé les fichiers depuis leur création avec patchadd.

On utilisera par exemple la commande de cette manière pour retirer un patch avec les options par défaut : patchrm 105975-03.

Il reste à noter qu'un patch peut comporter une signature numérique pour s'assurer qu'il n'a pas été modifié depuis son application. 20

Chapitre 3. Procédure de démarrage et d'arrêt

Table des matières

3.1. Introduction ...... 20 3.1.1. Objectifs du cours ...... 20 3.2. OpenBoot PROM ...... 20 3.2.1. Introduction à l' OpenBoot PROM ...... 21 3.2.2. Commande de l'OpenBoot PROM ...... 21 3.2.3. La NVRAM ...... 21 3.2.4. Identification des périphériques de démarrage ...... 22 3.3. Séquences d'arrêt et de démarrage ...... 24 3.3.1. Séquence de démarrage pour SPARC ...... 24 3.3.2. Séquence de démarrage pour x86 ...... 25 3.3.3. Configuration des périphériques avec kdmconfig ...... 26 3.3.4. Les Run Levels ...... 27 3.3.5. Le fichier inittab ...... 27 3.3.6. Séquence d'arrêt ...... 28 3.3.7. SMF - Service Management Facility ...... 29

3.1. Introduction

Ce cours a pour but d'expliquer les différentes étapes qui permettent le démarrage et l'arrêt du système Solaris 10, ainsi que l'administration des différents composants permettant de faire la relation entre le système d'exploitation et le matériel qui entre en compte dans les processus d'arrêt ou d'amorçage du système. 3.1.1. Objectifs du cours

A la fin de ce cours, vous serez capable de :

• Identifier les différents périphériques de démarrage.

• Connaître la séquence de boot et les variables qui s'y rattachent

• Gérer les séquences de démarrage et d'arrêt d'un système Solaris 10.

• Gérer les différents services du système.

3.2. OpenBoot PROM

L'OpenBoot PROM (Programmable Read-Only Memory) est en fait un micro programme (Firmware) intégré dans une puce (OpenBoot PROM chip) de la carte-mère. Il permet de tes- ter le matériel, déterminer la configuration matériel du système et de lancer la séquence de dé- marrage de la machine.

La BootPROM est fournie avec une interface utilisateur en ligne de commande qui permet son Procédure de démarrage et d'arrêt 21

administration, ainsi que son debuggage. 3.2.1. Introduction à l' OpenBoot PROM

L'OpenBoot PROM est généralement un composant de 8 Ko localisé sur la me#me carte que le processeur. Il est utilisé pour tester le matériel et démarrer le système d’exploitation. Le firmware sur l'OpenBoot PROM est souvent nommé programme moniteur. 3.2.2. Commande de l'OpenBoot PROM

L'OpenBoot PROM possède des capacités intéressantes lorsque le système ne fonctionne plus. Vous pouvez en effet réaliser certaines actions administratives grâce à son interface d'administration en ligne de commande.

Le prompt de l'OpenBoot PROM est généralement à "ok". Cela signifie que le système n'est pas démarré. C'est à partir de ce prompt que vous allez pouvoir lancer des commandes d'administration ou de diagnostic.

Tableau 3.1. Commandes de base de l'OpenBoot PROM

Commandes Description banner Affiche les informations du système, comme la ver- sion de la BootPROM. boot Démarre le système. help Affiche l'aide intégrée de la Boot PROM. printenv Affiche tous les paramètres courants. setenv Permet de spécifier certains paramètres de la NVRAM (Variables par exemple). reset-all Provoque un démarrage à froid. set-default Rétablit tous les paramètres par défaut. show-devs Affiche l'arbre des périphériques. devalias Affiche les alias de périphériques. nvalias Crée un nouvel alias vers un périphérique. show-disks Affiche et permet la sélection des disques durs pré- sents sur la machine. sync Synchronise le système de fichiers manuellement (comme la commande sync sous Linux) et redémarre la machine . test Lance un test sur un périphérique désigné.

3.2.3. La NVRAM

La NVRAM (Non-Volatile Random Access Memory) est une puce qui va conserver les va- riables de la configuration du système qui vont déterminer la comportement de la machine au démarrage. Si vous modifiez ces variables, les changements vont persister au-delà d'un redé- marrage machine; c'est pour ça que cette mémoire est dite 'non-volatile'.

Ci-dessous, vous trouverez quelques paramètres NVRAM utiles, à modifier au prompt "ok" grâce à la commande setenv. Procédure de démarrage et d'arrêt 22

Tableau 3.2. Commandes de base de l'OpenBoot PROM

Nom du paramètre Description Valeur par défaut autoboot? Si vrai, boot automatiquement,si true faux, affiche le prompt "ok", le tout après allumage ou redémar- rage de la machine. boot-command Représente la commande qui va boot être lancée si le paramètre auto- boot? vaut vrai. diag-switch? Si vrai, lance le mode diagnostic, false si faux, non. nvramrc Le contenu de NVRAMRC, Empty c'est-à-dire, une commande qui se- ra lancé avant la procédure de boot. use-nvramrc? Si vrai, exécute la commande false NVRAMRC. output-device Sortie de la console, par exemple, screen l'écran, ttya ou ttyb.

3.2.4. Identification des périphériques de démar- rage

Solaris 10 possède une arborescence des périphériques, dont voici un exemple :

Figure 3.1. Arborescence des périphériques de Solaris 10 Procédure de démarrage et d'arrêt 23

L'arbre des périphériques est construit puis stocké en mémoire grâce aux instructions POST (Power-On Self Test). POST fait partie de la séquence de démarrage amorcée par l'OpenBoot Procédure de démarrage et d'arrêt 24

PROM, nous verrons plus de détails dans la partie "séquence de démarrage".

Comme tout système UNIX, le haut de l'arbre correspond au "/", appelé root ou racine du sys- tème. De cette racine découlent tous les autres périphériques.

Voici comment afficher l'arbre des périphériques, ainsi que le nom qu'ils portent :

Figure 3.2. Affichage de la commande devalias

A gauche, on retrouve les alias des périphériques, ce qui facilite grandement la lecture de notre arbre. Maintenant que nous avons une idée des différents acteurs du démarrage, on peut démarrer sur notre Solaris :

ok boot 3.3. Séquences d'arrêt et de démarrage 3.3.1. Séquence de démarrage pour SPARC

Avec l'architecture SPARC, la séquence de démarrage peut être divisé en quatre étapes :

Tableau 3.3. Statut des différents services

Étapes Description Chargement de l'OpenBoot PROM • La PROM lance la séquence POST (Power On Self Test), c'est à dire un ensemble de diagnostics pour évaluer le matériel et la mémoire du système.

• Le périphérique de boot est identifié.

• Les bootdisks sont lus.

• Les bootdisks sont chargés.

Lancement des programmes • bootblk lance les programmes secondaires d'amorçage (ufsboot) localisés sur le système de Procédure de démarrage et d'arrêt 25

Étapes Description

fichier UFS.

• ufsboot va executer le fichier /etc/bootrc, puis va charger le noyau en mémoire.

Initialisation du noyau • Le noyau s'initialise et charge ses modules à l'aide d'ufsboot. Une fois qu'il a chargé assez de mo- dules pour monter la racine ("/"), il va décharger ufsboot de la mémoire et continuer de mettre en place le système, puis va démarrer le processus "init".

• Lecture des fichiers de configuration de "/ etc/system/"

Démarrage des services • Le système démarre le processus "init".

• "init" démarre les autres processus à l'aide du fi- chier /etc/inittab, et, sous Solaris 10, il va égale- ment lancer /lib/svc/bin/svc.startd qui va :

Vérifier et monter le système de fichiers.

Configurer le réseau et les périphériques.

Lancer plusieurs processus et des tâches de main- tenance système.

3.3.2. Séquence de démarrage pour x86

Sous x86, le BIOS remplace la BootProm :

Tableau 3.4. Statut des différents services

Étapes Description BIOS • Le BIOS lance une série de diagnostics pour dé- terminer le matériel et la mémoire du système.

• Si des problèmes sont trouvés, les erreurs sont af- fichées à l'écran et des commandes de récupéra- tion deviennent disponibles.

• Ensuite, le programme de boot est lancé et va chercher "mboot" dans le MBR (Master Boot Re- cord) à partir du premier secteur du disque de boot.

• mboot lance ensuite le programme Solaris pboot Procédure de démarrage et d'arrêt 26

Étapes Description

qui va lancer à son tour bootblk.

Lancement des programmes • bootblk lance les programmes secondaires d'amorçages (ufsboot ou bin.boot). Si il y a plus d'une partition bootable, bootblk va utiliser fdisk pour afficher un menu et laisser 30 secondes à l'utilisateur pour choisir la partition sur laquelle il veut booter.

• ufsboot va executer le fichier /etc/bootrc, puis va charger le noyau en mémoire.

Initialisation du noyau • Le noyau s'initialise et charge ses modules à l'aide d'ufsboot. Une fois qu'il a chargé assez de mo- dules pour monter la racine ("/"), il va décharger ufsboot de la mémoire et continuer de mettre en place le système, puis va démarrer le processus "init".

• Lecture des fichiers de configuration de "/ etc/system/".

Démarrage des services • Le système démarre le processus "init".

• "init" démarre les autres processus à l'aide du fi- chier /etc/inittab, et, sous Solaris 10, il va égale- ment lancer /lib/svc/bin/svc.startd qui va :

Vérifier et monter le système de fichiers.

Configurer le réseau et les périphériques.

Lancer plusieurs processus et des tâches de main- tenance système.

3.3.3. Configuration des périphériques avec kdm- config

La commande kdmconfig sera utilisée pour configurer le clavier, l'affichage et la souris sous OpenWindows (L'ancien gestionnaire de fenêtre de Solaris), mais également, sur un serveur pour conserver les informations relatives à un client qui boote sur une machine sans disque, à travers le réseau.

La commande kdmconfig possède la syntaxe suivante :

kdmconfig [-fv] [-s ]-c | -t | -u | -d Procédure de démarrage et d'arrêt 27

• -f : Force le mode écran, pas de prise en charge du réseau (généralement pour du debug)

• -v : Mode verbeux

• -s : Va mettre en place les informations de configuration pour les clients sans disque sur la machine

• -c : Crée le fichier de configuration pour OpenWindows : / etc/openwin/server/etc/0Wconfig

• -t : Teste la configuration

• -u : Supprime la configuration système

• -d : Crée un fichier de configuration pour les clients sans disque pour éviter un prompt à l'utilisateur, ce qui permet un boot sans intervention de la part de l'utilisateur. Produit la même sortie écran que -c.

3.3.4. Les Run Levels

Sous Solaris, il existe différents niveaux d'exécution du système. Ce mode de fonctionnement est similaire à celui employé par Unix. Chaque niveau d'exécution (Run Level) est représenté par un chiffre. Voici les différents niveaux ainsi que les chiffres auxquels ils correspondent :

Tableau 3.5. Les différents niveaux d'exécution

Run Level Description 0 Seul le moniteur PROM est actif. Run level où l'on peut éteindre la machine en toute sécurité. 1 Système en "Single User Mode", avec accès aux fi- chiers non corrompus. 2 Système multi-utilisateurs, sans prise en charge du ré- seau. 3 Système multi-utilisateurs, avec la prise en charge du réseau. 4 Ce niveau n'est pas implémenté par Solaris 10. 5 Éteint la machine. 6 Redémarre la machine.

Il est possible de modifier le niveau d'exécution manuellement grâce à la commande "init", puis le numéro d'exécution souhaité. Enfin pour connaître dans quel niveau d'exécution nous évoluons, on utilise la commande "who -r". 3.3.5. Le fichier inittab

Au démarrage de la machine, ou au changement de run level, le processus init va lire deux in- formations importantes dans /etc/inittab : tout d'abord, les processus à démarrer ou à redémar- rer pour le monitoring et ensuite, que faire lors du changement de run level. La syntaxe d'une entrée dans le fichier inittab est la suivant :

::: Procédure de démarrage et d'arrêt 28

• id : Identifiant de l'entrée, sur 4 caractères maximum.

• runstate : Définit une liste de run levels pour lesquelle cette entrée va être invoquée (0-6). Si rien n'est précisé, l'entrée sera validée pour tout les run levels.

• action : Mot clé permettant à init de savoir quoi faire avec l'entrée (voir ci-dessous)

• command : Spécifie la commande pour exécuter un processus.

Tableau 3.6. Les différents paramètres de

Action Description boot Le processus sera lancé une unique fois au démarrage, et init n'attendra pas sa terminaison. once Si le processus n'est pas déjà lancé, il se lancera et init n'attendra pas la fin d'éxécution. Ne relance PAS le processus lorsque celui-ci est stoppé. respawn Si le processus n'est pas déjà lancé, il se lancera et init n'attendra pas la fin d'éxécution. Relance le processus lorsque celui-ci est stoppé. wait Lance le processus et attend la fin d'éxecution. L'appel ne se fera qu'une fois par run level spécifié, à chaque fois que le run level changera. powerfail Exécute le processus seulement si init reçoit le signal SIGPWR. sysinit Lance le processus après l'apparition du prompt de lo- gin. Attend la fin de son éxécution avant de continuer.

3.3.6. Séquence d'arrêt

L'arrêt d'un serveur n'est pas un acte anodin, il est vivement conseillé de bien se préparer à cette manipulation avant de l'effectuer. Pour palier à ce problème, Solaris 10 propose diffé- rents états d'arrêt :

Tableau 3.7. Les différents types d'arrêts et comment y accéder

Types d'arrêts Commandes Bascule vers le "Single User Mode".

# /sbin/init S

Éteint le système Solaris et bascule vers la console BootPROM ( prompt ok ). # /sbin/init 0

Éteint le système Solaris et entraîne l'arrêt complet de la machine. Procédure de démarrage et d'arrêt 29

Types d'arrêts Commandes

# /sbin/init 5

Éteint le système Solaris et entraîne l'arrêt complet de la machine, puis le redémarrage en "Multi-Users Mode". # /sbin/init 6

Voici donc les différentes manières de stopper un système Solaris 10. Cependant, il existe des scripts, comme "shutdown", "halt", ou "reboot" qui entraîne les mêmes actions que le change- ment de Run Level. 3.3.7. SMF - Service Management Facility 3.3.7.1. Présentation de SMF - Service Management Facility

La SMF, nouveauté de Solaris 10, est une structure de configuration de gestion et d'arrêt des services, il gère également l'interaction entre les différents services. SMF inclut :

• Un mécanisme permettant d'établir et de formaliser les dépendances pour chaque service.

• Des informations sur les séquences de démarrage, d'arrêt et de redémarrage des processus.

• Une gestion des erreurs des services .

• Des informations sur des éventuelles erreurs de configuration de services.

• Des logs personnalisés pour chaque service.

Un service, ici, est une entité qui fournit des ressources aux applications qui le demande, ce qui n'est pas la même chose qu'un processus au sens commun du terme. Un service peut conte- nir plusieurs processus. 3.3.7.2. Description d'un service

Avec SMF, les services sont construits autour de cinq éléments. Prenons par exemple le ser- vice cron :

Figure 3.3. Un exemple de service géré par SMF Procédure de démarrage et d'arrêt 30

Chaque service va ainsi disposer au minimum de ces éléments. Voyons leur utilité :

Tableau 3.8. Les éléments d'un service SMF

Élément Description Méthode start C'est en quelque sorte le remplacement du script de lancement qui se trouve sous Linux, par exemple, dans /etc/init.d. Ce script va contenir la "procé- dure de démarrage" du service. Les méthodes du sys- tème se trouvent dans /lib/svc/method/. Manifest C'est un fichier XML qui décrit le service. Il contient différentes informations telles que l'emplacement de la méthode start, ou encore les dépendances du ser- vice. Le manifest se trouve dans / var/svc/manifest/. On y trouve aussi les mi- lestones. Binaire L'exécutable ou le script utilisé pour lancer le service. Log Fichier de log permettant d'avoir un historique des états d'un service. On y retrouvera notamment les pas- sages en statut "maintenance". Ces fichiers se Procédure de démarrage et d'arrêt 31

Élément Description trouvent dans /var/svc/log/. FRMI Fault Management Resource Identifier. Identifiant de service. Il peut être abrégé.

3.3.7.3. La méthode start

Voici un exemple de méthode start (qui contient en fait les méthode stop et refresh en plus) :

#!/bin/sh PIDFILE=/var/run/service.pid

case $1 in

'start') /usr/bin/service ;; 'stop') kill `cat $PIDFILE` ;; 'refresh') kill -HUP `cat $PIDFILE` ;; esac

Bien évidement l'exemple ci-dessus est simplifié, mais ce script ne sert essentiellement qu'à lancer le service 3.3.7.4. Le manifest

Ce fichier XML est un résumé du service. On y retrouve différentes sections :

• Le header, qui contient les informations XML standard (DTD, etc.)

• Une balise qui définit le paquet associé au service ainsi que le type du fichier (manifest)

• Une section qui contiendra le nom du service, sa version, etc.

• Une ou plusieurs sections qui définiront les instances du service, ainsi que leur état par défaut (actif ou non). Peut être remplacé par accompagné de .

• Une balise qui contiendra le degré de stabilité de l'interface.

• Une ou plusieurs sections contenant les dépendances dans un sens ou un autre. On peut définir par ce moyen des incompatibilités ou des services nécessaires au fonctionnement de celui déterminé ici.

• Une balise qui contiendra le chemin FRMI du service.

• Des balises qui contiendront les informations sur les méthodes du service. Procédure de démarrage et d'arrêt 32

• On pourra encore spécifier des informations telles que des propriétés ou un restarter, mais ces informations ne sont pas indispensables, et nous ne les détaillerons pas.

Voici par exemple le manifest du service cron : root@solaris# cat /var/svc/manifest/system/cron.xml

type='method' name='stop' exec=':kill' timeout_seconds='60'>

3.3.7.5. Identification des services

Toutes les instances de service possèdent un nom qui sera utilisé par le FRMI (Fault Manage- ment Resource Identifier) afin d'être reconnues puis classifiées par le système en plusieurs ca- tégories :

• Applications - Applications : Services exécutant de simples applications

• Périphériques - Devices : Services gérant le fonctionnement des périphériques (carte ré- seau, disques durs, ...)

• Anciens services - Legacy : Services qui n'ont pas encore été portés vers l'architecture SMF

• Étapes importantes - Milestone : Version améliorée des runlevels Procédure de démarrage et d'arrêt 34

• Réseau - Network : Services gérant différents services réseau (httpd, nfs, ...)

• Plateforme - Plateform : Services dépendants de la plateforme

• Site - Site : Services dépendants du site

• Système - System : Services systèmes (par exemple cron, console-login, ...)

Figure 3.4. Exemple de FRMI

3.3.7.6. Les différents états des services.

Chaque service peut être dans différents états, dont voici la liste :

Tableau 3.9. Statut des différents services

Statut Description Online Le service est actif et a démarré correctement. Offline Le service est actif, mais ne fonctionne pas. Disabled Le service n'est pas actif et ne fonctionne pas. Legacy_run Les anciens services ne peuvent être managés pas SMF, mais seulement observés. Uninitialized État du service avant la lecture du fichier de configu- ration par le système. Maintenance Le service rencontre une erreur qui nécessite l'intervention de l'administrateur. Degraded Le service est actif mais ne fonctionne pas complète- Procédure de démarrage et d'arrêt 35

Statut Description ment.

3.3.7.7. Les commandes d'administration de SMF

Tableau 3.10. Commandes de SMF

Commande Description svcs Liste les services et permet aussi d'afficher leur statut ainsi que leur FRMI. Suivie d'un FRMI, la commande affichera les informations concernant uniquement le service indiqué. On peut aussi utiliser les options -l et -x pour afficher plus d'information sur un service. svcadm Permet de modifier le statut d'un service, de position- ner et d'enlever le statut "maintenance", également, elle peut être utilisé à la place de la commande init pour changer le run level courant et le run level par défaut. svccfg Permet de configurer SMF et les services gérés par SMF. Cette commande permet notamment d'importer les 'manifest's de nouveaux services.

3.3.7.8. Les milestones

Les milestones sont en fait un simple équivalent des runlevels. La différence majeure réside dans le fait qu'au contraire des runlevels, on peut créer autant de milestones que l'on souhaite. Une autre application des milestones est de pouvoir grouper les services entre eux pour sim- plement les lancer ensemble (par exemple un milestone database qui lance tout les services re- latifs a la base de donnée). Pour démarrer à un milestone donné on utilise :

boot -m milestone=single-user 36

Chapitre 4. Gestion du système de fichiers

Table des matières

4.1. Solaris 10 et les systèmes de fichiers ...... 36 4.1.1. Comprendre l'utilisation des systèmes de fichiers ...... 36 4.1.2. Les différents types de systèmes de fichiers...... 38 4.1.3. Hiérarchie du système de fichiers ...... 39 4.1.4. Les fichiers sous Solaris ...... 40

4.1. Solaris 10 et les systèmes de fichiers 4.1.1. Comprendre l'utilisation des systèmes de fi- chiers

Un système de fichiers est une structure contenant une hiérarchie d'objets. Le rôle du système de fichiers (FileSystem) est de stocker des données ainsi que des propriétés (méta-données) tels que l'appartenance à un utilisateur, la date de création... Nous allons décrire dans les par- ties suivantes ces objets et leur fonctionnement et utilité respective. 4.1.1.1. Les fichiers

De même que dans un langage de programation objet où tout est objet, sous Solaris, tout est fi- chier.

Un fichier peut contenir un certain nombre de ressources dont voici quelques exemples :

• Des commandes : des fichiers binaires, exécutables permettant l'exécution de programmes.

• Des péripheriques : un péripherique matériel est associé à un fichier qui sera utilisé par le système d'expoitation comme interface d'échange.

• Des répertoires : des conteneurs de fichiers.

• Des document : images, textes, ...

Un disque étant un espace de stockage important, il convient de diviser en une unité de plus petite taille. L'unité utilisée est le block. Il y a deux types de blocks : d'un coté les blocs phy- siques dont la taille est égale à la plus petite unité lisible par le contrôleur de disque, et les blocs logiques qui ont la taille assignée par le système d'exploitaition pour lire et écrire des données.

Les informations relatives aux fichiers sont stockées dans une structure appelée inode.

Le système de fichiers lui même va contenir l'arborescence des répertoires, la liste des inodes, ainsi que d'autres informations. Gestion du système de fichiers 37

Chaque fichier ou répertoire se voit attribuer un numéro d'inode qui va contenir des informa- tions qui lui sont propres.

Solaris est capable d'utiliser plusieurs systèmes de fichiers, le plus commun étant Unix File System (UFS). Cependant, les systèmes de fichiers ne sont pas utilisés directement par le noyau : il existe une couche d'abstraction qui s'appelle le Virtual File System, qui permet l'accès au système de fichiers de manière uniforme. 4.1.1.2. Les Inodes

Les inodes (contraction de index et node) sont des structures de données qui contiennent les informations essentielles sur les fichiers. On y retrouve généralement les données suivantes :

• Le type de fichier (standard, fichier de type block, fichier de type caractère, répertoire, pipe, socket, lien symbolique)

• Les permissions

• Le nombre de hard link pointant vers ce fichier

• L'UID du propriétaire du fichier

• Le GID du propriétaire

• La taille du fichier en octets

• Un vecteur de 15 adresses de blocs :

Les douzes premières adresses pointent vers des blocs de données, les trois dernières adresses du vecteur permettent de faire respectivement de l'indirection simple, de l'indirection double et de l'indirection triple.

• La date de dernier accès

• La date de dernière modification

• La date de création

Figure 4.1. L'indirection dans un inode Gestion du système de fichiers 38

4.1.2. Les différents types de systèmes de fi- chiers. 4.1.2.1. Les systèmes de fichiers du type Disk Based

Les systèmes utilisés par les disques durs, les CDROM, les DVD, et même les disquettes sont les premiers qui viennent à l'esprit. On ne peut les utiliser que sur des supports physiques. Sur Solaris on va surtout parler de :

• High Sierra File System (HFFS) : Système de fichiers en lecture seule utilisé pour les CDROM. Il dispose des mêmes possibilités que UFS mis à part les liens physiques et l'écriture. La version officielle est l'ISO9660 avec extension rockridge.

• PC File System (PCFS) : Système de fichiers DOS utilisé sur les disquettes.

• UDF : Universal Disk Format : Système de fichiers utilisé essentiellement sur les DVD.

• UNIX File System (UFS) : Système de fichiers par défaut sous Solaris, basé sur le système de fichiers de BSD.

• Z File System ou encore Zettabyte File System (dans la presse) : ZFS est le nouveau sys- tème de fichiers révolutionnaire développé par Sun.

4.1.2.2. Les systèmes de fichiers distribués

Les systèmes de fichiers distribués sont aussi appelés systèmes de fichiers réseaux. Ils per- mettent de partager les données au travers de réseaux.

Solaris 10 supporte essentiellement le DFS (Distributed File System) de Sun : NFS (Network File System) en version 4. NFS fera l'objet de plus amples éclaircissements dans un autre mo- dule. Gestion du système de fichiers 39

4.1.2.3. Les systèmes de fichiers stockés en mémoire

Pour accélerer le traitement de tâches spécifiques au système de fichiers, les limitations des systèmes de fichiers physiques ont dû être dépassées. Il a donc été créé les systèmes de fi- chiers virtuels ou pseudo systèmes de fichiers, stockés en mémoire vive.

Même si la majorité de ces systèmes de fichiers sont stockés en RAM, certains peuvent en outre utiliser de l'espace disque.

• Cache FileSystem (CacheFS) : Ce système de fichiers permet de mettre en tampon les données venant de certains medias comme des lecteurs CDROM ou des systèmes de fi- chiers réseaux.

• Loopback FileSystem (LOFS) : Ce système de fichiers permet de rendre une partie d'un système de fichiers accessible à un emplacement alternatif.

• Process FileSystem (PROCFS) : Ce système de fichiers contient une liste des processus actifs du système, classés par PID. Ce système de fichiers permet notamment à la com- mande ps de fonctionner

• Temporary FileSystem (TMPFS) : Ce système de fichiers permet de stocker les fichiers temporaires en mémoire vive. Cela permet de réduire considérablement les temps d'accès.

4.1.2.4. Système de fichiers dédié aux périphériques (DEVFS)

Le Devices File System (DEVFS) est utilisé pour fournir une interface d'accès aux ressources matérielles de la machine: les fichiers spéciaux. Une fois que le driver du péripherique est chargé, un fichier est créé dans cette arborescence. 4.1.3. Hiérarchie du système de fichiers

Solaris est un Unix en tant que tel. Son système de fichiers est organisé hiérarchiquement, avec pour racine le répertoire « / ». L'organisation des répertoires diffère de celle utilisée sous Linux car la norme FHS (File Hierarchy Standard) n'est pas totalement respectée sous Solaris.

Voici un tableau récapitulatif des principaux répertoires et de leur contenu:

Tableau 4.1. Organisation à partir de la racine sous Solaris 10

Répertoire Description / La racine du disque autrement appelée root. /bin Lien symbolique pointant vers /usr/bin. Ce dos- sier contient tous les binaires /dev Ce dossier contient tous les périphériques accessibles par nom logique. /devices Ce dossier contient tous les périphériques accessibles par nom de device. Ce dossier est managé par le sys- tème de fichiers devfs. /etc Contient tous les fichiers de configuration et d'administration du système. /export Permet de monter les répertoires distants générale- ment par NFS et par défaut les dossier homes des uti- Gestion du système de fichiers 40

Répertoire Description lisateurs. /home Contient les dossiers personnels des utilisateurs. /kernel Contient tous les modules du noyau requis lors du dé- marrage. /lib Contient tous les binaires du panneau de configura- tion, et les applications partagées ainsi que les execu- tables SMF. /mnt Point de montage disponible pour des unités de sto- ckage additionnelles. /opt Contient les applications optionnelles. /platform Contient les modules optionnels du noyau. /sbin Contient tous les binaires de configuration et d'administration ainsi que tout ce qui est nécessaire au fonctionnement du système en mode single user. /usr Unix System Ressources : Contient des binaires et des librairies utilisés par tous les utilisateurs du système /var Contient tous les fichiers variant beaucoup : queues de mails, logs ...

L'organisation des répertoires est différente d'une distribution Linux standard, en effet :

• /lib ne contient pas les librairies dynamiques mais des binaires

• /sbin ne contient pas les binaires de l'utilisateur root mais les binaires accessibles en mode single user

• /export contient des partages NFS

• /kernel contient les modules obligatoires pour l'utilisation du système

• /platform contient les modules optionnels du noyau

4.1.4. Les fichiers sous Solaris

Sous Solaris, les fichiers possèdent un nom composé de 1 à 255 caractères, et d’un numéro d’inode unique qui identifie un fichier sur une partition. L’inode va contenir aussi le descrip- teur du fichier (les adresses des blocs de données du fichier). Pour visualiser les numéros d'inodes, il suffit de taper la commande ls -i. 4.1.4.1. Les fichiers ordinaires

Il s’agit des fichiers que l’on rencontre le plus souvent. Ils contiennent des données. On peut les créer à l’aide de la commande touch . On peut les supprimer à l’aide de la commande rm . 4.1.4.2. Les répertoires

Un dossier (répertoire) n'est qu'un fichier répertoriant des informations associant des noms de fichiers aux inodes. Un répertoire ne contient pas de données; il contient uniquement des en- trées concernant les fichiers qui doivent être aux yeux de l'utilisateur à l'interieur de lui-même. Gestion du système de fichiers 41

On peut les créer à l’aide de la commande mkdir . On peut les suppri- mer à l’aide de la commande rmdir . 4.1.4.3. Les liens symboliques

Ce sont des fichiers qui pointent vers d'autres fichiers. La taille d’un lien symbolique corres- pond aux caractères du chemin qu’il contient. Une bonne analogie à faire est celle du raccour- ci (fichier .lnk) Windows: il s’agit d’un fichier qui référence un autre fichier.

Il est marqué avec un type l (L minuscule).

# cd / # ls –l bin lrwxrwxrwx 1 root root 9 Mar 4 08:47 bin -> ./usr/bin

Le contenu du lien est le chemin « ./usr/bin » et sa taille est de 9. (en comptant le nombre de caractères composant le chemin, on constate effectivement que la taille est de 9). Le lien sym- bolique ne contient donc rien d’autre que le chemin vers ce qu’il référence.

Pour voir le contenu de la cible, il faut utiliser la commande ls –L (grand L qui permet de suivre le lien).

On peut les créer à l’aide de la commande ln –s .

On peut les supprimer à l’aide de la commande rm . 4.1.4.4. Les liens physiques

En règle générale, tous les noms de fichiers ordinaires sont des liens physiques.

En effet un lien physique est la liaison entre le nom et son numéro d’inode.

Figure 4.2. 2 Liens pointant vers le même fichier

Sur ce schéma, Data 1 et Data 2 pointent vers le même numéro d’inode

Ils permettent d’accéder exactement au même fichier (données) avec un nom différent. Les liens physiques se créent avec la commande ln sans utiliser l'option -s.

ls -li affiche le numéro d’inode d’un fichier avec ce que l’on appelle le compteur de liens. En reprenant l’exemple des fichiers Data 1 et Data 2, si l’on supprime Data 1, le fichier n’aura pas disparu car il restera Data 2 : Gestion du système de fichiers 42

Figure 4.3. Data 1 supprimé

Il existe deux limitations des liens physiques :

• Il n’est pas possible de faire un lien physique sur un répertoire

• Il n’est pas possible de faire un lien physique sur une autre partition.

Note

Pour trouver tous les fichiers qui ont le même numéro d’inode (donc tous les liens physiques), on peut utiliser la commande find

Exemple 4.1. Trouver tous les fichiers qui ont comme Inode 8143

find /etc –inum 8143

Note

Quand on crée un sous répertoire, "." va utiliser le même numéro d’inode que le sous répertoire et ".." va utiliser le même numéro d’inode que le répertoire parent : il s’agit de liens physiques.

Note

Pour supprimer un fichier, il convient de supprimer tous les liens physiques qui pointent sur ce fichier ainsi que le fichier lui même. Gestion du système de fichiers 43

4.1.4.5. Les fichiers spéciaux

Les fichiers spéciaux donnent accès aux périphériques. Ils n’utilisent pas de blocs de données :

• Les fichiers en mode bloc

• Les fichiers en mode caractère

• Les pipes (mécanisme de communication)

• Les sockets

• Les (mécanisme de communication client/serveur local très performant)

Ces fichiers sont créés par le système ou par la commande devfsadm.

On peut les supprimer à l’aide de la commande devfsadm -C

Figure 4.4. Exemple d'un fichier bloc

Nous allons retrouver dans ce fichier, le type B qui indique que c’est un périphérique en mode bloc.

Le 136 va désigner le service, on l’appelle le major (tous les services sous Solaris ont un nu- méro, par exemple, 136 va représenter un pilote de disque ide)

Le 0 va désigner la ressource demandée, on l’appelle le minor.

Pour accéder à un device, l’on a le choix entre 2 méthodes :

• accès direct (raw device)

• accès via le système de caching (accès par mode bloc)

L’accès par mode bloc permet d’augmenter les performances systèmes par rapport à l’accès en mode raw qui n’est généralement utile que pour les opérations de maintenance sur disque ou les liaisons séries. 44

Chapitre 5. Gestion des disques

Table des matières

5.1. Introduction ...... 44 5.1.1. Objectifs du module ...... 44 5.2. Architecture du disque ...... 44 5.2.1. Structure physique d'un disque ...... 45 5.2.2. SMI et EFI ...... 45 5.2.3. Convention de nommage des disques ...... 46 5.3. Partitionnent des disques ...... 48 5.3.1. Lister les périphériques ...... 48 5.3.2. Comment partitionner son disque ? ...... 51 5.3.3. Les erreurs possibles ...... 54 5.3.4. Solaris Management Console ...... 55 5.4. Monter et démonter ...... 55 5.4.1. Les différents types de système de fichier ...... 55 5.4.2. Création d'une partition UFS ...... 55 5.4.3. Monter un système de fichier ...... 55 5.4.4. Le fichier vfstab ...... 56 5.4.5. Vold : Volume management ...... 56

5.1. Introduction

Un des aspects les plus terrifiants dans la découverte de Solaris 10, et ceci dès l'installation du système, est la gestion des disques. En effet, la convention de nommage atypique, héritée de ses nobles ancêtres, couplée à une pléthore d'outils d'administration aux noms quelque-peu exotiques nous laissent évidemment une impression de robustesse ainsi qu'une fausse image de complexité que nous nous efforcerons de démystifier. 5.1.1. Objectifs du module

A l'issue de ce module vous serez en mesure de :

• Reconstituer l'architecture d'un disque

• Partitionner un disque

• Monter et démonter un disque

5.2. Architecture du disque

L'organisation du système de fichiers, la table de partition sous Solaris ont été organisés pour utiliser au mieux les principaux attributs physiques (géométrie) d'un disque. C'est pour cela que nous allons dans un premier temps faire un rappel sur l'architecture physique du disque. Gestion des disques 45

5.2.1. Structure physique d'un disque

Un disque-dur est une unité de stockage de masse magnétique. Il se compose d'un boîtier com- prenant les éléments nécessaires pour transformer un signal numérique (données) en impul- sions magnétiques :

• un peigne : dispositif déplaçant les têtes de lecture

• les plateaux : surfaces circulaires en rotation autour d'un axe commun.

• les têtes de lecture sont disposées de part et d'autre des plateaux et se déplacent radiale- ment par rapport à leur surface.

• un convertisseur analogique-numérique qui va transformer ces variations en signal numé- rique.

Il faut néanmoins savoir que le plateau lui même est découpé en unités plus petites :

• Un secteur (connu aussi sous le nom de bloc), plus petite unité adressable sur un plateau.

• Une piste est un regroupement de secteurs placé à la même distance du centre du plateau

Un cylindre désigne les pistes de plateaux différents qui se trouvents à la même distance du centre. La majeure partie des utilitaires de disque utilisent la notation CHS (Cylinder Head Sector).

Les informations concernant les cylindres, les têtes et les secteurs sont directement récupérés par le système auprès du contrôleur de disque. Le nombre de têtes de lecture correspondant au nombre de surfaces utilisables pour le stockage de données, il est assez aisé de calculer l'espace de stockage d'un disque:

Nombre de blocks = Nombre de cylindres * Nombre de têtes * Nombre de secteur par piste

Pour obtenir au final la taille du disque, il ne reste plus qu'a multiplier le nombre de blocks ob- tenus par la taille d'un block (génerallement 512 octets).

Il est à noter qu'actuellement les disques sont adressés differement en utilisant la méthode Large Block Access (LBA).

Exemple 5.1. Calcul de l'espace disponible

Voici l'information extraite de format :"c0t0d0 ". Nous pouvons en conclure que ce disque possède 3880 cylindres 16 têtes donc probablement 8 plateaux et 135 secteurs par piste. Si la taille du secteur est de 512 bits, l'espace disque dis- ponible représentera un total de 16*135*3880*512 soit 4290969600 octets

Figure 5.1. Organisation physique d'un disque dur

5.2.2. SMI et EFI Gestion des disques 46

Une section du disque est réservée au informations de labelling, dans le cas d'une VTOC il s'agit du secteur 0, il existe cependant une alternative : le labelling EFI. En effet, avec ce sys- tème il est possible d'utiliser des disques de plus d'un 1TB. EFI utilise les 34 premiers secteurs du disque.

A noter que dans le cas d'une utilisation non exclusive de Solaris sur une machine, les parti- tions Solaris (qu'on appellera 'slices' pour éviter toute ambiguïté), seront encapsulées dans une partition créée à cet effet.

C'est le cas typique d'une installation de Solaris sur un système de type x86 avec un autre sys- tème d'exploitation : une partition sera réservée à l'autre système et une autre sera créée pour contenir tout le système d'exploitation Solaris.

L'avantage de cette organisation est qu'il est facile de faire le backup de toutes les données présentes. L'inconvénient majeur est la difficulté posée pour la récupération des données à partir d'un autre système d'exploitation. 5.2.3. Convention de nommage des disques

Chacun des disques et des partitions sont représentées par le système sous une forme un peu complexe :

/devices/pci@1f,0/pci@1,1/ide@3/dad@0,0:a /devices/pci@1f,0/pci@1,1/ide@3/dad@0,0:a,raw /devices/pci@1f,0/pci@1,1/ide@3/dad@0,0:b /devices/pci@1f,0/pci@1,1/ide@3/dad@0,0:b,raw

Pour faciliter la manipulation et l'identification des périphériques, des liens symboliques sont automatiquement créés dans les répertoires /dev/dsk et /dev/rdsk.

Figure 5.2. Les disques sont représentés par des liens nommés selon cette convention Gestion des disques 47

c0t0d0s1 correspond au Controller 0, Target 0, Disk 0, Slice 1

• Controller Number – identifie le HBA (Host Bus Adapter) qui communique entre le sys- tème et le disque.

• Target Number – adresse unique assignée au périphérique (comprenez ID SCSI).

• Disk Number –Nombre correspondant à un disque sur la cible (correspond au logical unit number -LUN ).

• Slice Number – Nombre entre 0 et 7 qui correspond à la partition.

A noter que sur un système à architecture x86 la notation diffère quelque-peu lorsqu'il s'agit des périphériques IDE. c0d0s1 correspond donc au Controller 0, Disk 0, Slice 1.

• Controller Number – identifie le HBA (Host Bus Adapter) qui communique entre le sys- tème

• Disk Number –Nombre de disques sur la cible (correspond au logical unit number (LUN) ).

• Slice Number – Nombre entre 0 et 7 qui correspond à la partition.

Exemple 5.2. Exemple de correspondance /devices - /dev Gestion des disques 48

/devices/pci@1f,0/pci@1,1/ide@3/dad@0,0:a -> /dev/dsk/c0t0d0s0 /devices/pci@1f,0/pci@1,1/ide@3/dad@0,0:a,raw -> /dev/rdsk/c0t0d0s0 /devices/pci@1f,0/pci@1,1/ide@3/dad@0,0:b -> /dev/dsk/c0t0d0s1 /devices/pci@1f,0/pci@1,1/ide@3/dad@0,0:b,raw -> /dev/rdsk/c0t0d0s1

La différence entre les liens contenus dans /dev/dsk et ceux contenus dans /dev/rdsk est la sui- vante :

• /dev/rdsk permet un accès direct à la donnée (raw mode). Principalement pour les opé- rations de maintenance (fsck, newfs, ...).

• /dev/dsk permet un accès via le système de cache du système (accès en mode bloc). Principalement pour l’usage standard des disques (mount, cp, ..).

5.3. Partitionnent des disques 5.3.1. Lister les périphériques

Après avoir appris à identifier les disques et comprendre la convention utilisée pour les dési- gner, il va nous falloir maintenant apprendre à reconnaître, donc lister les périphériques qui nous intéressent. Dans cette section le but est clair, connaître les outils qui vont nous permettre de répondre rapidement à quelques questions : mon disque a l'il bien été reconnu par le Solaris ? Comment retrouver la marque du disque-dur? Identifier son adresse dans le répertoire / devices ... 5.3.1.1. Le fichier path_to_inst

Le fichier /etc/path_to_inst (path to instance) fournit une correspondance entre les instances - nom abrégé utilisé par le kernel pour utiliser un périphérique- et le nom périphérique phy- sique. D'autres commandes sont disponibles pour afficher la liste des instances : prtconf, sys- def ou encore dmesg, cependant seule cette dernière révèle le mapping instance - nom péri- phérique physique.

Ces commandes sont utilisables pour identifier n'importe quel type de périphériques, périphé- riques de stockage compris.

#cat /etc/path_to_inst # # Caution! This file contains critical kernel state # "/pseudo" 0 "pseudo" "/scsi_vhci" 0 "scsi_vhci" "/options" 0 "options" "/pci@1f,4000" 0 "pcipsy" "/pci@1f,4000/scsi@3" 0 "glm" "/pci@1f,4000/scsi@3/sd@0,0" 1 "sd" "/pci@1f,4000/scsi@3/sd@6,0" 6 "sd" "/pci@1f,4000/scsi@3/sd@1,0" 0 "sd" "/pci@1f,4000/ebus@1" 0 "ebus" "/pci@1f,4000/ebus@1/su@14,3083f8" 0 "su" "/pci@1f,4000/ebus@1/su@14,3062f8" 1 "su" "/pci@1f,4000/ebus@1/power@14,724000" 0 "power" Gestion des disques 49

"/pci@1f,4000/ebus@1/se@14,400000" 0 "se" "/pci@1f,4000/ebus@1/ecpp@14,3043bc" 0 "ecpp" "/pci@1f,4000/ebus@1/fdthree@14,3023f0" 0 "fd" "/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000" 0 "audiocs" "/pci@1f,4000/network@1,1" 0 "hme" "/SUNW,ffb@1e,0" 0 "ffb" "/pci@1f,2000" 1 "pcipsy" "/iscsi" 0 "iscsi"

5.3.1.2. La commande prtconf

La commande prtconf (print configuration) affiche la configuration du système : celle-ci com- prends la taille de la mémoire vive installée ainsi qu'une arborescence des périphériques connectés au système. L'option -D est intéressante : elle vous permet de visualiser les drivers associés au matériel.

#prtconf System Configuration: Sun Microsystems sun4u Memory size: 128 Megabytes System Peripherals (Software Nodes): SUNW,Ultra-30 scsi_vhci, instance #0 packages (driver not attached) ... chosen (driver not attached) openprom (driver not attached) client-services (driver not attached) options, instance #0 aliases (driver not attached) memory (driver not attached) virtual-memory (driver not attached) pci, instance #0 ebus, instance #0 auxio (driver not attached) power (driver not attached) SUNW,pll (driver not attached) sc (driver not attached) se, instance #0 su, instance #0 su, instance #1 ecpp, instance #0 fdthree (driver not attached) eeprom (driver not attached) flashprom (driver not attached) SUNW,CS4231, instance #0 network, instance #0 scsi, instance #0 disk (driver not attached) tape (driver not attached) sd, instance #1 sd, instance #6 pci, instance #1 counter-timer (driver not attached) SUNW,UltraSPARC-II (driver not attached) SUNW,ffb, instance #0 os-io (driver not attached) iscsi, instance #0 pseudo, instance #0 Gestion des disques 50

5.3.1.3. La commande format

Nous avons fait le tour des différentes commandes relatives au listing du matériel, revenons maintenant dans le vif du sujet avec la commande format. Cette commande est utilisée lors du formatage, la mise en place de labels, ou encore analyser et réparer la surface d'un disque.

Après une recherche rapide, l'utilitaire format sera capable de vous proposer la liste des ins- tances des disques durs connectés au système.

Exemple 5.3. Menu de la commande format

#format Searching for disks...done AVAILABLE DISK SELECTIONS: 0. c0t0d0 /pci@1f,4000/scsi@3/sd@0,0 Specify disk (enter its number): 0 selecting c0t0d0 [disk formatted] Disk not labeled. Label it now? y

FORMAT MENU: disk - select a disk type - select (define) a disk type partition - select (define) a partition table current - describe the current disk format - format and analyze the disk repair - repair a defective sector label - write label to the disk analyze - surface analysis defect - defect list management backup - search for backup labels verify - read and display labels save - save new disk/partition definitions inquiry - show vendor, product and revision volname - set 8-character volume name ! - execute , then return quit format>

5.3.1.4. Prise en Charge de nouveaux périphériques

Solaris est un système d'exploitation dont le but essentiel est de garantir la disponibilité des services de manière quasi-ininterrompue, il est donc hors de question de planifier un arrêt du serveur pour installer un nouveau disque.

Solaris dispose d'outils efficaces afin de forcer la détection du matériel lorsque le serveur n'a pas été éteint. La procédure classique voudrait que l'on arrête le serveur, que l'on installe le nouveau matériel et qu'on redémarre le serveur, mais pourquoi se contenter de si peu lorsque des outils tels que devfsadm.

Cette dernière commande a pour effet direct l'élimination des liens et des fichiers obsolètes contenus dans l'arborescence /dev et /devices et met à jour le fichier /etc/path_to_inst. De plus en cas de présence de nouveaux périphériques elle s'occupe automatiquement du char- Gestion des disques 51

gement des drivers et de la création des instances et des liens symboliques.

Tableau 5.1. Liste des options disponibles pour devfsadm

Option Signification -c Permets de limiter l'action de devfsadm à une classe de périphériques. -C Nettoie les liens symboliques disponibles dans /dev -i Charger le driver mentionné et ne configure que les périphériques dépendant de ce driver -n Ne pas essayer de charger des pilotes ou ajouter des périphériques dans l'arborescence du répertoire /dev -s Supprimer tous les avertissements concernant les changements réalisés dans /dev -v Mode verbeux, utile pour du troubleshooting

5.3.2. Comment partitionner son disque ?

Quelques étapes sont nécessaires lors du partitionnement de vos disques. Sans surprise au- cune, l'utilitaire préconisé est ici format; on verra par la suite qu'il ne s'agit pas de la seule so- lution, mais puisqu'il s'agit du logiciel livré avec Solaris 10 et qu'il fait ainsi office de standard nous allons décrire les étapes à franchir avec format.

Exemple 5.4. Session format : installation d'un nouveau disque

• Avec un utilisateur possédant le niveau de privilèges nécessaires - typiquement root - exé- cutez la commande format.

• Séléctionnez ensuite le disque à partitionner.

• Utiliser la commande fdisk du menu principal de format afin de créer la table des parti- tions.

• Une fois la table créée le disque doit être labelé, il s'agit de créer les slices.

• Les slices étant prêts il ne reste plus qu'à demander l'écriture.

Voici en détail comment c'est réalisé :

1. Tapez format. (Vous devez être connecté en tant que root.)

# format

2. Sélectionnez le disque que vous souhaitez utiliser.

Searching for disks...done AVAILABLE DISK SELECTIONS: 0. c0t0d0 Gestion des disques 52

/pci@1f,0/pci@1,1/ide@3/dad@0,0 Specify disk (enter its number): 0 selecting c0t0d0 [disk formatted, no defect list found] Warning: Current Disk has mounted partitions. FORMAT MENU: disk - select a disk type - select (define) a disk type partition - select (define) a partition table current - describe the current disk format - format and analyze the disk repair - repair a defective sector show - translate a disk address label - write label to the disk analyze - surface analysis defect - defect list management backup - search for backup labels verify - read and display labels save - save new disk/partition definitions volname - set 8-character volume name ! - execute , then return quit

3. Tapez partition format> partition PARTITION MENU: 0 - change #0' partition 1 - change #1' partition 2 - change #2' partition 3 - change #3' partition 4 - change #4' partition 5 - change #5' partition 6 - change #6' partition 7 - change #7' partition select - select a predefined table modify - modify a predefined partition table name - name the current table print - display the current table label - write partition map and label to the disk ! - execute , then return quit

4. Tapez print. partition> print Current partition table (original): Total disk cylinders available: 17660 + 2 (reserved cylinders) Part Tag Flag Cylinders Size Blocks 0 root wm 1041 - 4458 1.64GB (3418/0/0) 3445344 1 swap wu 0 - 1040 512.37MB (1041/0/0) 1049328 2 backup wm 0 - 17659 8.49GB (17660/0/0) 17801280 3 unassigned wm 0 0 (0/0/0) 0 4 unassigned wm 0 0 (0/0/0) 0 5 unassigned wm 0 0 (0/0/0) 0 6 unassigned wm 0 0 (0/0/0) 0 7 home wm 4459 - 17657 6.34GB (13199/0/0) 13304592 Gestion des disques 53

5. Tapez le numéro de la partition. (0 pour nous) partition> 0 Part Tag Flag Cylinders Size Blocks 0 root wm 1041 - 4458 1.64GB (3418/0/0) 3445344

6. Saisissez un nom pour la partition.

Enter partition id tag[root]: ? Expecting one of the following: (abbreviations ok): unassigned boot root swap usr backup stand var home alternaEnter partition id tag[root]:

7. Sélectionnez la permission. En general wm est utilisé (wm permet d’écrire sur la partition et de la monter dans l’arborescence Solaris)

Enter partition permission flags[wm]: ? Expecting one of the following: (abbreviations ok): wm - read-write, mountable wu - read-write, unmountable rm - read-only, mountable ru - read-only, unmountable Enter partition permission flags[wm]:

8. Sélectionnez le cylindre de départ

Enter new starting cyl[1041]:

9. Sélectionnez la taille de la partition

Enter partition size[3445344b, 3418c, 4458e, 1682.30mb,1.64gb]:

10. Enregistrez les modifications dans la VTOC. partition> label Ready to label disk, continue? y partition> quformat> quit

11. Vérifiez la VTOC de votre disque.

# prtvtoc /dev/rdsk/c0t0d0s2 * /dev/rdsk/c0t0d0s2 partition map * * Dimensions: * 512 bytes/sector * 63 sectors/track * 16 tracks/cylinder Gestion des disques 54

* 1008 sectors/cylinder * 8321 cylinders * 8319 accessible cylinders * * Flags: * 1: unmountable * 10: read-only * * First Sector Last * Partition Tag Flags Sector Count Sector Mount Directory 0 2 01 0 3445344 3445344 / 1 3 00 3445344 1049329 4494673 2 5 00 0 4494673 4494673

5.3.3. Les erreurs possibles 5.3.3.1. Chevauchement de partitions

La création des partitions sous Solaris avec l’outil format nécessite de fournir les cylindres de départ pour chaque partition. Aucune vérification n’est réalisée par le logiciel sur les données entrées. Il faut donc impérativement veiller à ne pas superposer 2 partitions ce qui aurait un ef- fet catastrophique sur les données.

Pour pouvoir garantir la cohérence de votre partitionnement, vous pouvez utiliser l’option modify de la commande format. Cette commande va vérifier les données de la VTOC et vous informer en cas d’anomalie.

Note

La VTOC (Volume Table of Contents) se trouve au début du disque et contient la table des slices présents.

5.3.3.2. Problèmes de VTOC

Dans le cas où vous avez un problème avec le contenu de votre VTOC, vous avez la possibili- té d’en faire une sauvegarde et de la restaurer comme dans l’exemple suivant :

Exemple 5.5. Sauvegarde

# mkdir /vtoc # prtvtoc /dev/rdsk/c0t0d0s2 > /vtoc/c0t0d0

Exemple 5.6. Restauration

fmthard –s /vtoc/c0t0d0 /dev/rdsk/c0t0d0s2 Gestion des disques 55

5.3.4. Solaris Management Console

Il s’agit de l’outil d’administration en Java. On le lance dans une fenêtre de terminal avec la commande smc &. Cet outil permet de réaliser la plupart des actions vu précedemment.

Pour vérifier que le serveur SMC est lancé :

# /etc/init.d/init.wbem status

Pour lancer le serveur SMC :

# /etc/init.d/init.wbem start

Pour arrêter le serveur SMC :

# /etc/init.d/init.wbem stop

5.4. Monter et démonter

Afin de rattacher un système de fichiers, ou un media, à l'arborescence du système il va falloir le monter. Cette opération peut néanmoins se faire de manière automatisée. Le but de cette section est de vous exposer les différentes commodités offertes par Solaris 10, illustrer les dif- férents fichiers de configuration et savoir les modifier. 5.4.1. Les différents types de système de fichier

Il existe différents systèmes de fichiers (FileSystem), il s'agit d'une organisation logique des données sur le media de stockage. Le rôle d'un système de fichiers moderne est de fournir à l'utilisateur une vision symbolique des fichiers qu'il possède (notion d'arborescence), assurer l'intégrité des données et la redondance des données, permettre la récupération facile après un crash...

Après un rapide tour d'horizon des différents systèmes disponibles, la création d'un FileSys- tem et l'utilisation de ce dernier représenterons les dernières étapes clés. 5.4.2. Création d'une partition UFS

Une fois l'étape du partitionnement franchie, nous devons crééer un système de fichier afin de pouvoir utiliser les partitions. La commande a utiliser diffère légèrement selon le filesystem choisi. Pour ufs, il s'agit de la commande newfs

# newfs /dev/rdsk/(diskname)

5.4.3. Monter un système de fichier

Afin de pouvoir monter un système de fichier, vous pouvez saisir la commande suivante :

# mount /dev/disk/c0t0d0s7 /home Gestion des disques 56

Ceci va monter la partition numéro 7 sur le disque 0 comme répertoire de base (home). UFS est utilisé par défaut. Si vous souhaitez un autre système de fichier alors il faut le spécifier. 5.4.4. Le fichier vfstab

Le fichier /etc/vfstab liste tous les systèmes de fichiers qui nécessitent d'être montés au- tomatiquement au démarrage. Ce fichier peut être édité manuellement par l’utilisateur root. C'est l'équivalent du fichier fstab sous Linux

# cat /etc/vfstab #device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # fd - /dev/fd fd - no - /proc - /proc proc - no - /dev/dsk/c0t0d0s1 - - swap - no - /dev/dsk/c0t0d0s0 /dev/rdsk/c0t0d0s0 / ufs 1 no - /dev/dsk/c0t0d0s7 /dev/rdsk/c0t0d0s7 /export/home ufs 2 yes - swap - /tmp tmpfs - yes -

5.4.5. Vold : Volume management

Le daemon vold sert au montage automatique des péripheriques amovibles. En effet, de base, lorsqu'un péripherique amovible est inséré sur le système, il faut le monter manuellement à l'aide de la command mount qui nécessite les droits root. Grâce à vold, vous pouvez vous af- franchir de cette command, et monter automatiquement ces péripheriques.

On peut gérer le service de la manière suivante :

# /etc/init.d/volmgt start

# /etc/init.d/volmgt stop 57

Chapitre 6. Gestion des utilisateurs

Table des matières

6.1. Introduction ...... 57 6.1.1. Pré-requis ...... 57 6.1.2. Objectifs ...... 57 6.2. Particularité de l'administration des utilisateurs par rapport à Linux ...... 57 6.2.1. Base du système d'administration des utilisateurs ...... 58 6.2.2. Gestion des comptes ...... 61 6.2.3. Gestion des fichiers d'initialisation ...... 74

6.1. Introduction

Ce module introduit l'administration des utilisateurs sous Solaris 10 en présentant les bases de l'administration et de la gestion des comptes. 6.1.1. Pré-requis

Avant de commencer, voici un rappel des différentes notions qu'il est impératif de maîtriser pour la compréhension de ce cours :

• Utilisation des différents outils et éléments du bureau

• Gestion des fichiers et des dossiers

• Création et modification de fichiers

• Maîtrise de l'environnement de travail de l'utilisateur

• Archivage de fichiers

• Utilisation des commandes à distance

6.1.2. Objectifs

• Décrire les bases de l'administration des utilisateurs

• Gérer les comptes des utilisateurs

• Gérer les fichiers d'initialisation

6.2. Particularité de l'administration des utilisateurs par rapport à Linux Gestion des utilisateurs 58

L'administration des utilisateurs sous Solaris est très semblable à celle sous Linux à quelques éléments près que nous allons détailler ensuite. 6.2.1. Base du système d'administration des utili- sateurs

La structure du système gérant les utilisateurs est identique à ce que nous avons déjà vu sous Linux, à savoir :

• un fichier /etc/passwd pour les utilisateurs

• un fichier /etc/shadow pour les mots de passe

• un fichier /etc/group pour les groupes

6.2.1.1. Eléments de base d'un compte utilisateur

Les principaux éléments caractéristiques concernant les comptes utilisateurs d'un système So- laris sont :

• UserName: Un nom d'utilisateur unique à chacun qui va lui permettre de s'identifier sur le système avant de rentrer son mot de passe.Il ne doit pas contenir plus de 8 lettres (A-Z, a- z) ou chiffres (0,9). Les caratères ".", "-" et "_" sont autorisés mais fortement déconseillés pour éviter une incompatibilité avec certaines applications. Le nom d'utilisateur doit néan- moins commencer par une lettre et comporter au moins une lettre en minuscule.

• UID: La plage d'UID réservée pour les utilisateurs va de 100 à 60000. 0 à 99 est reservé pour les comptes systèmes. La plage d'UID de 60001 à 2^31 -1 est utilisée pour des comptes à fonctions limitées (par exemple les UIDs réservés comme 60001 pour le compte nobody, 60002 pour le compte noaccess, etc ...).

Un dernier point important à préciser est la possibilité d'avoir une duplication d'UID, c'est dans la plupart du temps très déconseillé mais certaines applications peuvent en avoir be- soin.

• Group: Les groupes permettent de déterminer un ensemble de permissions appliquées à un groupe d'utilisateurs. La seule restriction sur le nom porte sur la longueur qui ne doit pas dépasser 8 caractères. La plage d'UID réservée pour les groupes d'utilisateurs va de 100 à 60000 (la plage de 0 à 99 est reservé pour les comptes systèmes).

• Home Directory: la racine du répertoire appartenant à l'utilisateur (par défaut dans / export/home/username mais nous détaillerons ce point plus tard).

Comme sur tout système Unix il existe donc aussi des comptes système par défaut, comme sys, daemon, bin, ... Remarquons aussi la présence du compte nobody qui joue un rôle essen- tiel dans la sécurité du système, puisque toute tentative de connexion en root (via NFS généra- lement) sera transformé en connexion avec les privilèges de nobody, ce qui équivaut à se connecter en anonyme. 6.2.1.2. Le fichier /etc/passwd

Voici une ligne type du fichier /etc/passwd :

:::::: Gestion des utilisateurs 59

Chaque ligne représente un utilisateur avec la plupart des informations dont le système peut avoir besoin. Chacun des champs est séparé d'un autre par le caractère ":" (deux ":" adjacents indiquent un champ vide, assez courant par exemple dans le cas du champ "commentaire").

• nom d'utilisateur: identifiant usuel du compte, aussi appelé "login".

• mot de passe: mot de passe du compte.

• UID: identifiant unique de l'utilisateur.

• GID: identifiant du groupe principal auquel l'utilisateur appartient.

• comment: champ optionnel pour indiquer des informations utiles sur l'utilisateur.

• répertoire personnel: répertoire personnel de l'utilisateur.

• shell: shell par défaut utilisé à l'ouverture de session de l'utilisateur.

Si le mot de passe de l'utilisateur est crypté, le champ password comporte seulement un "x" et le mot de passe est stocké dans le fichier /etc/shadow.

Note

Sous solaris il est fortement recommandé d'utiliser SMC (Solaris Management Console) plutôt que d'éditer le fichier /etc/passwd à la main.

6.2.1.3. Le fichier /etc/shadow

Afin d'assurer la sécurité et la confidentialité des mots de passe des utilisateurs, Solaris utilise plutôt le fichier /etc/shadow accessible uniquement par le compte root. Comme sous Li- nux celui-ci possède autant de lignes que d'utilisateurs à raison de 8 champs par ligne:

:::::::

• username : identifiant usuel du compte, aussi appelé "login".

• password : Contient une chaîne cryptée de 13 caractères. Lorsque celle-ci a le prefix *LK*, le compte est vérouillé. Lorsque celle-ci a le préfix NP, le password est invalide.

Validité d'un mot de passe : Pour être un valide un mot de passe doit posséder au moins 6 caractères dont au moins 2 caractères alphabétiques et 1 numérique/spécial. De plus il ne peut pas être égal au LoginID ni à l'inverse du loginID.

• lastchg: le nombre de jours écoulés en le 1er janvier 1970 et le dernier changement de mot de passe.

• min: nombre de jours minimum requis entre deux changements de mot de passe.

• max: nombre de jours maximum avant que l'utilisateur ne soit obligé de changer son mot de passe.

• warn: nombre de jours précédant l'expiration du mot de passe pendant lesquels l'utilisateur sera averti. Gestion des utilisateurs 60

• inactive: nombre de jours d'inactivité autorisés avant le verrouillage du compte.

• expire: date d'expiration du compte, à partir de laquelle l'utilisateur ne pourra plus se log- guer.

Comme le montre les différentes options, le fichier /etc/shadow contient les informations concernant le mot de passe et la validité du compte.

Les informations de l'utilisateur se trouvent dans les fichiers /etc/passwd et / etc/shadow, celles des groupes dans /etc/group, que nous allons voir ensuite. 6.2.1.4. Le fichier /etc/group

Les utilisateurs du système peuvent être organisés en groupes pour faciliter l'administration. Ce fichier regroupe les informations concernant chacun des groupes dans une structure iden- tique aux fichiers précédents :

:::

• group name: le nom du groupe, d'une longueur maximale de 8 caractères.

• group password: le mot de passe du groupe, très peu utilisé.

• gid: identifiant numérique unique du groupe.

• user-list: liste des utilisateurs membres du groupe, séparés par une virgule.

6.2.1.5. Configurer les propriétés par défaut des utilisateurs

Le fichier /etc/default/passwd contient les valeurs par défaut pour les propriétés des utilisateurs, en particulier lors de leur création. Cela permet par exemple de définir une poli- tique de sécurité pour les mots de passe. En voici la liste :

• MAXWEEKS : Période maximum, en semaines, pendant laquelle le mot de passe est va- lide.

• MINWEEKS : Période minimum, en semaines, pendant laquelle le mot de passe ne peut être changé.

• PASSLENGTH : Nombre de caractères minimum pour le mot de passe. Valeur valide : 6, 7 ou 8.

• WARNWEEKS : Période, en semaines, précédent la fin de validité d'un mot de passe, pendant laquelle l'utilisateur sera prévenu que son mot de passe arrive à expiration.

Nouvelles propriétés n'existant que depuis Solaris 10.

• NAMECHECK : Permet de vérifier ou non si le loginID est présent dans le password que l'utilisateur tente d'utiliser (Valeur : YES ou NO)

• HISTORY= : Permet de garder l'historique des changements de mot de passe pendant changements. Par exemple si la valeur est de 15 l'utilisateur ne pourra réutiliser son 1er mot de passe qu'au 16ème changement. Gestion des utilisateurs 61

• DICTIONLIST : Permet d'utiliser un dictionnaire pour vérifier que le mot de passe n'y est pas.

• DICTIONDBDIR : Chemin absolu vers le dictionnaire.

Pour aller plus loin, on peut aussi régler plus précisément la complexité d'un mot de passe. (Les directives qui suivent sont commentées par défaut) :

#MINDIFF=3 #MINALPHA=2 #MINNONALPHA=1 #MINUPPER=0 #MINLOWER=0 #MAXREPEATS=0 #MINSPECIAL=0 #MINDIGIT=0 #WHITESPACE=YES

Note

Définir une trop forte complexité dans sa politique de mot de passe peut conduire les utilisateurs à noter le leur n'importe où afin de s'en souvenir.

6.2.2. Gestion des comptes

Gérer les comptes en ligne de commande. 6.2.2.1. Les outils classiques.

Nous retrouvons sous Solaris les outils permettant la gestion des utilisateurs en ligne de com- mande sous Linux tels que : useradd, usermod, userdel, groupadd, groupmod et groupdel. Ces six commandes essentielles permettent comme leur nom l'indique d'ajouter/modifier/supprimer des utilisateurs et groupes. Revoyons d'abord ces commandes, la plupart des options étant récurrentes dans les outils spécifiques à Solaris, à commencer par useradd :

#/usr/sbin/useradd [-c ] [-b ] [-d

] [-e ] [-f ] [-g ][ -G ] [ -m [-k ]] [-p ] [-A [-R ] [-s ] [ -u ]

Voici l'explication de chacune des options :

• -c : chaîne de caractères généralement utilisée pour décrire l'utilisateur en question.

• -b : répertoire racine où stocker le répertoire personnel de l'utilisateur. Si la di- rective "-d" n'est pas utilisée, le répertoire sera créé dans /login-name.

• -d

: chemin complet du répertoire personnel de l'utilisateur. Gestion des utilisateurs 62

• -e

• -f : durée maximale en jours entre 2 ouverture de session sur ce compte avant qu'il ne passe en inactif.

• -g : groupe principal de l'utilisateur.

• -G : groupes secondaires de l'utilisateur (un maximum peut être spé- cifié dans /usr/include/limits.h en changeant la variable NGROUPS_MAX qui est de 15 par défaut).

• -m : le répertoire personnel de l'utilisateur sera créé automatiquement s'il n'existe pas déjà.

• -k : répertoire à utiliser comme patron pour créer celui de l'utilisateur (/ etc/skel par défaut).

• -p : spécification des profils à appliquer à l'utlisateur, séparés par des virgules.

• -A : spécification des autorisations à appliquer à l'utlisateur, séparés par des virgules.

• -R : spécification des rôles à appliquer à l'utlisateur, séparés par des virgules.

• -s : shell à attribuer à l'utilisateur à son ouverture de session.

• -u : identifiant numérique de l'utilisateur (à choisir selon les spécifications évoquées plus haut).

Dans le cas où une option n'est pas spécifiée, le système cherche la valeur par défaut à attri- buer dans /etc/sadm/defadduser. Pour visualiser les valeurs par défaut en place il faut utiliser la commande useradd -D. Elle permet également de modifier une option en ajoutant ensuite l'option concernée et la valeur à attribuer :

#/usr/sbin/useradd -D

Une fois le compte créé, tous ses paramètres peuvent être modifiés avec usermod. Les options sont identiques à deux exceptions près :

• -l : nouveau nom de l'utilisateur

• -b : permet de déplacer l'ancien répertoire personnel de l'utilisateur à sa nou- velle place si un changement a été spécifié avec la directive "-d".

La commande étant :

#/usr/sbin/usermod [-c ] [-d

[-m] ] [-e ] [-f ] [-g ][ -G ] [-l [ -m [-k ]] [-p ] [-A ][-R ] [-s ] [ -u ]

Enfin, la commande userdel va nous permettre de supprimer un utilisateur. Il est possible de supprimer en même temps son répertoire personnel en ajoutant l'option "-r" :

#/usr/sbin/userdel [-r] Gestion des utilisateurs 63

Par défaut sous Solaris, les utlisateurs pour lesquels on ne spécifie pas de groupe sont ajoutés au groupe "other". Pour ajouter un utilisateur à un groupe, le groupe doit bien sûr exister. Pour les créer, utilisons la commande groupadd :

groupadd [-g [-o]]

• ig : identifiant numérique du groupe.

• -o : permet de partager le GID avec un autre groupe.

Tous les paramètres du groupe peuvent également être modifiés avec groupmod ou l'option "- n" vient s'ajouter pour permettre de changer le nom du groupe :

groupmod [-g [-o]] [-n ]

• -n : nouveau nom du groupe.

La suppression d'un groupe se fait par la commande groupdel. Si des utlisateurs ont ce groupe comme groupe principal, ils auront ensuite un groupe fictif "100" à la place.

groupdel 6.2.2.2. Les outils spécifiques Solaris en ligne de com- mande.

La différence est que sous Solaris nous disposons également d'outils comme smuser et sm- group qui permettent d'effectuer en console les actions sur les utilisateurs qui sont disponibles sous SMC.

smuser et smgroup permettent ainsi :

• D'interargir avec les services de noms

• De gérer les utilisateurs/groupes d'une machine distante

• D'utiliser la fonctionalité "autohome" (voir plus bas)

Ces commandes possèdent quatres types d'actions explicites qui sont : add, modify, de- lete, list. Nous verrons en détails comment les utiliser.

Il faut également noter qu'utiliser smuser ou smgroup aura pour conséquence d'initialiser la SMC (processus un plus long et pus grourmand en ressources) et ensuite de vous demander de vous authentifier. Voici la syntaxe à utiliser :

#/usr/sadm/bin/smuser subcommand [auth_args] -- [subcommand_args]

• subcommand : add, delete, ...

• [auth_args] : optionnel

• -- : obligatoire, permet d'introduire les arguments de "subcommand" Gestion des utilisateurs 64

• [subcommand_args] : optionnel, contient les paramètres pour la création d'un utilisateur, par exemple.

6.2.2.2.1. Ajouter un utilisateur

#cat /usr/sadm/defadduser# Default values for useradd. Changed Sun Oct 17 09:04:27 2004 defgroup=1 defgname=other defparent=/home defskel=/etc/skel defshell=/bin/sh definact=0 defexpire= defauthorization= defrole= defprofile= defproj=3 defprojname=default deflimitpriv= defdefaultpriv= deflock_after_retries=

Nous allons donc nous concentrer sur la commande smuser add :

#smuser add [auth_args] -- [subcommand_args]

Les arguments [subcommand_args] sont presque tous identique à ceux de la commande use- radd sauf :

• -n : spécifie le login pour l'utilisateur

• -x autohome= : Ajoute un utilisateur sans "automonter" son répertoire home.

Note

Par défaut, le répertoire personnel de l'utilisateur est créé dans le répertoire / export

Exemple 6.1. Création d'un utilisateur

Créons l'utilisateur "luc" avec un répertoire personnel /export/home/luc, un UID qui se- ra 532 avec comme groupe principal staff et comme groupe secondaire technical. Son shell se- ra /bin/ksh.

## /usr/sadm/bin/smuser add -- -n luc -u 532 -g staff \ > -G technical -d /export/home/luc \ > -c "Compte de luc" -s /bin/ksh > -x autohome=N Gestion des utilisateurs 65

Authenticating as user: root Type /? for help, pressing accepts the default denoted by [ ] Please enter a string value for: password :: Enter_The_root_Password Loading Tool: com.sun.admin.usermgr.cli.user.UserMgrCli from sys-02 Login to sys-02 as user root was successful. Download of com.sun.admin.usermgr.cli.user.UserMgrCli from sys-02 was successful.

Ajouter un utilisateur ne permet pas directement de définir son mot de passe, il faut ensuite utiliser la commande passwd. Par défaut l'utilisateur sera verrouillé tant que son mot de passe ne sera pas initialisé, nous pouvons le vérifier en cherchant dans /etc/shadow :

#grep 'luc' /etc/shadow luc:*LK*:12708::::::

Initialisons le mot de passe :

#passwd luc New Password: luc_p@ssw0rd Re-enter new Password: luc_p@ssw0rd passwd: password successfully changed for luc

6.2.2.2.2. Modifier un utilisateur

Modificatioin d'un utilisateur avec la commande smuser modify :

#smuser modify[auth_args] -- [subcommand_args]

Les arguments sont identiques à la commande usermod à l'exception de :

• -n : Login de l'utilisateur

• -N : Nouveau login de l'utilisateur

# /usr/sadm/bin/smuser modify -- -n luc -N jeanluc -d \ > /export/home/jeanluc Authenticating as user: root Type /? for help, pressing accepts the default denoted by [ ] Please enter a string value for: password :: Enter_The_root_Password Loading Tool: com.sun.admin.usermgr.cli.user.UserMgrCli from sys-02 Login to sys-02 as user root was successful. Download of com.sun.admin.usermgr.cli.user.UserMgrCli from sys-02 was successful.

6.2.2.2.3. Supprimer un utilisateur

Voci la méthode pour supprimer un utilisateur avec smuser delete : Gestion des utilisateurs 66

# /usr/sadm/bin/smuser delete -- -n jeanluc Authenticating as user: root Type /? for help, pressing accepts the default denoted by [ ] Please enter a string value for: password :: Enter_The_root_Password Loading Tool: com.sun.admin.usermgr.cli.user.UserMgrCli from sys-02 Login to sys-02 as user root was successful. Download of com.sun.admin.usermgr.cli.user.UserMgrCli from sys-02 was successful.

Note

On ne peut pas supprimer directement le répertoire de l'utilisateur comme avec la commande userdel -r. Il faudra le faire manuelement ensuite.

6.2.2.2.4. Ajouter un groupe

Pour ajouter un groupe avecsmgroup, voici la syntaxe en détail :

# /usr/sadm/bin/smgroup add [auth_args] -- [subcommand_args]

Voici les différents arguments possibles pour [subcommand_args] :

• -g : spécifier le GID

• -m : permet d'ajouter directement des utilisateurs au groupe

• -n : Nom du groupe

Exemple 6.2. Création d'un groupe

Création d'un groupe nommé "bigadmin", avec le gid 202 contenant l'utilisateur jeanluc.

# /usr/sadm/bin/smgroup add -- -n bigadmin -g 202 -m jeanluc Authenticating as user: root Type /? for help, pressing accepts the default denoted by [ ] Please enter a string value for: password :: Enter_The_root_Password Loading Tool: com.sun.admin.usermgr.cli.group.UserMgrGroupCli from sys-02 Login to sys-02 as user root was successful. Download of com.sun.admin.usermgr.cli.group.UserMgrGroupCli from sys-02 was successful.

6.2.2.2.5. Modifier un groupe

Pour modifier un groupe avec smgroup modify, voici la syntaxe en détail : Gestion des utilisateurs 67

# /usr/sadm/bin/smgroup modify [auth_args] -- [subcommand_args]

Voici les différents arguments possibles pour [subcommand_args] :

• -N : spécifier un nouveau nom de groupe.

• -m : permet d'ajouter des nouveaux utilisateurs au groupe

• -n : Nom du groupe à modifier

Exemple : Modification d'un groupe nommé "bigadmin" en "kidadmin".

# /usr/sadm/bin/smgroup modify -- -n bigadmin -N kidadmin Authenticating as user: root Type /? for help, pressing accepts the default denoted by [ ] Please enter a string value for: password :: Enter_The_root_Password Loading Tool: com.sun.admin.usermgr.cli.group.UserMgrGroupCli from sys-02 Login to sys-02 as user root was successful. Download of com.sun.admin.usermgr.cli.group.UserMgrGroupCli from sys-02 was successful.

6.2.2.2.6. Supprimer un groupe

Pour supprimer un groupe avec smgroup delete, voici la syntaxe en détail :

# /usr/sadm/bin/smgroup delete [auth_args] -- [subcommand_args]

Il n'y a qu'un seul argument pour "smgroup delete" : -n pour spécifier quel groupe supprimer. 6.2.2.3. Utilisation des outils Solaris Management Console (SMC)

SMC est une interface graphique qui permet d'administrer son système Solaris (un panneau de configuration), nous allons donc pouvoir l'utiliser pour ajouter ou supprimer des utilisateurs. On peut lancer SMC :

• depuis une console : smc &

• depuis le menu outils de solaris.

Figure 6.1. Console SMC Gestion des utilisateurs 68

6.2.2.3.1. Ajouter un compte utilisateur

Voici les étapes pour créer un compte utilisateur :

• Cliquer "This Computer" dans le panneau de navigation pour affichier les outils de confi- gurations du système

• Cliquer sur "System configuration" pour afficher les outils permettant de créer un nouvel utilisateur

• Cliquer sur "Users" et entrer le login et le mot de passe nécessaire dans le cas où la SMC vous le demande.

• Double cliquer sur "User Templates" pour accèder aux outils de créations.

• Depuis la barre de menu sélectionner "Add user template" (dans "Action List")

Figure 6.2. Add user Template Gestion des utilisateurs 69

• Ecrivez "SA201user" dans le champ "User Template Name"

• Cliquer sur l'onglet "Home Directory" puis écrivez le nom du système dans le champ "Home Directory Server" et décochez "Automatically Mount Home Directory"

Figure 6.3. Ajout d'un template d'utilisateur (onglet Home Directory) Gestion des utilisateurs 70

• Cliquer sur OK puis sur "User Templates" depuis le paneau de navigation et la liste des templates utilisateurs du système apparaîtra.

Figure 6.4. Liste des templates d'utilisateur Gestion des utilisateurs 71

• Cliquer sur "User Accounts" depuis le paneau de navigation et une liste des comptes utili- sateurs du système apparaîtra.

Figure 6.5. Liste des templates d'utilisateur

• Depuis la barre de menu, sélectionner Action -> Add User -> From template.

Figure 6.6. Ajouter un utilisateur Gestion des utilisateurs 72

Sélectionner dans le formulaire, le template que nous précedemment créé.

• Remplir le formulaire et cliquer sur "User must use and fill-in the password"

Une fois tous les champs remplis, cliquer sur OK. La fenêtre qui contenait les utilisateurs réapparaît avec votre nouvel ajout.

Double cliquer sur notre nouvel utilisateur, sa fenêtre de propriétés apparaît. On peut voir et modifier son compte.

Figure 6.7. Propriété de l'utilisateur Gestion des utilisateurs 73

• Depuis les propriétés de l'utilisateur, cliquer sur l'onglet "group".

On peut cliquer sur un groupe listé dans "Available Groups" puis sur "Add" et le groupe sera déplacé sera déplacé dans la colonne "Member of".

Choisir de cette manière le groupe auqel notre utilisateur apartiendra et cliquer sur OK.

Voci à présent les étapes de supression :

• Sélectionner le compte utilisateur depuis la fenêtre "User Accounts"

• Depuis la barre de menu cliquer sur Edit -> Delete. Un message d'avertissement apparaît, on peut alors choisir de supprimer le répertoire home et la mailbox de l'utilisateur.

Figure 6.8. Supprimer un utilisateur Gestion des utilisateurs 74

• Une fois le choix fait, cliquer sur Delete, le compte sera supprimé.

6.2.3. Gestion des fichiers d'initialisation

Dans cette partie nous allons voir les différents fichiers qui interviennent dans l'environnement de l'utilisateur et qui permettent de le personnaliser. Il y a aussi des fichiers d'initialisation pour le système même, indépendamment de l'utilisateur. La possibilité de personnaliser son evironnement est fournis par les 6 shells présent sous Solaris 10. Ces shells apportent 2 types de variables :

• Les variables d'environnement

• Les variables locales

6.2.3.1. Fichiers d'initialisation du système

Ces fichiers dépendent du shell que vous utilisez et permettent de personnaliser tout le sys- tème et d'affecter tous les utilisateurs. Pour Bourne, Korn (ksh) et tous les shells dérivés de Bash, le fichier est /etc/profile. Pour Csh, le fichier est /etc/.login.

Il est ensuite possible de personnaliser l'environnement pour chacun des utilisateurs en utili- sant les fichiers $HOME/.profile pour Ksh et les dérivés Bourne et $HOME/.login pour le Csh. La plupart des shells ont également

Note

Par défaut quand un utilisateur se connecte, une bannière affichant des informa- tions comme l'utilisation du quota disque, le message du jour (/etc/motd) ap- paraît. Il est possible d'empêcher cet affichage grâce à la création d'un fichier ~/.hushlogin dans le répertoire de l'utilisateur. Gestion des utilisateurs 75

6.2.3.2. Variables d'environnement de l'utilisateur

Pour voir la liste de toutes les variables importantes dans l'environnement de l'utilisateur, re- portez vous aux man pages : sh(1), ksh(1), csh(1), zsh(1), bash(1), et tcsh(1).

Voici les commandes pour créer ou modifier des variables d'environnement :

• Shell de type Bash :

export VAR="ma_valeur"

Exemple pour ajouter un nouveau répertoire contenant des exécutables à son shell : export PATH="$PATH:/usr/sadm/bin"

• Pour le C shell :

setenv 76

Chapitre 7. Gestion de la sécurité

Table des matières

7.1. Introduction ...... 76 7.1.1. Objectifs du module ...... 76 7.2. Gestion de l'accès au système ...... 76 7.2.1. La surveillance des logins ...... 76 7.2.2. La surveillance des mots de passe ...... 78 7.3. Monitoring des accès au système ...... 80 7.3.1. Surveillance du système ...... 80 7.4. Optimisation de la sécurité ...... 83 7.4.1. Configurer correctement les accès distants de base ...... 83 7.5. Restreindre les accès aux données ...... 85 7.5.1. Gestion des permissions ...... 86 7.5.2. Changer l'utilisateur ou le groupe propriétaire...... 87

7.1. Introduction

Ce module est une introduction aux notions de sécurité sous Solaris 10 en présentant les bases de la surveillance des accès au système 7.1.1. Objectifs du module

• Connaître les différentes commandes permettant de contrôler l'utilisation des ressources de notre système

• Connaître les fichiers de log permettant d'effectuer un suivi des accès au système

• Être capable de mettre en place des restrictions d'accès au système.

7.2. Gestion de l'accès au système

Une des premières notions de sécurité lors de l'installation de tout nouveau système d'exploitation est la gestion des accès. En effet, faire en sorte que les utilisateurs non désirés ne puissent pas accéder au système est tout aussi important que le fait de manager de façon ef- ficace les utilisateurs qui en ont le droit. Ce management induit de surveiller deux notions es- sentielles:

• La surveillance des logins

• La surveillance des mots de passe

Nous verrons donc ce qui intervient au sein de ces deux catégories et comment manager cha- cune d'entre elles de la façon la plus efficace que possible. 7.2.1. La surveillance des logins Gestion de la sécurité 77

La surveillance des logins en induit, bien entendu, la surveillance mais aussi la restriction. Plusieurs commandes permettent de gérer cela. Après avoir vu les commandes de sur- veillance, nous nous attarderons sur comment monitorer et restreindre les accès utilisateurs. 7.2.1.1. La commande who

La commande who affiche la liste des utilisateurs actuellement logués sur la machine. Cette commande existe sur la plupart des systèmes de type Unix, vous pouvez donc vous reportez à votre essentiel Linux pour plus de détails 7.2.1.2. La commande rusers

La commande rusers permet, tout comme who, de connaître qui est logué sur sa machine mais aussi sur les autres machines du réseau local. Lorsque rusers est appelée elle affiche les noms des utilisateurs et des machines dans l'ordre où celles-ci répondent.

Pour pouvoir interroger toutes les machines, rusers utilise le protocole RPC (Remote Proce- dure Call). Il est donc nécessaire que le daemon rpc.rusersd soit en cours d'exécution sur ces machines pour qu'elles répondent aux requêtes. Pour vérifier que le démon ruserd tourne, il suffit d'appeler le gestionnaire de service svcs :

# svcs -a | grep rusers online 17:00:48 svc:/network/rpc/rusers:default

rusers peut prendre une option, "-l" afin d'afficher le maximum d'informations sur les utilisa- teurs qui sont connectés. Voici un exemple :

# rusers -l Sending broadcast for rusersd protocol version 3... root sys-02:console Oct 17 08:21 (:0) user5 sys-02:pts/6 Oct 17 09:20 1 (sys-03) user3 sys-02:pts/8 Oct 17 09:21 1 (localhost) root fe80::203:baff:f:pts/2 Oct 17 09:18 1 (sys-02) root sys-03:pts/2 Oct 17 09:18 1 (sys-02) Sending broadcast for rusersd protocol version 2...

Dans l'ordre, les différentes colonnes correspondent à:

• L'utilisateur loggué

• Le nom de la machine sur laquelle l'utilisateur est loggué

• Le périphérique de Login, le port TTY.

• La date et l'heure de login

7.2.1.3. La commande finger

La commande finger est comme sous Linux, disponible sous Solaris 10. Elle permet d'avoir des informations détaillées à propos d'un utilisateur local ou distant. Pour connaître toutes les options de finger reportez vous à la page de man ou à votre essentiel Linux.

Voici un exemple d'utilisation pour lister les informations relatives à franck sur la machine "da- Gestion de la sécurité 78

tasrv" :

# finger -m franck@datasrv Login name: user5 Directory: /export/home/user5 Shell: /bin/ksh On since Oct 17 09:20:43 on pts/6 from datasrv:0.0 1 minute 50 seconds Idle Time No unread mail No Plan.

Pour obtenir les informations d'un utilisateur sur une machine distante, le service finger doit être lancé sur cette dernière :

# inetadm | grep finger enabled online svc:/network/finger:default

7.2.1.4. La commande last

La commande last permet d'afficher l'historique de toutes les connexions (Logins) qui ont eu lieu sur le système, classées par ordre chronologique. Cette commande lit tout simplement le fichier /var/adm/wtmpx qui contient l'historique en question. Dans cet historique nous re- trouverons également les redémarrages de la machine.

Pour chaque entrée est enregistrée :

• Le nom d'utilisateur

• Le périphérique de login

• La machine à partir de laquelle l'utilisateur s'est loggué

• L'heure et la date de login et de logout.

• Dans le cas d'un redémarrage : l'heure du redémarrage.

Voici un exemple :

# last user3 pts/8 localhost Sun Oct 17 09:21 still logged in root console :0 Sun Oct 17 08:21 still logged in reboot system boot Sun Oct 17 08:00 wtmp begins Fri Oct 15 11:36

La commande last peut prendre quelques paramètres qui sont :

• -n : Nombre d'entrées à afficher car la liste devient de plus en plus longue.

: Passer un utilisateur directement en paramètre permet d'afficher uniquement son historique.

7.2.2. La surveillance des mots de passe Gestion de la sécurité 79

Un élément basique, mais néanmoins essentiel à la sécurité, est l'utilisation de mots de passe pour les utilisateurs du système. Un utilisateur sans mot de passe représente en effet une faille de sécurité qu'il est impératif de combler. 7.2.2.1. Détecter les utilisateurs sans mot de passe.

La commande login -p permet d'afficher tous les utilisateurs du système n'ayant pas de mot de passe. 7.2.2.2. Configurer les mots de passe

Un utilisateur doit avoir un mot de passe afin de garantir un certain niveau de sécurité. Ce mot de passe peut être managé: en effet, il est possible de spécifier des caractéristiques par défaut pour les mots de passe. Une fois ces caractéristiques appliquées, il convient de configurer le mot de passe pour l'utilisateur.

• Le fichier /etc/default/passwd

Ce fichier va contenir toutes les variables permettant de configurer les spécificités du mot de passe. On retrouve dans ce fichier les variables suivantes:

HISTORY #C'est le nombre maximum de précédents mots de passe que le système va garder en mémoire pour un utilisateur. La valeur par défaut est 26 MAXWEEKS #Cette variable définit le temps maximal durant lequel le mot de passe est valide MINWEEKS #C'est le temps minimum obligatoire avant que le mot de passe puisse être changé PASSLENGTH #Cette option spécifie le nombre de caractères minimum que doit contenir le mot de passe WARNWEEKS #Va définir le temps au bout duquel le système va alerter l'utilisateur de la date d'expiration de son mot de passe.

Ceci est une liste non exhaustive des options que vous pourrez rencontrer dans ce fichier. Par exemple, vous trouverez d'autres variables qui vous permettront de définir la com- plexité (nombre de caractères non-alphanumériques, ...) du mot de passe. Ces options ont des noms assez explicites et peuvent être lues avec un cat sur le fichier / etc/default/passwd.

• Configurer le mot de passe: passwd

La commande passwd va permettre de configurer le mot de passe pour un utilisateur. Déjà présente sur les systèmes Unix/Linux, son utilisation ne diffère pas sous Solaris 10.

# passwd username options

Les options de la commande ne diffèrent pas de celles utilisées sous Linux. On retrouve donc -d, qui permet d'effacer le mot de passe de l'utilisateur, -f, qui va forcer l'utilisateur à changer de mot de passe au prochain démarrage ou encore -l qui va verrouiller le compte utilisateur (un man passwd vous donnera bien entendu la liste exhaustive de ces options). Solaris propose également des alternatives propres pour gérer les mots de passe.

• Configurer le mot de passe: smuser.

smuser est la commande d'administration des utilisateurs de Solaris. Par elle, vous allez pouvoir créer, supprimer ou modifier un utilisateur ainsi que ses paramètres. La force de cette commande c'est qu'elle peut manager non seulement des entrées du système local, mais également celles de service de noms telles que NIS ou NIS+. Afin de modifier le mot de passe de l'utilisateur nous utiliserons la commande suivante : Gestion de la sécurité 80

# ./smuser modify -H myhost -p rootpasswd -u root -- -n user1 -P newpassword

Ici, nous allons donc modifier le mot de passe de user1 en "newpassword". Les options avant les "--" sont des options d'authentification (dans notre exemple avec l'utilisateur root sur l'hôte "myhost"). Il est à noter ici que l'écriture du mot de passe lors de la commande se fait en clair, ce qui représente une faille de sécurité durant le temps d'exécution de la commande.

• Configurer le mot de passe: smc

Vous pouvez bien entendu configurer les mots de passe pour les utilisateurs (ou encore la complexité des mots de passes pour vos profils) en utilisant l'outil graphique d'administration de Solaris 10 : smc. Très intuitive, il conviendra simplement d'éditer les utilisateurs qui apparaîtront dans le panneau présent à cet effet pour configurer le mot de passe.

7.3. Monitoring des accès au système

La sécurité, c'est également savoir se montrer réactif et prendre la bonne décision face à une situation exploitant une faille. Encore faut-il avoir la connaissance de cette situation. Solaris 10 propose donc plusieurs fichiers et méthodes permettant de monitorer les accès au système.

• Monitorer et empêcher temporairement les connexions au système

• Monitorer les changements d'utilisateurs (plus particulièrement ceux en super utilisateur et pouvoir les restreindre)

7.3.1. Surveillance du système

Nous allons donc ici développer tous les points que nous venons d'évoquer : 7.3.1.1. Enregistrement des tentatives de login

Le fichier /etc/default/login permet de définir les paramètres par défaut qui seront appliqués aux utilisateurs dès leur connexion au système (log in). On peut par exemple res- treindre l'accès au système en root depuis une autre machine. Dans le cas d'un serveur, il est intéressant d'avoir un reporting de toutes les tentatives de log échouées. En effet, plusieurs tentatives échouées peuvent traduire qu'un utilisateur mal intentionné tente de se connecter en utilisant le compte de quelqu'un.

Solaris nous propose une méthode permettant d'obtenir ce type de reporting :

Lorsqu'un utilisateur tente de se loguer, le processus login gère l'authentification et vérifie dans les fichiers /etc/passwd et /etc/shadow la correspondance du mot de passe. Si un utilisateur ne rentre pas un login valide ou le bon mot de passe, le programme login lui interdit l'accès au système. Ce sont ces tentatives ratées que nous allons loguer.

Par défaut les tentatives ratées sont loguées dans /var/adm/loginlog. En le consultant il sera possible de déceler si quelqu'un essaye de s'introduire de force sur votre système. Pour activer (désactivé par défaut) ce fichier de log il suffit de le créer en prenant soin de ne donner les droits de lecture et écriture qu'à root et d'en transférer la propriété au groupe sys : Gestion de la sécurité 81

# touch /var/adm/loginlog # chown root:sys /var/adm/loginlog # chmod 600 /var/adm/loginlog

Une tentative n'est loguée qu'au bout du 5ème échec. Si vous voulez augmenter ou réduire cette valeur, il faut modifier la variable syslog_failed_login et la mettre à 0 dans le fichier /etc/default/login. En effet, ce fichier comporte plusieurs directives qui permettent de gérer le système de log des utilisateurs.

Une fois cette configuration réalisée, vous avez donc accès aux tentatives échouées. Il convient maintenant de régler le problème des tentatives échouées répétées. Pour cela, Solaris 10 propose un moyen de désactiver temporairement toutes les connexions autres que root à votre système. Cela peut également être utilisé pour réaliser d'autres tâches, comme par exemple de la maintenance. Pour cela, il convient de créer le fichier /etc/nologin. Une fois ce fichier créé, toutes les connexions autres que root seront refusées. Vous pouvez y écrire un message à l'intérieur. C'est ce message qui sera envoyé au client souhaitant se connecter alors qu'il ne le peut pas.

# touch /etc/nologin

7.3.1.2. Monitorer les changements d'utilisateurs

Il arrive parfois que pour réaliser certaines actions, un utilisateur soit obligé de changer d'identité (par exemple un utilisateur normal doit devenir root pour réaliser les tâches d'administration).

Sous Solaris 10, le changement d'utilisateur se fait via la commande su, à l'identique donc que sous Linux. Pour rappel, un su user vous connectera en tant que user sans changement d'environnement, alors qu'un su - user effectuera un changement d'environnement. Pour un changement en root, un simple su suffit (demande de mot de passe). De même il vous sera utile de bien connaître les commandes whoami, pwd, ainsi que who am i (commandes per- mettant de savoir qui est logué sur la machine).

Loguer les changements d'utilisateur est une nécessité pour surveiller les tentatives d'accès à la ligne de commande root. Pour activer le monitoring éditer le fichier /etc/default/su :

#ident "@(#)su.dfl 1.6 93/08/14 SMI" /* SVr4.0 1.2 */ # SULOG determines the location of the file used to log all su attempts # SULOG=/var/adm/sulog # CONSOLE determines whether attempts to su to root should be logged # to the named device # #CONSOLE=/dev/console (output edited for brevity) SYSLOG=YES

Les tentatives d'utilisation de su pour devenir root sont aussi loguées dans le fichier / var/adm/messages, car se sont des évenements critiques :

Oct 16 12:35:47 sys-02 su: [ID 810491 auth.crit] 'su root' failed for user3 on /dev/pts/2 Gestion de la sécurité 82

La variable CONSOLE: Par défaut cette variable est commentée, si nous l'activons elle per- met d'ajouter une ligne supplémentaire aux informations qui sont logués vers la console : La variable CONSOLE: Feb 2 11:20:07 host1 su: 'su root' succeeded for user1 on /dev/pts/4 SU 02/02 11:20 + pts/4 user1-root

Mais cette variable, en plus d'ajouter une information supplémentaire aux informations rap- portées, va permettre de combler une autre faille de sécurité. En effet, elle va permettre de res- treindre les accès root uniquement à la machine locale. Pour cela, il suffit de configurer la va- leur de cette variable à /dev/console. Ainsi, root ne pourra plus se connecter de façon dis- tante au serveur.

CONSOLE=/dev/console

La variable SULOG: Cette variable définit le fichier dans lequel sont stockés les logs des uti- lisateurs qui appellent la commande su pour se loguer avec un autre utilisateur. Si la variable n'est pas définie, le monitoring de la commande su est désactivé. : Chaque fois qu'un utilisateur tente de changer son identité pour celle d'un autre utilisateur, une entrée est ajoutée au fichier sulog (par défaut /var/adm/sulog).

Voici un aperçu du fichier /var/adm/sulog :

# more /var/adm/sulog SU 10/17 02:51 + ??? root-uucp SU 10/17 09:26 + pts/10 user3-root SU 10/17 09:27 + pts/10 user3-user5 SU 10/17 09:28 + pts/10 user3-user5 SU 10/17 09:28 + pts/10 user3-root SU 10/17 09:29 - pts/10 user3-user4

Les signes "+" et "-" représentent une tentative réussie ou échouée. 7.3.1.3. Monitoring via la configuration de syslog

Un autre moyen pour effectuer des logs sous Solaris est d'utiliser syslog. Sous Solaris, syslog est en réalité constitué de plusieurs composants :

• syslogd : le deamon qui va recevoir et gérer les événements à loguer.

• /etc/syslog.conf : fichier de configuration de syslog, élément principal du serveur

• logger : application qui permet de rajouter des entrées dans le system de log

• syslog() : API syslog utilisable dans plusieurs langages de programmation (C, C++, Ja- va...)

• logadm : utilitaire de gestion apparaissant à partir de Solaris 9

Le fichier de configuration de syslog a une syntaxe relativement simple: il est en réalité com- posé de deux colonnes. Une colonne selector et une colonne action.

• La colonne Selector: elle est formatée de la façon suivante: facility.level. Le champ facili- ty va spécifier le type d'événement que l'on veut loguer (si ce sont des kernel events, des événements d'impressions etc). Le level quand à lui va, comme son nom l'indique, spéci- fier le niveau de log (si on n'enregistre que les erreurs, ou les warnings etc). Gestion de la sécurité 83

• Le champ Action: va simplement spécifier où loguer le message. Cette cible peut-être un fichier (utilisé le plus souvent),un hôte ou encore des utilisateurs.

Une fois cette syntaxe acquise, il devient très aisé, en éditant ce fichier, de définir divers fi- chiers et niveaux de log pour votre système. Sachant en plus que le fichier offre des subtilités telles que les actions conditionnelles (à l'aide du mot clé ifdef), il est donc très malléable et vous permet une assez grande liberté de log. Pensez à regarder les différentes pages de man pour plus d'informations concernant syslog.

Voici un exemple du fichier syslog.conf de base sous Solaris:

*.err;kern.notice;auth.notice /dev/sysmsg *.err;kern.debug;daemon.notice;mail.crit /var/adm/messages *.alert;kern.err;daemon.err operator *.alert root *.emerg * # if a non-loghost machine chooses to have authentication messages # sent to the loghost machine, un-comment out the following line: #auth.notice ifdef(`LOGHOST', /var/log/authlog, @loghost) mail.debug ifdef(`LOGHOST', /var/log/syslog, @loghost) # # non-loghost machines will use the following lines to cause "user" # log messages to be logged locally. # ifdef(`LOGHOST', , user.err /dev/sysmsg user.err /var/adm/messages user.alert root, operator user.emerg * )

7.4. Optimisation de la sécurité

Une fois les précédentes étapes de sécurités passées, il convient maintenant de régler les der- nières failles qui peuvent persister. Ces failles concernent surtout les accès distants. 7.4.1. Configurer correctement les accès distants de base

Solaris héberge en natif un serveur FTP qui, si il n'est pas correctement configuré, peut se ré- véler une grosse faille de sécurité. D'autres fichiers gérant les accès distants peuvent égale- ment se révéler dangereux. Voyons tout ceci en détails. 7.4.1.1. Contrôler l'accès via ftp

Grâce au fichier /etc/ftpd/ftpusers, nous pouvons prohiber l'accès via FTP à certains utilisa- teurs. Chaque ligne de ce fichier contient un login d'utilisateur que nous voulons interdire. Ce fichier est lu par le démon ftp de Solaris (in.ftpd) à chaque fois qu'une nouvelle session est ini- tialisée, si l'utilisateur est listé, le démon lui renvoie "Login Failed". Gestion de la sécurité 84

Voici les utilisateurs qui sont, par défaut, listés dans /etc/ftpd/ftpusers :

root daemon bin sys adm lp uucp nuucp smmsp listen gdm webservd nobody noaccess nobody4

Deux autres fichiers entrent en compte pour la restriction des accès ftp: /etc/ftpd/ftphosts et / etc/shells. Le fonctionnement de ces deux fichiers est sensiblement similaire à quelques diffé- rences près.

En effet, le fichier /etc/ftpd/ftphosts va permettre d'autoriser ou de refuser la connexion de cer- tains utilisateurs venant de différents hôtes. On utilise dans ce fichier les mots clé "allow" ou "deny" devant les noms d'utilisateurs et les hôtes afin de gérer les autorisations d'accès.

Quant à lui, le fichier /etc/shells contient la liste des shells( spécifiés par leur chemin absolu ) supportés par le système. De ce fait, si un utilisateur tente de se connecter via un shell n'étant pas présent dans ce fichier, la connexion lui sera refusée.

Exemple d'enregistrements de /etc/ftpd/ftphosts:

allow supinfo 10.2.40.1 192.168.0.1 #Possibilité de spécifier plusieurs hôtes sur une ligne pour le même utilisateur. deny supinfo1 10.2.40.2

Exemple d'enregistrements de /etc/ftpd/shells:

/bin/sh /bin/csh /sbin/jsh

7.4.1.2. Utilisation de rlogin, rsh et rcp

Par défaut lorsqu'un utilisateur distant se connecte via rlogin, rsh ou rcp, il s'authentifie grâce au fichier /etc/passwd qui doit contenir son compte. Si il n'y figure pas il ne peut pas accéder à la machine. Cependant il est possible d'autoriser cet utilisateur à se connecter avec l'identité d'un utilisateur local, en configurant les fichiers /etc/hosts.equiv et ~/.rhosts.

Voici les entrées que peuvent contenir ces fichiers :

# /etc/hosts.equiv or ~/.rhosts station1 station2 user1 + Gestion de la sécurité 85

Dans le 1er cas nous renseignons uniquement le nom d'hôte d'une machine (station1), tous les utilisateurs de celle-ci pourront alors se connecter, sans mot de passe sur la machine locale. Si il s'agit du fichier .rhosts d'un utilisateur, alors leur identité sera celle de cet utilisateur local. Si il s'agit du fichier /etc/hosts.equiv alors leur identité pourra être n'importe quel utilisateur local.

Le but du mécanisme est de permettre à des machines et des utilisateurs de confiance d'accéder à une autre machine sans avoir à envoyer leur mot de passe en clair. En effet, les ap- plications rlogin, rsh et rcp fonctionnent en transmettant leurs données en ASCII, donc au mo- ment de l'authentification le mot de passe est envoyé en clair.

L'ordre de lecture des fichiers par le système est le suivant : hosts.equiv puis le fichier .rhosts de l'utilisateur local. Il existe aussi le symbole "+", si celui-ci est placé tout seul sur une ligne alors n'importe quel utilisateur de n'importe quel machine peut se connecter à la machine locale. Attention cette option est très dangereuse ! 7.4.1.3. Le fichier /etc/hosts.equiv

Ce fichier permet donc de définir des machines et des utilisateurs distants de confiance en les autorisant à se connecter sans mot de passe. Attention cependant, un utilisateur root distant ne pourra pas se connecter de cette manière, le fichier /etc/hosts.equiv n'affecte que les utilisateurs non-root. Le fichier /etc/hosts.equiv n'existe pas par défaut il faut le créer. 7.4.1.4. Le fichier ~/.rhost

Tous les utilisateurs y compris root peuvent créer un fichier ~/.rhosts qui va leur per- mettre d'autoriser des utilisateurs ou machines de confiance à se connecter avec leur identité sur la machine locale. Je peux donc par exemple utiliser rlogin pour me connecter en root sur la machine station2 qui me fait confiance. Par défaut le fichier ~/.rhosts n'existe pas.

Même si il s'agit d'utilisateurs de confiance, cette fonctionnalité qui peut paraître intéressante se révèle être une énorme faille de sécurité. En effet, un utilisateur malveillant n'aura qu'à ob- tenir le login d'un autre qui a l'accès à la machine pour pouvoir se connecter sans autre forme de procès. Vous pouvez donc faire en sorte que les connexions via ces fichiers demandent néanmoins le mot de passe. Cette configuration se fait dans le fichier /etc/pam.conf et elle consiste à commenter les lignes qui référencent "pam_rhosts_auth.so.1". 7.4.1.5. Un mot sur Ssh

SSH (Secure SHell) est un moyen de communication client/serveur très utilisé dans le monde Unix. Le principe est de créer un tunnel de communication sûr à travers un réseau qui ne l'est pas (Internet). En plus de la communication sécurisée vers un serveur où il pourra y exécuter des commandes, ssh permet aussi l'utilisation de certains services sécurisés tels quel sftp. Pour gérer les accès à ssh, deux fichiers sont utilisés : /etc/default/login et /etc/ssh/sshd_config (sachant que les options du second surpassent celles du premier). Vous pouvez donc manager le service ssh. 7.5. Restreindre les accès aux données

Nous avons géré tout ce qui concernait l'accès au serveur que ce soit accès local ou distant. Mais pour que les bases de la sécurité soient assurées, il convient aussi de réguler les accès aux données, une fois connecté au serveur. Gestion de la sécurité 86

7.5.1. Gestion des permissions

Les permissions sur un fichier ou un répertoire permettent de définir les accès aux fichiers. Lorsque vous faites un ls -l au sein d'un répertoire, le listing affichera le contenu de ce réper- toire, chaque ligne ayant ce formatage :

-rwxrwxr-x 1 supinfo staff 11720 Nov 2 8:45 ess_solaris

Comme vous pouvez le constater, les lettres r,w et x sont les permissions sur le fichier. Ces lettres désignent respectivement la lecture, l'écriture et l'exécution. De plus, ces permissions sont réparties en 3 groupes : le premier s'appliquant à l'utilisateur, le second au groupe et enfin le troisième aux autres. Pour résumer, les permissions sous Solaris sont exactement les mêmes que sous un système Linux.

Concernant le type de fichier, là encore, la gestion est la même que sous Linux : le premier di- git devant les permissions désigne le type de fichier. Ces types sont sensiblement les même que sous Linux (d pour un dossier, l lien symbolique, - pour un fichier régulier...).

Se rajoutent à ces 3 types de droits, des permissions spéciales, elles aussi au nombre de 3: le bit setuid, le bit setgid et le sticky bit.

• setuid: Avec ce bit positionné sur un fichier, le fichier sera automatiquement lancé avec les droits du possesseur de ce fichier. S'il est positionné, un "s" apparaît à la place du "x" de la partie user lors d'un ls -l.

• setgid: fonctionne de façon identique au bit setuid, mais concerne cette fois-ce le groupe. S'il est positionné, un "s" apparaît à la place du "x" de la partie groupe lors d'un ls -l.

• sticky bit: Lorsqu'il est positionné sur un répertoire, seul le possesseur d'un fichier, du ré- pertoire ou le super utilisateur peuvent effacer un fichier appartenant au répertoire. Si il est positionné sur le répertoire, un "t" apparaît à la place du "x" pour la section "autres" lors d'un ls -l.

Maintenant que ce rappel sur les permissions est effectué, il est intéressant de savoir les confi- gurer. Pour cela, la commande Unix chmod est encore utilisée. Pour rappel cette commande peut être utilisée avec les symboles +/-/= pour respectivement ajouter, supprimer ou affecter un droit. Ce symbole peut-être précédé d'une lettre : "u" pour user, "g" pour groupe et "o" pour autres (others). Enfin les permissions sont désignées par les lettres r,w et x (évoquées précé- demment).

# chmod [-r] [u/g/o][+/-/=][r/w/x] fichier_ou_répertoire #à noter que nous pouvons combiner ces lettres pour affecter plusieurs droits en une seule commande

Néanmoins, la méthode la plus utilisée lors d'un chmod reste la méthode numérique. En utili- sant cette syntaxe, les droits sont représentés par des chiffres : 4 pour la lecture, 2 pour l'écriture et 1 pour l'exécution. Ces digits peuvent être additionnés afin de combiner les droits. Dans cette méthode, 4 digits sont utilisés : le premier concerne les permissions spéciales (4:setuid,2:setgid,1:stickybit), le second l'utilisateur, le troisième le groupe et enfin le qua- trième les autres. Voici la syntaxe avec la méthode numérique:

# chmod [-r] [W][X][Y][Z] fichier_ou_répertoire #W,X,Y ou Z sont des nombres allant de 0 à 7

7.5.2. Changer l'utilisateur ou le groupe proprié- Gestion de la sécurité 87 taire.

Parfois une simple gestion des permissions ne suffit pas et il arrive qu'un utilisateur ait réelle- ment besoin d'un fichier appartenant à un autre utilisateur.

Sous Solaris 10, il est possible, comme sur tout système Unix, de changer le propriétaire ou le groupe propriétaire d'un fichier. Deux commandes entrent en jeu pour réaliser ces tâches : chown et chgrp qui modifient respectivement le propriétaire (possibilité également de chan- ger le groupe en même temps) et le groupe. La syntaxe est identique aux systèmes Linux:

# chown [options] user[:groupe] fichier # chgrp [options] groupe fichier

Les options pour chown et chrgp sont les mêmes. On retrouve donc entre autres le -R, pour le parcours récursif lorsque l'on travaille avec des répertoires, le -f pour désactiver l'affichage des erreurs( silent mode ) ou encore le -h pour ne changer que le possesseur/groupe proprié- taire du lien et non du fichier lorsque l'on travaille sur un lien symbolique. 88

Chapitre 8. Gestion des processus

Table des matières

8.1. Introduction ...... 88 8.1.1. Objectifs du module ...... 88 8.2. Voir les processus système ...... 89 8.2.1. Introduction ...... 89 8.2.2. Utiliser la commande ps ...... 89 8.2.3. Utiliser la commande pgrep ...... 91 8.2.4. Utiliser la commande prstat ...... 93 8.2.5. Contrôle des processus ...... 95 8.2.6. Utiliser le Gestionnaire de processus CDE ...... 95 8.2.7. Utiliser l'outil de gestion de processus de la Console de Management de Solaris ...... 97 8.3. Arrêter des processus figés ...... 98 8.3.1. Introduction ...... 98 8.3.2. Utilisation des commandes kill et pkill ...... 99 8.3.3. Réaliser une connection à distance ...... 100 8.4. Suspendre et terminer des processus avec SMC ...... 101 8.4.1. Introduction ...... 101 8.5. Plannifier l'exécution automatique d'une commande ...... 103 8.5.1. Introduction ...... 103 8.5.2. Utilisation de la commande at ...... 103 8.5.3. Contrôler l'accés à la commande at ...... 104 8.6. Planifier l'exécution récurrente d'une commande ...... 105 8.6.1. Introduction ...... 105 8.6.2. Introduction à la syntaxe du fichier crontab ...... 105 8.6.3. Utiliser la commande crontab ...... 106 8.6.4. Contrôler l'accés à la commande crontab ...... 107 8.6.5. Utiliser la Console de Planificateur de tâche de Solaris ...... 109

8.1. Introduction 8.1.1. Objectifs du module

Ce module décrit comment utiliser le Gestionnaire de processus CDE, la commande kill et la commande at. De plus, ce module montre comment utiliser la commande cron et le fichier crontab afin d'éxécuter automatiquement et périodiquement des commandes.

Une fois ce module terminé, vous serez capable de :

• Voir les processus système

• Arrêter les processus figés

• Planifier l'exécution automatique d'une commande

• Planifier l'exécution récurrente d'une commande Gestion des processus 89

8.2. Voir les processus système 8.2.1. Introduction

Un processus est une instance d'un programme s'éxécutant sur le système. A tous processus est assigné un numéro unique d'identification (PID), utilisé par le kernel pour retrouver et gé- rer le processus. Les PIDs sont utilisés par le compte root et les utilisateurs authentifiés pour identifier et contrôler leurs processus. 8.2.2. Utiliser la commande ps

La commande ps permet de lister les processus en cours d'exécution sur votre machine. Sa syntaxe générale est la suivante :

ps []

Si aucune option n'est spécifiée, ps affiche uniquement les processus ayant les mêmes euid ( Effective User ID ) et terminal de contrôle( tty ) que l'utilisateur ayant entré la commande.

Voici la liste des options les plus fréquement utilisées :

Tableau 8.1. Options de ps

Commande Description -a Afficher les processus les plus souvent sollicités. Les processus n'ayant pas de terminal de contrôle ne se- ront pas affichés -A Afficher absolument tous les processus en cours d'execution sur la machine. -e Idem -A -f Afficher des informations supplémentaires sur les processus -l Générer un listing long -P Afficher uniquement les informations concernant les processus dont le pid est spécifié dans la liste de pro- cessus séparés par des espaces ou des virgules. -u Afficher uniquement les informations concernant les processus dont l'euid ou le login correspondant est spécifié dans la liste séparés par des es- paces ou des virgules. -U Afficher uniquement les informations concernant les processus dont l'uid ou le login correspondant est spé- cifié dans la liste séparés par des espaces ou des virgules. Gestion des processus 90

Note

Gardez toujours à l'esprit que la commande ps affiche un instantané de l'état des processus au moment de son exécution. Ainsi, les valeurs affichées peuvent avoir changé à l'issue de l'execution de ps.

Avertissement

Le symbole affiché dans la colonne d'état du processus (S) est bien O pour un processus en cours d'execution. Le symbole R correspond quant à lui à l'état "prêt" et qu'il se situe dans la queue d'exécution ce qui signifie qu'il peut être élu par l'ordonnanceur à tout moment. Cet état est appelé runnable dans la termino- logie Solaris.

Voici la description des différentes colonnes fournie par la sortie de ps ainsi quel les options associées permettant de les rendre visibles :

Tableau 8.2. Sortie de la commande ps, colonnes et options associées :

Colonne Option requise Description ADDR -l L'adresse mémoire du processus C -f ou -l L'utilisation du processeur pour l'ordonancement ( non affiché si l'option -c est spécifiée) CLS -c La catégorie d'ordonancement au- quel le processus appartient (e.g system ou time sharing) CMD Aucune La ligne de commande entrée lors du lancement du processus NI -l La valeur de "nice" (gentillesse) du processus contribuant au calcul de sa priorité au sein de l'ordonanceur. (Plus la valeur est basse, plus le processus est prioritaire ) PID Aucune L'identifiant du processus PPID -f ou -l L'identifiant du père du processus PRI -l Priorité au sein de l'ordonanceur ( Plus la valeur est haute, plus le processus est prioritaire ) S -l Etat du processus STIME -f L'heure de lancement du processus en heures, minutes et secondes SZ -l Taille du processus en mémoire ( nombre de pages occupées dans la mémoire virtuelle ) Time Aucune Nombre total de temps CPU utilisé par le processus depuis son lance- Gestion des processus 91

Colonne Option requise Description ment. TTY Aucune Le terminal de contrôle du proces- sus ( ou de son père )

Les deux colonnes les plus importantes dans la sortie fournie par ps sont le PID ( Process identifier ) ainsi que la colonne S qui représente l'état du processus. Un processus peut prendre les états suivants :

Tableau 8.3. Etats d'un processus

Symbole de la colonne S Etat du processus Description O Running Le processus est en cours d'exécution R Runnable Le processus est prêt et placé dans la queue d'ordonancement S Sleeping Le processus est en sommeil. Il at- tend que le système lui signale un événement (Arrivée de paquets ré- seau, disponibilité d'une ressource, appui sur une touche...) T Traced Le processus a été arrêté, soit par un signal soit parce qu'un debug- geur s'y est attaché. Z Zombie Le processus est terminé mais son père n'a pas lu sa valeur de retour. Il ne peut donc pas etre retiré de la table des processus par le système. Il s'agit alors d'un processus mort qui ne peut être nettoyé.( Impos- sible de libérer les ressources al- louées )

Bien qu'il soit possible de filtrer la sortie de ps soit via grep soit en utilisant les options de sé- lection comme -P ou -U, il peut être plus aisé de faire appel à la commande pgrep. 8.2.3. Utiliser la commande pgrep

Bien qu'il soit possible de filtrer la sortie de ps via la commande grep, il peut rapidement s'averrer extrêmement fastidieux d'appliquer un filtre plus complexe qu'un simple nom d'utilisateur ou d'application. Pour de telles situations, Solaris 10 fourni la commande pgrep.

Sa syntaxe générale est la suivante :

pgrep [] []

Par exemple, la commande suivante affichera tous les processus dont le nom de groupe réel est soit poli, soit tics:

pgrep -G poli,tics Gestion des processus 92

Vous pouvez également spécifier plusieurs critères qui seront combinés via un ET logique. Par exemple, la commande suivante : pgrep -G poli,tics -U gbush,jkerry

Cette commande sera interpretée de la manière suivante :

( le nom de groupe est poli OU tics ) ET ( le login est gbush OU jkerry )

Voici les options les plus courantes :

Tableau 8.4. Options de pgrep

Option Description -d Spécifie le délimiteur utilisé pour séparer les PID dans la sortie. Par default \n est utilisé -f L'expression régulière sera appliquée à la ligne de commande complète du processus, qui peut être obte- nue dans le champ pr_psargs du fichier / proc/nnnnn/psinfo. -g Sélectionner seulement les processus dont l'egid est spécifié dans la liste pgrpList. Si le groupe 0 est spé- cifié, il est interpreté comme faisant référence à l'egid du processus de pgrep ou de pkill -G Sélectionner seulement les processus dont le gid est spécifié dans la liste pgrpList. -l Utiliser un format long. -n Sélectionner seulement le processus le plus récent( via l'heure de lancement ) qui correspond au critère donné. Ne peut être utilisé avec l'option -o. -o Sélectionner seulement le processus le plus ancien( via l'heure de lancement ) qui correspond au critère donné. Ne peut être utilisé avec l'option -o. -P Sélectionner seulement les processus dont le pid du père est cité dans la liste ppidList -s Séléctionner seulement les processus dont l'id de ses- sion est cité dans la liste sidList. Si le groupe 0 est spécifié, il est interpreté comme faisant référence au sid du processus de pgrep ou de pkill. -t Sélectionner seulement les processus dont le terminal de contrôle est cité dans la liste -T Séléctionner seulement les processus ayant un task ID cité dans la liste . Si l'ID 0 est inclus dans la liste, il est interprété comme faisant référence au task ID de pgrep ou pkill -u Sélectionner uniquement les processus dont l'euid est cité dans la liste -U Sélectionner uniquement les processus dont l'uid est cité dans la liste -v Inverse le fonctionnement du filtre: Exclu de l'affichage les processus qui correspondent à Gestion des processus 93

Option Description l'expression. -x Sélectionner seulement les processus dont les argu- ments ou le nom de l'éxécutable correspondent exac- tement au motif.

Note

Gardez bien à l'esprit que comme partout ailleurs, l'user ID peut être soit l'user ID numérique, soit le login. De même pour les group IDs

8.2.4. Utiliser la commande prstat

La commande prstat recueille et affiche les informations concernant les processus actifs du système.

Cette commande permet d'afficher les informations par processus, par UID d'utilisateur, par CPU IDs, ou par utilisation processeur. Par défaut, la commande prstat affiche les informa- tions sur tous les processus classés par utilisation du processeur. Pour utiliser prstat, utiliser la commande :

# prstat PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP 1641 root 4864K 4520K cpu0 59 0 0:00:00 0.5% prstat/1 1635 root 1504K 1168K sleep 59 0 0:00:00 0.3% ksh/1 9 root 6096K 4072K sleep 59 0 0:00:29 0.1% svc.configd/11 566 root 82M 30M sleep 29 10 0:00:36 0.1% java/14 1633 root 2232K 1520K sleep 59 0 0:00:00 0.1% in.rlogind/1 531 root 8200K 2928K sleep 59 0 0:00:12 0.1% dtgreet/1 474 root 21M 7168K sleep 59 0 0:00:11 0.1% Xsun/1 236 root 4768K 2184K sleep 59 0 0:00:03 0.0% inetd/4 86 root 3504K 1848K sleep 59 0 0:00:01 0.0% nscd/24 7 root 5544K 1744K sleep 59 0 0:00:06 0.0% svc.startd/12 154 root 2280K 824K sleep 59 0 0:00:01 0.0% in.routed/1 509 root 6888K 2592K sleep 59 0 0:00:02 0.0% httpd/1 240 root 5888K 1256K sleep 59 0 0:00:01 0.0% sendmail/1 145 root 2944K 816K sleep 59 0 0:00:01 0.0% httpd/1 347 daemon 2608K 776K sleep 59 0 0:00:00 0.0% nfsmapid/3 206 root 1288K 600K sleep 59 0 0:00:00 0.0% utmpd/1 344 daemon 2272K 1248K sleep 60 -20 0:00:00 0.0% nfsd/2 241 smmsp 5792K 960K sleep 59 0 0:00:00 0.0% sendmail/1 107 root 2584K 784K sleep 59 0 0:00:00 0.0% syseventd/14 123 root 3064K 880K sleep 59 0 0:00:00 0.0% picld/4 146 lp 2976K 448K sleep 59 0 0:00:00 0.0% httpd/1 Total: 53 processes, 171 lwps, load averages: 0.02, 0.04, 0.07

Pour quitter la commande prstat, tapper q.

Le tableau suivant donne la signification de chaque colonne du résultat de la commande prs- tat. Gestion des processus 94

Tableau 8.5. Entêtes des colonnes du rapport de prstat

Entête de colonne Description PID Le PID du processus USERNAME Le login ou l'UID du propriétaire du processus SIZE Taille de la mémoire virtuelle utilisée par le processus RSS Le Resident Set Size (portion de la mémoire résidente en mémoire) en kiloctets, megaoctets ou gigaoctets STATE L'état du processus :

cpu - le processus s'exécute en CPU

sleep - le processus attend la fin d'un événement

run - le processus est dans la queue d'exécution

zombie - le processus s'est achevé sans être attendu par le processus père

stop - le processus est stoppé PRI La priorité du processus NICE La valeur utilisée dans la gestion des priorités TIME Le temps cumulé d'exécution du processus CPU Le pourcentage récent du temps d'utilisation du CPU par le processus PROCESS/NLWP Le nom du processus/le nombre de processus léger (LWP) dans le processus

Note

Le noyau et beaucoup d'applications sont maintenant multi threads. Un thread est une suite logique d'instructions écrites pour accomplir une tâche particulière. Chaque thread est indépendament programmé pour s'éxécuter dans un LWP, chaque fonction est un CPU virtuel. Les LWP sont à leur tour rattachés à des threads kernel s'éxécutant dans le CPU réel.

Note

Utiliser la commande priocntl(1) pour assigner et gérer les priorités des proces- sus. La commande nice(1) est à utiliser pour la rétrocompatibilité avec les ver- sions précédentes de Solaris. La commande priocntl offre plus de flexibilité dans la gestion des processus.

Le tableau suivant montre les options pour la commande prstat. Gestion des processus 95

Tableau 8.6. Options de la commande prstat

Option Description -a Affiche des rapports séparés sur les processus et les utilisateurs en même temps -c Affiche en continu les nouveaux rapports en dessous des précédents -n nproc Limite le nombre de lignes à afficher -p pidlist Affiche un rapport seulement sur les processus ayant un PID dans la liste donnée -s clé Ordonne les lignes affichées par clé dans un ordre descendant. Les cinqs clés possibles sont: cpu, time, size, rss, et pri. Il n'est possible d'utiliser qu'une seule clé à la fois -S clé Ordonne les lignes affichées par clé dans un ordre as- cendant -t Affiche un resumé de l'utilisation totale pour chaque utilisateur -u euidlist Affiche seulement les processus ayant un identifiant d'utilisateur effectif (euid) dans la liste donnée -U uidlist Affiche seulement les processus ayant un UID dans la liste donnée

8.2.5. Contrôle des processus

Il est parfois nécessaire de stopper l'exécution de certains processus trop gourmands en mé- moire ou faisant une utilisation trop intensive des entrées-sorties. L'exécution des processus est contrôlée par deux commandes :

pstop

Qui stoppe l'exécution du processus ayant le PID spécifié ainsi que son pendant.

prun

Qui permet de reprendre l'exécution d'un processus arrêté par pstop. 8.2.6. Utiliser le Gestionnaire de processus CDE

Le CDE (Common Desktop Environment) de Solaris fournit un gestionnaire de processus per- mettant de monitorer et de contrôler les processus actifs du système.

Pour démarrer le gestionnaire de processus, cliquer sur Find Process control du sous-panneau Tools du panneau principal.

Figure 8.1. Le menu Tools Gestion des processus 96

Vous pouvez aussi démarrer le gestionnaire de processus à l'aide de la ligne de commande sui- vante :

# /usr/dt/bin/sdtprocess &

Figure 8.2. Le gestionnaire de processus Gestion des processus 97

Le gestionnaire de processus peut classer les processus par ordre alphabétique (nom) ou par ordre numérique (ID), selon la colonne selectionnée.

Il est possible de lancer une recherche, en tapant du texte dans le champ Find.

Pour arrêter un processus, vous pouvez soit le sélectionner et appuyer sur Control-C, soit se- lectionner l'option Kill depuis le menu Process, ou alors utiliser l'option kill depuis les op- tions disponibles en faisant un clic-droit avec la souris. 8.2.7. Utiliser l'outil de gestion de processus de la Console de Management de Solaris

La console de Management de Solaris fournit un utilitaire pour monitorer et gérer les proces- sus système. Pour ouvrir cet outil depuis la console de management, cliquer sur This compu- ter, puis sur System status, et enfin sur Process.

Figure 8.3. Monitoring des processus système avec Process Gestion des processus 98

A partir de ce gestionnaire de processus, vous pouvez :

• Suspendre un processus. Pour cela, cliquer sur le nom du processus, et choisir Suspend de- puis le menu Action.

• Reprendre l'exécution d'un processus suspendu. Pour faire cela, cliquer sur le nom du pro- cessus, et choisir Resume depuis le menu Action.

• Killer (Delete) un processus. Pour cela, cliquer sur le nom du processus, et choisir Delete depuis le menu Edit.

• Afficher plus d'informations sur un processus. Pour cela, cliquer sur le nom du processus, et choisir Properties depuis le menu Action.

• Rafraîchir l'affichage de la fenêtre principale. Pour cela, choisir Refresh depuis le menu View.

8.3. Arrêter des processus figés 8.3.1. Introduction

On utilise habituellement la commande kill ou la commande pkill pour envoyer un signal d'arrêt à un ou plusieurs processus. Ces mêmes commandes pourraient être utilisées pour arrê- ter un processus figé. Gestion des processus 99

8.3.2. Utilisation des commandes kill et pkill

Pour arrêter un ou plusieurs processus, on utilise habituellement les commandes kill ou pkill.

La syntaxe de la commande kill est la suivante :

kill -signal PID

Pour afficher tous les signaux disponibles pour la commande kill :

kill -l

La syntaxe de la commande pkill est la suivante :

pkill -signal Process

Avant de pouvoir arrêter un processus via kill, il faut connaitre son nom ou son PID. Il faut donc dans ce cas utiliser ps afin de recupérer le PID du processus. Si vous aviez dans l'idée d'utiliser pgrep afin de connaître le PID du processus puis d'utiliser la commande kill, sachez que la commande pkill posséde les deux fonctionalités !

Par example, la commande suivante trouvera et tuera tous les processus de gbush et jkerry.

# pkill -9 -U gbush,jkerry

Les exemples suivants utilisent les commandes ps et pkill pour identifier et arrêter les proces- sus sendmail.

# ps -e | grep sendmail 241 ? 0:00 sendmail 240 ? 0:02 sendmail # kill 241

Pour arrêter plus d'un processus en même temps, utiliser la syntaxe suivante :

# kill -signal PID PID PID # pkill -signal process process

Vous pouvez utiliser la commande kill sans argument afin d'envoyer au processus un signal par défaut, le signal 15. Ce signal demande au processus de s'arrêter.

Le tableau suivant montre quelques signaux et leurs noms.

Tableau 8.7. Numéros des signaux et les noms associés Gestion des processus 100

Numéro du signal Nom du signal Evénement Action par défaut 1 SIGHUP Hangup Exit 2 SIGINT Interrupt Exit 9 SIGKILL Kill Exit 15 SIGTERM Terminate Exit

• 1, SIGHUP - Un signal hangup oblige une ligne téléphonique ou une connection à un ter- minal à être coupé. Pour certains daemons, comme inetd et in.named, un signal HANGUP oblige le daemon à relire son fichier de configuration.

• 2, SIGINT - Un signal d'interruption envoyé depuis le clavier, généralement depuis la combinaison de touche Control-C.

• 9, SIGKILL - Le signal pour killer un processus. Le processus ne peut ignorer ce signal.

• 15, SIGTERM - Le signal pour arrêter un processus proprement, Certains processus ignorent ce signal.

Une liste complète des signaux que peut envoyer la commande kill peut être trouvé en execu- tant la commande kill -l, ou en se référant aux pages man pour les signaux.

# man -s3head signal

Certains processus peuvent ignorer le signal 15. Les processus ne repondant pas à un signal 15 peuvent être arrêtés de force en utilisant un signal 9, grâce à la commande kill ou pkill. Utili- ser la syntaxe suivante :

# kill -9 PID # pkill -9 process

Important

Utiliser la commande kill -9 ou pkill -9 en dernier ressort pour terminer un pro- cessus. Utiliser le signal -9 sur un processus contrôlant une application de base de donnée ou un programme mettant à jour des fichiers, peut être désastreux. Le processus est immediatement arrêté sans possibilité de faire un shutdown.

8.3.3. Réaliser une connection à distance

Lorsqu'une station de travail ne répond plus, ni au clavier ni à la souris, c'est que le CDE est surement figé. Dans ce cas, vous pouvez vous connecter à distance à votre station de travail en utilisant la commande rlogin ou la commande telnet, depuis un autre système. Si vous l'avez installé vous pouvez aussi utiliser ssh pour vous connecter de façon sécurisée.

Après vous être connecté à distance sur votre système, utiliser la commande pkill pour arrêter une session corrompue sur la station de travail

Dans les exemples suivants, la commande rlogin est utilisé pour se logguer sur sys-02, sur le- Gestion des processus 101

quel on fera un pkill ou kill.

# rlogin sys-02 Password: Last login: Sun Oct 24 13:44:51 from sys-01 Sun Microsystems Inc. SunOS 5.10 s10_68 Sep. 20, 2004 # pkill -9 Xsun

ou

# ps -e | grep Xsun 442 ? 0:01 Xsun # kill -9 442

8.4. Suspendre et terminer des processus avec SMC 8.4.1. Introduction

L'utilitaire graphique SMC (Solaris Management Console) permet à un utilisateur autorisé de suspendre ou de terminer des processus.

Pour suspendre un processus, il faut d'abord sélectionner celui-ci depuis la liste. Une fois se- lectionné, vous devez cliquer sur Suspend depuis le menu Action.

Figure 8.4. Suspendre un processus avec la SMC

Un processus suspendu restera dans cet état jusqu'à ce qu'il soit résumé en utilisant l'action Resume du menu Action.

La fenêtre de gestion de processus du SMC possède un mécanisme de filtrage, permettant d'afficher uniquement les processus dont les critères correspondent à ceux du filtre appliqué. Cela est particulièrement utile quand on a besoin d'arrêter des processus d'un utilisateur en particulier. Gestion des processus 102

Dans les exemples, le filtre a été appliqué pour n'afficher que les processus appartenant à l'utilisateur jeff.

Les processus peuvent aussi être arrêtés en utilisant l'icône Trash Can (l'icône de la corbeille). Le processus doit être séléctionné dans la liste avant d'être terminé, comme dans l'exemple.

Figure 8.5. Arrêter un processus avec Trash Can

En utilisant l'icône Trash Can, vous aurez une demande de confirmation.

Figure 8.6. Confirmation de la suppression

Cliquer sur Delete pour confirmer la suppression du processus. Gestion des processus 103

8.5. Plannifier l'exécution automatique d'une commande 8.5.1. Introduction

La commande at est utilisée pour éxécuter une tâche automatiquement, une seule fois, à un moment donné. 8.5.2. Utilisation de la commande at

La commande at s'utilise comme suit :

at -m -q queuename time date at -r job at -l

Voici un tableau des commandes utilisables pour dire à at comment éxécuter une tâche.

Tableau 8.8. Options de la commande at

Option Description -m Envoie un mail à l'utilisateur une fois que la tâche est terminée. -r job Enlève une tâche planifiée de la file d'attente d'exécution. -q queuename Spécifie la file d'attente à utiliser time Spécifie une heure pour l'exécution de la commande. -l Affiche toutes les tâches planifiées pour l'utilisateur. date Spécifie une date pour l'exécution de la commande, au format nom du mois, suivi du numéro du jour ou d'un jour de la semaine.

Par exemple, pour éxécuter une tâche à 21h00 qui recherche et vérifie le type des fichiers core du dossier /export/home, exécuter les commandes suivantes:

# at 9:00 pm at> find /export/home -name core -exec file {} \; >> /var/tmp/corelog at> ( la combinaison de touches CTRL-D envoie le caractère EOT ) commands will be executed using /sbin/sh job 1098648000.a at Mon Oct 25 21:00:00 2004

Pour afficher les informations concernant les heures d'exécution des tâches, utiliser la com- mande suivante :

# at -l 1098648000.a 1098648000.a Mon Oct 25 21:00:00 2004 Gestion des processus 104

Pour afficher par ordre chronologique d'exécution les tâches en attente pour exécution à une heure spécifique, exécuter la commande suivante:

# atq Rank Execution Date Owner Job Queue Job Name 1st Oct 25, 2004 21:00 root 1098648000.a a stdin

Pour voir toutes les tâches actuellement planifiées dans la file d'attente, utiliser la commande suivante :

# ls -l /var/spool/cron/atjobs total 4 -r-Sr--r-- 1 root root 1044 Oct 25 13:48 1098648000.a

La commande at peut aussi être utilisée pour enlever une tâche de la file d'attente.

Par exemple, pour enlever la tâche 1098648000.a de la file d'attente, éxécuter la commande suivante :

# at -r 1098648000.a # atq Rank Execution Date Owner Job Queue Job Name

8.5.3. Contrôler l'accés à la commande at

En tant qu'utilisateur root, vous pouvez contrôler l'accès à la commande at grâce aux fichiers at.deny et at.allow 8.5.3.1. Le fichier /etc/cron.d/at.deny

Par défaut, ce fichier existe déjà sur le système Solaris. Ce fichier identifie les utilisateurs n'ayant pas les droits pour utiliser la commande at. La syntaxe est un utilisateur par ligne. Par défaut ce fichier contient :

daemon bin nuucp listen nobody noaccess

Un utilisateur n'ayant pas accès à la commande at recevra le message suivant lors de l'utilisation de la commande :

at: you are not authorized to use at. Sorry.

Si uniquement le fichier /etc/cron.d/at.deny existe mais est vide, tous les utilisateurs loggués auront accés à la commande at Gestion des processus 105

8.5.3.2. Le fichier /etc/cron.d/at.allow

Le fichier /etc/cron.d/at.allow n'existe pas par défaut. Donc tous les utilisateurs (excepté ceux listés dans le fichier /etc/cron.d/at.deny) peuvent créer des tâches. En créant le fichier /etc/cron.d/at.allow, vous créez une liste dont seuls les utilisateurs précisés seront autorisés à utiliser la commande at.

Le fichier /etc/cron.d/at.allow est composé de noms d'utilisateurs, un par ligne.

L'interaction entre les fichiers at.allow et at.deny respecte les règles suivantes :

• Si le fichier at.allow existe, seuls les utilisateurs listés dans ce fichier peuvent utiliser la commande at.

• Si le fichier at.allow n'existe pas, tous les utilisateurs, exceptés ceux listés dans at.deny, peuvent executer la commande at.

• Si aucun fichier n'existe, seul l'utilisateur root peut utiliser la commande at.

• Si un utilisateur est listé dans les deux fichiers, l'utilisateur n'est pas autorisé.

8.6. Planifier l'exécution récurrente d'une commande 8.6.1. Introduction

Vous pouvez utiliser la facilité de cron pour planifier l'exécution de commandes que vous uti- lisez quotidiennement. Des utilisateurs peuvent soumettre une commande à cron en modifiant leurs fichiers crontab.

Tous les fichiers crontab se trouvent dans le dossier /var/spool/cron/crontabs et sont enregistrés sous le nom de l'utilisateur ayant créé la tâche.

Le daemon cron est chargé de planifier et d'éxécuter ces tâches.

Note

Le daemon cron se lance au démarrage du système et tourne continuellement en arrière plan.

8.6.2. Introduction à la syntaxe du fichier crontab

Dans un fichier crontab on retrouve des lignes de six champs chacunes. Ces champs sont séparés par des espaces ou des tabulations. Les cinq premiers champs contiennent la date, l'heure de la commande à éxécuter. Le dernier champ est le chemin complet vers la com- mande. Gestion des processus 106

Note

Si le champ de la commande contient le caractère %, alors tous les caractères suivants sont passés à la commande sur l'entrée standard.

Ces cinq premiers champs sont séparés par des espaces et indiquent quand la commande doit être éxécutée.

Ces cinq champs respectent les règles de syntaxe décrites dans le tableau suivant :

Tableau 8.9. Règles des champs du fichier crontab

Value Règle Exemple n Utilise la valeur n du champ La valeur peut être un 3 ou un 10 n,p,q Utilise les valeurs n,p ou q Toutes les 10 minutes seraient re- présentées par 0,10,20,30,40,50 n-p Utilise les valeurs comprises entre Les heures entre 1:00 am et 4:00 n et p inclut am seraient représentées par 1-4 * Utilise toutes les valeurs possibles Pour tous les mois, il suffit de mettre * dans le champs correspon- dant au mois

8.6.3. Utiliser la commande crontab

La commande crontab permet à l'utilisateur de voir, éditer, ou supprimer un fichier crontab. 8.6.3.1. Voir un fichier crontab

Pour voir le contenu du fichier crontab de l'utilisateur root, éxécuter la commande crontab -l en tant qu'utilisateur root.

# crontab -l #ident "@(#)root 1.21 04/03/23 SMI" # # The root crontab should be used to perform accounting data collection. # # 10 3 * * * /usr/sbin/logadm 15 3 * * 0 /usr/lib/fs/nfs/nfsfind 30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean #10 3 * * * /usr/lib/krb5/kprop_script ___slave_kdcs___

La même commande permet aux utilisateurs de voir leur fichier crontab.

En tant qu'utilisateur root, vous pouvez voir le contenu du fichier crontab de n'importe quel utilisateur, grâce à la commande :

# crontab -l username Gestion des processus 107

8.6.3.2. Editer un fichier crontab

Important

Si vous utilisez la commande crontab dans une console, sans une des options - l, -e, -r, utiliser la combinaison de touches Control-C pour quitter. N'utiliser pas Control-D, cette action quitte crontab en remplaçant tous les fichiers crontab par un fichier vide.

Pour créer ou éditer un fichier crontab, suivez ces étapes :

1. Vérifier que la variable EDITOR correspond bien à l'éditeur que vous voulez utiliser. Ce- la indique à l'utilitaire cron quel éditeur utiliser pour ouvrir le fichier.

# EDITOR=vi # export EDITOR

2. Exécuter la commande crontab suivante pour ouvrir votre fichier crontab et ajouter une entrée.

# crontab -e 30 17 * * 5 /usr/bin/banner "Time to go!" > /dev/console :wq

Ceci aura pour effet de créer un fichier( ou de modifier ) dans / var/spool/cron/crontabs portant votre nom de login.

Note

Si les utilisateurs ne redirigent pas la sortie standard et la sortie d'erreur de leurs commandes dans le fichier crontab, toutes sorties seront automati- quement envoyées par mail à l'utilisateur.

8.6.3.3. Effacer un fichier crontab.

La façon adéquate pour effacer un fichier crontab est d'utiliser la commande :

# crontab -r username

Habituellement, les utilisateurs ne peuvent effacer que leurs propres fichiers crontab. L'utilisateur root peut effacer les fichiers crontab de n'importe quel utilisateur. 8.6.4. Contrôler l'accés à la commande crontab Gestion des processus 108

Vous pouvez contrôler l'accès à la commande crontab grâce à deux fichiers dans le dossier / etc/cron.d : le fichier cron.deny et le fichier cron.allow.

Ces fichiers permettent seulement aux utilisateurs spécifiés d'effectuer des tâches crontab, comme créer, éditer, afficher et effacer leur propre fichier crontab 8.6.4.1. Le fichier /etc/cron.d/cron.deny

Par défaut, ce fichier existe déjà sur le système Solaris. Ce fichier identifie les utilisateurs n'ayant pas les droits pour utiliser cron. La syntaxe est un utilisateur par ligne.

Par défaut ce fichier contient :

daemon bin nuucp listen nobody noaccess

8.6.4.2. Le fichier /etc/cron.d/cron.allow.

Le fichier /etc/cron.d/cron.allow n'existe pas par défaut. Donc tous les utilisateurs (sauf ceux listés dans le fichier cron.deny peuvent accéder à leurs fichiers crontab. En créant le fichier cron.allow, vous créez une liste dont seule les utilisateurs seront autorisés à utiliser les commandes crontab.

Le fichier cron.allow est composé de noms d'utilisateurs, un par ligne.

L'interaction entre les fichiers cron.allow et cron.deny respecte les règles suivantes :

• Si cron.allow existe, seuls les utilisateurs listés dans ce fichier peuvent créer, éditer, afficher et effacer des fichiers crontab.

• Si cron.allow n'existe pas, tous les utilisateurs, exceptés ceux listés dans cron.deny, peuvent créer, éditer, afficher et effacer des fichiers crontab.

• Si aucun fichier n'existe, seul l'utilisateur root peut utiliser les commandes crontab.

• Si un utilisateur est listé dans les deux fichiers, l'utilisateur n'est pas autorisé à utiliser les commandes crontab.

Tableau 8.10. Les utilisateurs et les fichiers .deny/.allow

cron.allow existe ? cron.deny existe ? Qui peut utiliser crontab ? Oui Oui Les utilisateurs listés uniquement dans cron.allow ainsi que le super- utilisateur( root ). Oui Non Les utilisateurs listés dans cron.allow ainsi que le super- utilisateur( root ). Non Oui Tous les utilisateurs sauf ceux lis- tés dans cron.deny Gestion des processus 109

cron.allow existe ? cron.deny existe ? Qui peut utiliser crontab ? Non Non Seulement le super-utilisateur

8.6.5. Utiliser la Console de Planificateur de tâche de Solaris

La console SMC (Solaris Management Console) contient un utilitaire de planification de tâches permettant de créer et planifier des tâches sur le système. Les utilisateurs peuvent gérer des tâches si les conditions suivantes existent :

• Leur nom d'utilisateur apparaît dans le fichier /etc/cron.d/cron.allow

• Leur nom d'utilisateur n'apparaît pas dans le fichier /etc/cron.d/cron.deny

• Les fichiers /etc/cron.d/cron.allow et /etc/cron.d/cron.deny n'existent pas, et vous êtes l'utilisateur root.

Figure 8.7. Vue de la SMC

Vous pouvez utiliser le planificateur de tâches pour :

• Voir et modifier les propriétés d'une tâche :

Sélectionner le nom de la tâche, et sélectionner Properties dans le menu Action.

• Supprimer une tâche :

Sélectionner le nom de la tâche, et sélectionner Delete dans le menu Edit. L'utilisateur root Gestion des processus 110

peut supprimer toutes les tâches. Les utilisateurs peuvent seulement voir et supprimer leurs tâches.

• Ajouter une tâche planifiée :

Sélectionner Add Scheduled Job dans le menu Action.

• Activer ou désactiver le log des tâches, et spécifier les chemins de recherche :

Sélectionner Scheduled Job Policies dans le menu Action. 111

Chapitre 9. Gestion des impressions

Table des matières

9.1. Objectifs de ce module ...... 111 9.2. Fonctionnement général de l'impression sous Solaris 10 ...... 111 9.3. Gestion des périphériques d'impression ...... 113 9.3.1. Vérification de l'état des périphériques d'impression ...... 113 9.3.2. Démarrer et arrêter le gestionnaire d'impression ...... 114 9.3.3. Lister et annuler les tâches d'impression ...... 115 9.4. Configuration du service d'impression ...... 115 9.4.1. Ajout d'imprimante ...... 116 9.4.2. Contrôle d'accès au service ...... 117 9.4.3. Contrôle d'accès au niveau utilisateur ...... 118

9.1. Objectifs de ce module

Au cours de ce module, vous découvrirez comment configurer et administrer les services d'impression de Solaris 10 tant côté serveur que côté client. Vous apprendrez également com- ment démarrer, arrêter et utiliser le service d'impression LP. 9.2. Fonctionnement général de l'impression sous Solaris 10

Le système d'impression de Solaris est basé sur le service LP ainsi qu'une suite d'utilitaires permettant d'automatiser l'envoi de tâches d'impression et le partage d'imprimantes. Le proces- sus d'impression sous Solaris est basé sur un modèle client-serveur. Un client est une machine sur laquelle la partie cliente du logiciel d'impression est installée, ce qui permet aux utilisa- teurs de lui envoyer des tâches d'impression. Ces tâches seront relayées vers un serveur d'impression qui est une machine reliée à un périphérique d'impression et exécutant la partie serveur du système d'impression. La partie serveur accepte ou non les tâches en provenance des clients puis les traite. N'importe quel système Solaris 10 ayant les ressources ( espace disque, mémoire, ... ) nécessaires peut être connecté à un périphérique d'impression et devenir un serveur d'impression.

Le schéma suivant illustre l'ensemble du processus d'impression, de la demande d'impression de l'utilisateur à la sortie papier du document imprimé.

Figure 9.1. Processus d'impression Gestion des impressions 112

1. L'utilisateur envoie une demande d'impression via un poste client, soit via la commande lp ( System V ) soit via la commande lpr ( BSD ), en spécifiant ou non le nom de l'imprimante.

2. La commande print analyse la demande en vérifiant par exemple la hiérarchie des impri- mantes afin d'envoyer le document vers la bonne destination.

3. La commande print envoie elle-même les données au serveur d'impression approprié. Le serveur d'impression peut être n'importe quel serveur supportant le protocole d'impression BSD, ce qui inclut les serveurs lp de la famille System V ainsi que les ser- veurs lpr BSD.

4. Le serveur d'impression envoie le document vers l'imprimante appropriée.

5. Le document est imprimé.

De manière plus détaillée, si l'utilisateur ne spécifie pas d'imprimante ( ou de classe ) précise, l'étape numéro deux réalise les étapes suivantes :

1. Elle cherche le nom de l'imprimante par défaut dans les variables d'environnement PRINTER et LPDEST.

2. Si aucune de ces variables n'existe, elle parcours le fichier ~/.printers à la recherche de l'imprimante par défaut.

3. Si aucune imprimante par défaut n'y est trouvée, elle analyse le fichier / etc/printers.conf

4. Si elle échoue encore, elle tente d'interroger un annuaire comme NIS.

Avertissement

Tous les fichiers en attente d'impression sont copiés dans le répertoire / var/spool/lp et ne sont effacés qu'après avoir été imprimés. Vous devrez veillez à avoir assez d'espace disque pour ce répertoire, en adéquation avec la charge d'impression.

Mais l'impression à distance n'est pas limitée au réseau local ! Gestion des impressions 113

En effet, grâce au protocole IPP (basé sur HTTP ), qui signifie Internet Printing protocol, il est possible d'envoyer des tâches d'impression à des milliers de kilomètres, via le réseau internet. Le service en charge de ce protocole s'appelle ipp-listener. Il fonctionne de pair avec le ser- veur web Apache et écoute sur le port 631 en attente de requêtes HTTP à transmettre au sys- tème d'impression. ipp-listener est un service géré par la SMF (Service Management Facility) via sa FMRI ( Fault Management Resource Identifier ) svc:/application/print/ipp-listener. 9.3. Gestion des périphériques d'impression

Dans la gestion quotidienne des tâches d'impression vous serez amené à réaliser fréquemment les actions suivantes :

• Vérifier l'état des imprimantes

• Redémarrer le gestionnaire d'impression

• Supprimer l'accès distant à un périphérique d'impression

• Supprimer une imprimante

9.3.1. Vérification de l'état des périphériques d'impression

Quasiment toutes les tâches d'administration du système d'impression débutent par la vérifica- tion de l'état du système d'impression ou d'une imprimante particulière. Par exemple, vous pourriez avoir besoin de savoir quels périphériques sont actuellement disponibles ainsi que leurs caractéristiques.

Pour obtenir des informations sur le statut du service d'impression LP ou sur une des impri- mantes gérées par ce service, vous utiliserez la commande lpstat dont le prototype est le sui- vant :

$lpstat [-d] [-p ] [-D] [-l] [-o ] [-t]

Voici la signification des options :

Tableau 9.1. Options de lpstat

Option Description -d Afficher l'imprimante par défaut -D Afficher la description de l'imprimante . Habituellement utilisé conjointement avec d'autres options comme -p -l Afficher les caractéristiques du périphérique -o [] Afficher le statut des requêtes d'impressions spécifiés par qui peut être un mélange de noms d'imprimantes, de classes et d'identifiants de requête. Gestion des impressions 114

Option Description Si est omis, le statut de toutes les requêtes sera affiché. -p [] Affiche le statut des imprimantes spécifiées dans c'est à dire, si l'imprimante est en cours d'impression ou non, si elle est active et si elle peut accepter de nouvelles requêtes d'impression. Il est possible de séparer le nom des périphériques soit par des virgules, soit de les séparer par des espaces. Dans ce cas, veillez à entourer la liste par des guille- mets. Si aucune imprimante n'est spécifiée, le statut de toutes les imprimantes sera affiché. -t Affiche le statut du service LP, c'est à dire l'état de toutes les imprimantes.

9.3.2. Démarrer et arrêter le gestionnaire d'impression

Le gestionnaire d'impression lpsched gère toute les requêtes d'impression envoyées au serveur. Si ce service n'est pas lancé, aucune requête ne sera acceptée et donc aucun document ne sera imprimé. De ce fait, dans la version 10 de Solaris, la commande lpadmin le lance automati- quement dès l'ajout d'une imprimante au système et l'arrête quand le dernier périphérique local est supprimé. La gestion du service lpsched peut se faire soit via la commandes historiques suivantes, soient via la SMF qui est la méthode recommandée sous Solaris 10.

Avertissement

Si une tâche est en cours lors de l'arrêt de lpsched, la tâche sera ré-imprimée dans son ensemble lors du redémarrage du deamon.

Pour savoir si lpsched est en cours d'exécution, vous pouvez utiliser la commande

lpstat -r

Si le service est désactivé, vous obtiendrez le message suivant :

scheduler is not running.

Pour (re)démarrer le service, vous pouvez utiliser la commande

/usr/lib/lpsched

Pour l'arrêter, vous pouvez utiliser la commande lpshut

Le FMRI correspondant au service d'impression est svc:/application/print/server. Ainsi pour vérifier l'état du service utilisez de préférence la commande Gestion des impressions 115

svcs svc:/application/print/server

De même, pour démarrer/arrêter le service utilisez les commandes SMF suivantes :

svcadm enable svc:/application/print/server

svcadm disable svc:/application/print/server

Le service lp journalise les requêtes d'impression dans deux répertoires :

• /var/spool/lp/requests/

• /var/spool/lp/tmp/

représente le nom de votre système. Chaque requête d'impression est jour- nalisée dans les deux répertoires, la différence entre les deux fichiers se situant au niveau des droits d'accès : La première hiérarchie est accessible seulement à root ainsi qu'au service alors que la seconde est également accessible à l'utilisateur ayant soumis la tâche d'impression. 9.3.3. Lister et annuler les tâches d'impression

Comme pour les processus, vous devez connaître le numéro d'identifiant d'une tâche d'impression pour la contrôler. Cette information vous sera révélée par la commande lpstat dé- crite précédemment. Une fois l'identifiant de la tâche connu, utilisez la commande cancel pour l'annuler :

#cancel |

Le représente un ou plusieurs identifiant de tâche séparés soit par des virgules soit par des espaces (dans ce cas entourez la liste par des guillemets). De même pour qui lui, représente le ou les noms des imprimantes concernées.

Note

De même que pour les tâches situées dans la queue d'impression, vous pouvez également annuler les tâches en cours d'impression

9.4. Configuration du service d'impression

La configuration du service LP recouvre des tâches comme : Gestion des impressions 116

• Ajouter une imprimante

• Modifier la configuration des imprimantes existantes

• Supprimer une imprimante

• Définir ou modifier l'imprimante par défaut

• Définir des alertes relatives aux erreurs d'impression

• Contrôler l'accès au service d'impression

La configuration du service d'impression se fait principalement via la commande lpadmin qui peut prendre de nombreuses formes. Dans ce chapitre, nous étudierons l'ajout et la suppression de périphériques ainsi que le contrôle d'accès à ces ressources. 9.4.1. Ajout d'imprimante

Pour ajouter un nouveau périphérique ou modifier la configuration d'une imprimante exis- tante, utilisez lpadmin sous la forme suivante :

lpadmin -p

Lors de l'ajout d'une nouvelle imprimante, vous devez spécifier au moins une des options sui- vantes :

Tableau 9.2. Options de lpadmin

Option Description -s [!printerName] Spécifie un périphérique distant (situé sur la machine ) -U Autorise votre système à contacter un périphérique distant. Pour une connexion RTC, dialInfo sera le nu- méro de téléphone du périphérique distant ou le nom de la machine pour les autres types de connexion. -v Indique le fichier spécial à utiliser pour accéder au pé- riphérique par exemple /dev/lp0

Gardez à l'esprit qu'ajouter l'imprimante uniquement dans les fichiers de configuration du ser- veur ne la rendra pas accessible aux clients. Vous devez également l'ajouter sur chaque client. Par exemple, si vous souhaitez pouvoir accéder à l'imprimante imprD située sur le système hostD et la nommer localement imprL vous devrez utiliser la commande suivante :

lpadmin -p imprL -s hostD!imprD

Avertissement

Faites bien la différence entre le périphérique physique et l'imprimante logique : Il est possible d'associer plusieurs imprimantes logiques à la même imprimante Gestion des impressions 117

physique.

En plus d'une des options requise, vous pouvez également utiliser une des options suivantes

Tableau 9.3. Options de lpadmin

Option Description -e Utiliser le même programme d'interface que celui uti- lisé par l'imprimante existante -i Utiliser le programme d'interface spécifié par ( indiquez le chemin complet ) -m Utiliser le programme d'interface fourni par le service LP pour le modèle spécifié

9.4.2. Contrôle d'accès au service

Vous pouvez contrôler l'accès aux ressources de plusieurs manières. Par exemple, vous pou- vez retirer une imprimante sur une machine cliente en entrant la commande suivante :

#lpadmin -x

Elle aura pour effet d'effacer les informations concernant l'imprimante dans le répertoire /etc/lp/printers du client.

Vous pouvez également refuser toutes les requêtes d'impression sur le serveur via la com- mande reject :

#reject

Vous devez toujours utiliser cette commande avant de supprimer une imprimante, cela évitera que de nouveaux travaux d'impression entrent dans sa queue d'impression.

La commande suivante vous permettra de stopper l'impression des travaux présents dans sa file :

#disable

Pour réactiver l'impression des travaux soumis, utilisez simplement

#enable

Enfin, vous pouvez également supprimer l'imprimante directement sur le serveur, via la com- mande

#lpadmin -x Gestion des impressions 118

qui aura pour effet, tout comme pour le client, d'effacer les informations concernant l'imprimante dans le répertoire /etc/lp/printers du serveur. 9.4.3. Contrôle d'accès au niveau utilisateur

Par défaut, tous les utilisateurs ont accès au système d'impression. Vous pouvez toutefois contrôler l'accès à ce service au niveau utilisateur grâce à la commande lpadmin sous la forme suivante :

#lpadmin -p -u allow: [deny:]

Voici la signification des options utilisées :

Tableau 9.4. Options de lpadmin

Option Description -p Nom de l'imprimante concernée. -u allow: Liste des utilisateurs à ajouter à la liste des utilisateurs autorisés à utiliser l'imprimante . Sé- parés par virgules ou par des espaces( dans ce cas en- tourez la liste par des guillemets) -u deny: Liste des utilisateurs à ajouter à la liste des utilisateurs non autorisés à utiliser l'imprimante . Séparés par virgules ou par des espaces( dans ce cas entourez la liste par des guillemets)

Voici une liste des valeurs pouvant être spécifiées dans :

Tableau 9.5. Valeurs de

Valeur Description all ou all!all Tous les utilisateurs sur toutes les machines all! ou Un utilisateur spécifié par sur n'importe quelle machine !all Tous les utilisateurs sur la machine local None Aucun utilisateur sur aucune machine !all Tous les utilisateurs sur la machine ! L'utilisateur de la machine

Les fichiers contrôlant l'accès aux imprimantes sont les suivants :

• /etc/lp/printers//users.allow

• /etc/lp/printers//users.deny

Lors de l'analyse de ces fichiers un fichier vide est considéré comme n'étant pas présent sur le système. Si les deux fichiers existent, le fichier deny est ignoré. Voici un récapitulatif des ef- Gestion des impressions 119

fets entraînés par la présence ou l'absence de ces fichiers

Tableau 9.6. users.allow et users.deny

État des fichiers allow et deny Conséquence Aucun des deux fichiers n'existe Tous les utilisateurs peuvent accéder à l'imprimante Les deux fichiers existent mais sont vides Tous les utilisateurs peuvent accéder à l'imprimante La valeur de pour le fichier allow est 'all' Tous les utilisateurs peuvent accéder à l'imprimante La valeur de pour le fichier deny est 'all' Aucun utilisateur ne peut accéder à l'imprimante sauf root et lp Le fichier allow contient des utilisateurs Le fichier deny est ignoré, seul les utilisateurs pré- sents dans le fichier allow peuvent accéder à l'imprimante Le fichier deny contient des utilisateurs et le fichier Tous les utilisateurs peuvent accéder à l'imprimante allow est vide ou n'existe pas sauf les utilisateurs présents dans le fichier deny.

Toutes la configuration du service LP est stockée dans la hiérarchie /etc/lp. Par exemple, le fichier de configuration spécifique à une imprimante se trouve dans / etc/lp/printers//configuration.

N'éditez jamais ces fichiers directement ! Utilisez la commande lpadmin. 120

Chapitre 10. Backup et restauration

Table des matières

10.1. Les utilitaires de sauvegarde ...... 120 10.1.1. Introduction ...... 120 10.1.2. Commandes de base sous Unix ...... 120 10.2. Sauvegarde sur un système de fichiers démonté ...... 123 10.2.1. La commande ufsdump ...... 123 10.3. Sauvegarde et restauration sur un système de fichiers monté ...... 124 10.3.1. Système de fichiers UFS ...... 124 10.3.2. Système de fichiers ZFS ...... 125

10.1. Les utilitaires de sauvegarde 10.1.1. Introduction

L'un des aspects les plus importants dans les systèmes informatiques concerne les données. Il est donc très important de savoir protéger et donc de faire des sauvegardes des données jugées importantes. Nous allons donc voir comment effectuer des sauvegardes sous Solaris. 10.1.2. Commandes de base sous Unix

Dans un premier temps, nous allons voir les commandes dites basiques qui permettent de créer des sauvegardes et des archives de données. 10.1.2.1. Créer des archives avec tar

La commande tar est très populaire et très répandue sous Unix. Effectivement, elle permet d'archiver, c'est-à-dire de réaliser un fichier qui va regrouper un ensemble de fichiers. Ce fi- chier peut être compressé après, mais, par défaut, tar ne compresse pas les fichiers qu'il ar- chive.

Le paramètre fichiers désigne un ensemble de fichiers ou toute une arborescence précédée d'un chemin absolu (à partir de /) ou relatif.

Attention, si vous archivez des fichiers à partir d'un chemin absolu (précèdé d'un /) alors tar enlèvera ce premier séparateur afin de ne pas remplacer des fichiers par des versions plus an- ciennes lors de la restauration. Par contre, l'arborescence des fichiers et répertoires est sauvée.

Voici la liste des options disponibles pour la commande tar. Vous pouvez bien évidemment les combiner pour créer, par exemple, des archives compressées. Par contre, vous ne pouvez pas combiner les options permettant de créer une archive et d'en restaurer une.

tar [options] [fichiers] Backup et restauration 121

Tableau 10.1. Les options de la commande tar

Option Description -x Extraire le contenu d'une archive -c Créer une nouvelle archive -t Afficher seulement la liste du contenu de l'archive, sans l'extraire -f fichier Spécifier le fichier utilisé -v Mode verbeux, affiche le détail des opérations -z Compresser ou décompresser en faisant appel à l'utilitaire gzip -j Compresser ou décompresser en faisant appel à l'utilitaire bzip2 -p Préserver les permissions des fichiers

Exemple 10.1. Création d'archives

• Effectue la sauvegarde de tous les fichiers du répertoire /home/toto dans le fichier sauve.toto.tar placé dans le répertoire courant :

tar -cvf sauve.toto.tar /home/toto

• Effectue, en plus de l'archivage, une compression des fichiers :

tar -cvzf sauve.toto.tar.gz /home/toto

Exemple 10.2. Affichage du contenu d'une archive

• Affiche tous les fichiers contenus dans l'archive. tar -tvf sauve.toto.tar

Exemple 10.3. Extraction d'archives

• Extrait tout le contenu de l'archive dans le répertoire courant : Backup et restauration 122

tar -xvf sauve.toto.tar

• Décompresse et extrait :

tar -xvzf sauve.toto.tar.gz

• Extrait de l'archive le répertoire passé en argument :

tar -xvzf sauve.toto.tar.gz /home/toto/tmp

10.1.2.2. La commande cpio

La commande cpio (copy in and out) permet la copie de données d'un système de fichiers à un autre. Son point fort est sa standardisation et donc sa grande compatibilité sous Unix.

cpio [mode] [options]

Tableau 10.2. Les modes de cpio

Mode Description -i Cette option spécifie le mode entrant de lecture -o Cette option spécifie le mode sortant de création de l'archive

Tableau 10.3. Les options de cpio

Option Description -a Réinitialise le parametre "accès au fichier" du fichier copié. Ce paramètre ne peut-être reinitialisé pour les liens -A Ecrase le fichier par l'archive -d Créer des répertoires si besoin -v Mode verbeux

10.1.2.3. La commande pax

La commande pax (portable archive interchange), contrairement à la commande tar par exemple, ne permet pas de sauvegarder le propriétaire des données.

pax [mode] [options] Backup et restauration 123

Tableau 10.4. Les options de pax

Option Description -r Mode de lecture uniquement. Extrait l'archive passée en entrée standard et extrait les fichiers. -w Mode d'écriture uniquement. Archive le fichier passé en entrée standard. -rw Mode de copie. Copie les fichiers vers le répertoire de destination. -f Spécifie le chemin précis de l'archive. -v Mode verbeux. -x Spécifie le format de l'archive. Peut être pax, cpio, us- tar and xustar.

Un exemple de copie :

pax -rw

10.1.2.4. La commande dd

La commande dd est utilisée pour copier des fichiers ou un système de fichiers entre différents disques durs. Vous allez pouvoir également copier un disque dur complet vers une bande par exemple.

Syntaxe de la commande dd :

dd if= of= [option]

10.2. Sauvegarde sur un système de fi- chiers démonté

Ce type de sauvegarde est effectué sur des systèmes de fichiers démontés ou sur des supports en mode lecture seul, pour éviter la corruption des données et ainsi l'incapacité de restauration. 10.2.1. La commande ufsdump

La commande ufsdump permet de mettre en place un système de sauvegarde automatisée.

Basé sur des niveaux de sauvegarde, allant de 0 à 9. 10.2.1.1. Utilisation de la commande ufsdump

ufsdump s'utilise de la manière suivante :

ufsdump [options] [arguments] Backup et restauration 124

Les options ne sont que des caractères uniques, alors que les arguments prennent en charge une suite de mot. Voici une liste des options et des argments les plus utilisés :

Tableau 10.5. Listes des options de la commande ufsdump

Option Description 0-9 Spécifie le niveau de sauvegarde. 0 etant une sauve- garde complète, les niveaux de 1 à 9 étant des sauve- gardes incrémentielles. -a Enregistre une table du contenu de l'archive dans le fi- chier . Ce fichier sera utilisé par la commande ufsrestore pour déterminer si le fichier doit être restauré. -D Copie sur une disquette. -f Spécifie le périphérique de stockage pour la sauve- garde. La valeur par défaut est le lecteur de bande : / dev/rmt/0. La valeur f peut être un disque dur, un disque distant ou une bande distante pour la sauve- garde. -s Spécifie la taille du volume du disque qui va servir à la copie. -S Estime la taille requise pour effectuer la sauvegarde. -u Ajoute une entrée dans le fichier /etc/dumpdates. Ce fichier contient des informations sur la date de la sau- vegarde et sur le niveau utilisé. -v Vérifie le contenu final du média de sauvegarde et les données à sauvegarder. Ne peut être utilisé dans le cas d'une sauvegarde sur la sortie standard.

10.3. Sauvegarde et restauration sur un système de fichiers monté 10.3.1. Système de fichiers UFS

Unix File System : Il s'agit du système de fichiers de base des distributions basées sur Unix. Il est dérivé des premiers systèmes de fichiers développés par Bell labs et continue d'être utilisé aujourd'hui (ext2 sous Linux en est un dérivé par exemple). Les distributions de type BSD et à forciori Solaris utilisent ce système de fichiers. 10.3.1.1. Créer un snapshot avec ufs

La commande fssnap permet de "snapper" un système de fichiers. Important, avant de lancer un snapshot, il faut vérifier que l'on assez de place libre, et que le ficher de sauvegarde existe déjà.

# df -h [...] # touch /backup-file # fssnap -F ufs -o bs=/backup-file /dossier/a/snapper Backup et restauration 125

Ensuite on copie le snapshot sur une bande grâce à la commande ufsdump

# ufsdump 0uf /dev/rmt/0 /dev/rfssnap/1

10.3.1.2. Informations sur les snapshot avec ufs

La commande fssnap permet de lire des informations à propos d'un snapshot. Si le système de fichiers n'est pas spécifié, fssnap renvoit les informations sur tous les snapshots courants.

# fssnap -i /dossier/a/snapper Snapshot number :1 Block Device : /dev/fssnap/1 Raw Device : /dev/rfssnap/1 Mount point : /dossier/a/snapper Device state : idle Backing store path : /backup-file Backing store size : 0 KB Maximum backing store size : Unlimited Snapshot create time : Thu Jul 01 15:03:22 2006 Copy-on-write granularity : 32 KB

10.3.1.3. Supprimer un snapshot avec ufs

La commande fssnap permet aussi de supprimer un snapshot.

# fssnap -d /backup-file

10.3.1.4. Restauration d'un snapshot ufs

La commande ufsrestore permet de copier le contenu de la bande vers notre disque. Avant il faut formater le dique.

# newfs /dev/rdsk/c0t0d0s2 # mount /dev/dsk/c0t0d0s2 /mnt # cd /mnt # ufsrestore rf /dev/rmt/0

10.3.2. Système de fichiers ZFS

Ce système de fichier est disponible sous Solaris depuis la version 10 (6/06). 10.3.2.1. Introduction à ZFS

Sorti en 2004 mais implémenté en 2005, ZFS est un nouveau système de fichiers créé par Sun Microsystems pour les systèmes d'exploitation Solaris. Les specificités de ZFS sont sa prise en charge de disque dur de haute capacité, l'intégration des concepts de système de fichiers et de gestion de volumes entre autres. ZFS est implementé en tant que logiciel open source, sous li- cence CDDL (Common Development and Distribution License). Backup et restauration 126

10.3.2.2. Créer un snapshot avec zfs

La commande zfs avec l'argument snapshot crée un nouveau snapshot. On ajoute le dossier à "snapper" et le nom du snapshot (par convention, le jour du snapshot)

# zfs snapshot home@monday

Avec l'option -r, un snapshot sera crée pour chaque sous dossier.

# zfs snaptshot -r home@now

10.3.2.3. Informations sur un snapshot avec zfs

La commande zfs avec l'argument list permet, entre autres, de lister les snapshots courants.

# zfs list -t snapshot NAME USED AVAIL REFER MOUNTPOINT home@now 0 - 29.5K - home/anne@now 0 - 1.89M - home/bob@now 0 - 1.89M - home/alice@now 0 - 2.15M -

10.3.2.4. Supprimer un snapshot avec zfs

La commande zfs avec l'option destroy permet de supprimer un snapshot.

# zfs destroy home@monday

Avec l'option -r, on peut supprimer tous les snapshots d'un dossier.

# zfs destroy -r home

10.3.2.5. Restaurer un disque avec zfs

La commande zfs suivit de l'argument rollback, permet de revenir à une version antérieur du système de fichiers.

# zfs rollback home/anne@now

Avec l'option -r vous pouvez forcer l'application d'un snapshot plus ancien que le dernier snapshot.

# zfs rollback -r home@monday