Introduction à UNIX. Vincent Roca. Université Pierre et Marie Curie (Paris6) LIP6 - CNRS, thème Réseaux et Performances



Documents pareils
Aide-Mémoire unix. 9 février 2009

Premiers pas en Linux

Unix/Linux I. 1 ere année DUT. Université marne la vallée

Linux et le Shell. Francois BAYART. Atelier du samedi 20 Novembre

Année Cours Unix-Shell. par. Karam ALLALI. Ecole Spéciale d Informatique


TP 1 Prise en main de l environnement Unix

TP1 - Prise en main de l environnement Unix.

Contents. 1 Premiers pas en Linux. 1.2 Généralités. 1.1 Bref historique Linux

«Astrophysique et instrumentations associées» Cours UNIX Benoît Semelin

Linux 1: Présentation

La mémoire. Un ordinateur. L'octet. Le bit

Personnes ressources Tice. Académie de Rouen

Introduction au Système d Exploitation Unix/Linux

TP 4 de familiarisation avec Unix

La Comptabilité UNIX System V Acctcom

Polycopié Cours Système d Exploitation I. Programme : Filière SMI S3

Environnement Informatique EMSE Linux

Cours Unix 1. Présentation d UNIX. Plan du cours 1

Table des matières Hakim Benameurlaine 1

Chapitre 3 : Système de gestion de fichiers

Comment configurer Kubuntu

Programmation C. Apprendre à développer des programmes simples dans le langage C

C.M. 1 & 2 : Prise en main de Linux

Tutoriel Création d une source Cydia et compilation des packages sous Linux

L informatique en BCPST

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

PRESENTATION RESSOURCES. Christian Dupaty BTS Systèmes Numériques Lycée Fourcade Gardanne Académie d Aix Marseille

Introduction à Linux (pour le HPC) «Linux 101» Présentation :

Commandes Linux. Gestion des fichiers et des répertoires. Gestion des droits. Gestion des imprimantes. Formation Use-IT

Introduction...3. Objectif...3. Manipulations...3. La Sauvegarde...4. Les différents types...4. Planification...4. Les outils...5

NFS Maestro 8.0. Nouvelles fonctionnalités

Introduction aux Systèmes et aux Réseaux, Master 2 CCI

TD 1 - Installation de système UNIX, partitionnement

Bon ben voilà c est fait!

1 Configuration réseau des PC de la salle TP

Introduction...3. Objectif...3. Manipulations...3. Gestion des utilisateurs et des groupes...4. Introduction...4. Les fichiers de base...

TD séances n 3 et n 4 Répertoires et Fichiers sous Unix

Outils pour la pratique

TP : Introduction à TCP/IP sous UNIX

1 Démarrage de Marionnet

Mon premier rpm. 7 juin Avant de commencer RPM URPMI RPMBUILD... 2

Le Network File System de Sun (NFS)

Module : Informatique Générale 1. Les commandes MS-DOS

TP n 2 : Installation et administration du serveur ProFTP. Partie 1 : Fonctionnement du protocole FTP (pas plus de 15min)

INFO-F-309 Administration des Systèmes. TP7: NFS et NIS. Sébastien Collette Résumé

Shell Bash Niveau débutant

Guide d'installation de la base de données ORACLE 10g ( ) pour linux FEDORA CORE 4.

Cours Linux. Cours en ligne Administrateur Systèmes Linux. Académie Libre

Premiers pas. Shell? Les processus vu comme des filtres. commandes

Cours de Système : Gestion de Fichiers

SYSTÈME DE GESTION DE FICHIERS

Chapitre IX : Virtualisation

Administration de Parc Informatique TP07 : Installation de Linux Debian

Session 8: Android File System

WEBMESTRE : CONCEPTION DE SITES ET ADMINISTRATION DE SERVEURS WEB

Atelier individuel. Linux 101. Frédérick Lefebvre & Maxime Boissonneault frederick.lefebvre@calculquebec.ca U. Laval - Janv. 2014

Projet Administration Réseaux

Introduction à l informatique

Table des matières Hakim Benameurlaine 1

UBUNTU Administration d'un système Linux (4ième édition)

Introduction aux Systèmes et aux Réseaux

0.1 Mail & News : Thunderbird

Chi rement des postes PC / MAC / LINUX

Installation et utilisation du client FirstClass 11

Couche application. La couche application est la plus élevée du modèle de référence.

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

Maintenance et gestion approfondie des Systèmes d exploitation Master 2 SILI. Année universitaire David Genest

Serveur de sauvegardes incrémental

USTL - Licence ST-A 1ère année Initiation à la programmation TP 1

LINUX - ADMINISTRATION PROGRAMME DE FORMATION

Gestion répartie de données - 1

Table des matières Hakim Benameurlaine 1

Systèmes en réseau : Linux 1ère partie : Introduction

Systèmes informatiques

TP1 : Initiation à l algorithmique (1 séance)

Chapitre 02. Configuration et Installation

PARAGON Disk Wiper. Guide de l utilisateur. Paragon Technology GmbH, System Programmierung. Copyright Paragon Technology GmbH

Installation d'un TSE (Terminal Serveur Edition)

Administration de systèmes

Tutorial uclinux ARM7 Development Starter Kit. Pragmatec Produits et services dédiés aux systèmes embarqués. uclinux - Mise en oeuvre

TP1. Outils Java Eléments de correction

MODULE I1. Plan. Introduction. Introduction. Historique. Historique avant R&T 1ère année. Sylvain MERCHEZ

Cours Programmation Système

Manuel de System Monitor

INSTALL ATION D UNE D I S T RIBUTION

Cloner un disque dur

Le service FTP. M.BOUABID, Page 1 sur 5

Itium XP. Guide Utilisateur

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Automatisation de l administration système avec

Installation Windows 2000 Server

Tutorial Terminal Server sous

PPe jaune. Domingues Almeida Nicolas Collin Leo Ferdioui Lamia Sannier Vincent [PPE PROJET FTP]

PROCEDURE D'INSTALLATION OPENREPORTS

Introduction. Adresses

Système de Gestion de Fichiers

Créer et partager des fichiers

Serveurs de noms Protocoles HTTP et FTP

Guide Pratique: Installation Réseau

Transcription:

Introduction à UNIX Vincent Roca Université Pierre et Marie Curie (Paris6) LIP6 - CNRS, thème Réseaux et Performances 8, rue capitaine Scott; 75015 Paris; FRANCE téléphone: (+33) 1.44.27.75.14; fax: (+33) 1.44.27.87.32 vincent.roca@lip6.fr; http://www-rp.lip6.fr/ roca Version 1.4c, novembre 1999 Résumé: Ce document est une introduction à l utilisation d un système Unix. Au dela des commandes usuelles, nous introduisons également les principales notions sous-jacentes. Ainsi nous espérons permettre une compréhension en profondeur de ce système et de sa mise en oeuvre. En revanche ce document n a pas pour objectif d être un guide d administration Unix.

2 Copyright (c) 1999 Vincent Roca; all rights reserved Ce texte est copyrighté et n est pas dans le domaine public. Sa reproduction est cependant autorisée à condition de respecter les conditions suivantes : Si ce document est reproduit pour les besoins personnels du reproducteur, toute forme de reproduction (totale ou partielle) est autorisée. Si ce document est reproduit dans le but d être distribué à de tierces personnes il devra être reproduit dans son intégralité sans aucune modification. Cette notice de copyright devra donc être présente. De plus il ne devra pas être vendu. Cependant, dans le seul cas d un enseignement gratuit, une participation aux frais de reproduction pourra être demandée, mais elle ne pourra être supérieure au prix du papier et de l encre composant le document. Toute reproduction sortant du cadre précisé ci-dessus est interdite sans accord préalable de l auteur.

Contents 1 Introduction 5 1.1 Historique............................................. 6 1.2 La fondation FSF et le projet GNU............................... 7 1.2.1 La fondation FSF.................................... 7 1.2.2 Le projet GNU...................................... 7 2 Gestion des utilisateurs 9 2.1 Principe.............................................. 10 2.1.1 Les fichiers /etc/passwd et /etc/group......................... 10 2.1.2 Choisir un bon mot de passe.............................. 11 2.1.3 Le fichier /etc/shadow.................................. 11 2.1.4 La gestion centralisée des utilisateurs: NIS et NIS+................. 12 2.2 Commandes UNIX........................................ 12 2.2.1 Lancer une nouvelle session sur la machine locale................... 12 2.2.2 Lancer une nouvelle session sur une machine distante: la connexion à distance.. 12 2.2.3 Obtenir ou changer ses caractéristiques........................ 13 2.2.4 Informations sur les utilisateurs............................. 13 3 Système de fichiers 15 3.1 Formattage, partition et système de fichiers.......................... 16 3.1.1 Formattage........................................ 16 3.1.2 Partition......................................... 16 3.1.3 Système de fichiers local................................. 16 3.2 L arborescence de fichiers UNIX................................ 16 3.3 Système de fichiers distant: NFS................................ 17 3.4 Propriétaire et droits d un fichier................................ 18 3.4.1 Principes généraux.................................... 18 3.4.2 Droits d accès appliqués à un répertoire........................ 19 3.5 Notion de quotas......................................... 19 3.6 Commandes Unix......................................... 20 3.6.1 Chemins relatifs et absolus............................... 20 3.6.2 Gestion des répertoires et fichiers............................ 20 3.6.3 Informations sur les systèmes de fichiers........................ 20 4 Le Shell 23 4.1 Principes............................................. 24 4.2 Lequel choisir?.......................................... 25 4.3 Notions de variables et d environnement............................ 25 4.3.1 Principe.......................................... 25 4.3.2 Quelques variables d environnement.......................... 25 4.4 Configuration de l environnement................................ 26 4.4.1 Fichier /etc/profile commun en ksh ou bash...................... 26 4.4.2 Fichiers de configuration en ksh ou bash........................ 27 4.4.3 Fichiers de configuration en csh ou tcsh........................ 27 4.5 Quelques fonctionnalités utiles de sh et ses successeurs.................... 28 4.5.1 Les métacaractères ou caractères de remplacement.................. 28 3

4 CONTENTS 4.5.2 La substitution de commandes............................. 29 4.5.3 Bilan sur l utilisation des différents caractères quote................. 29 4.5.4 La notion d alias..................................... 29 4.5.5 Redirection des E/S standards............................. 29 4.5.6 Exécution à la chaine.................................. 30 4.5.7 Exécution en séquence.................................. 30 4.5.8 Exécution en premier plan ou arrière plan....................... 30 4.5.9 La gestion des processus/jobs.............................. 31 4.5.10 Accès à un historique et profile de l interface utilisateur............... 32 4.6 Ecriture de scripts........................................ 32 4.7 Aller plus loin............................................ 33 5 Systèmes de fenêtrage 35 5.1 Principes............................................. 36 5.1.1 Historique......................................... 36 5.1.2 Architecture....................................... 36 5.2 Les window managers..................................... 36 5.3 Configuration d un système de fenêtrage............................ 37 5.3.1 Lancement de l environnement graphique....................... 37 5.3.2 Configuration de l espace de travail en mode automatique.............. 37 5.3.3 Configuration de l espace de travail en mode manuel................. 38 5.3.4 Configuration du window manager.......................... 38 5.3.5 Configuration des applications............................. 39 5.3.6 Configuration du clavier................................. 40 5.3.7 Configuration de xterm................................. 40 5.4 Sécurité sous X Windows.................................... 40 6 Quelques outils 43 6.1 man................................................ 44 6.2 La commande info de GNU................................... 44 6.3 find................................................ 44 6.4 cpio................................................ 45 6.5 tar................................................. 45 6.6 compress/uncompress et gzip.................................. 46 6.7 L outil d archivage/compression zip/unzip........................... 46 6.8 Les Mtools............................................ 46 6.9 Bilan sur l utilisation des disquettes.............................. 47 6.10 head et tail............................................ 47 6.11 wc................................................. 47 6.12 diff................................................. 47 6.13 grep................................................ 47 6.14 Editeur vi............................................. 48 6.15 Editeur emacs........................................... 49 6.16 a2ps................................................ 49 6.17 ghostview et acroread...................................... 49 6.18 ping................................................ 49 6.19 ftp................................................. 50 6.20 Les commandes remote.................................... 50 6.21 Le service de messagerie..................................... 51 6.21.1 Format des adresses mail................................ 52 6.21.2 Format des messages................................... 52 6.21.3 Ajout d une signature.................................. 52 6.21.4 Transférer des fichiers binaires avec uuencode/uudecode............... 52 6.21.5 Les extensions du service de messagerie........................ 53 6.21.6 Les messages de taille (très) importante........................ 53 6.22 Le débugger gdb et ses extensions xxgdb et ddd........................ 53 6.23 L A TEX: un outil de formatage de documents.......................... 53

Chapter 1 Introduction 5

6 CHAPTER 1. INTRODUCTION 1.1 Historique Unix a une longue histoire. La chronologie suivante montre les différentes souches (lignées) ainsi que leurs principales versions : Les deux souches Unix principales La souche originelle des Bell Labs 1969 1ère version par Thomson et Ritchie (1969) : Philosophie : (1) small is beautifull (on favorise les petits fichiers, petits blocs, etc.) (2) building blocks (3) keep it simple and stupid (algorithmes simples dès que possible) (4) on fait le moins de traitements possibles dans le noyau. 1971 Version 1 1972 Version 2 1973 Unix réécrit en C 1974 Version 5 1975 Version 6 1978 Version 7 La souche AT&T 1981 System III 1983 System V 1985 System V R2.0 1986 System V R2.1 1987 System V R3 1989 System V R4.0, fusion des souches System V et SunOS 4.x System V R4.2 La souche de l Université de Californie, Berkeley UNIX 32 V BSD 4.1 1983 BSD 4.2 (1983) 1986 BSD 4.3 (1986) 1988 BSD 4.3 Tahoe (1988) 1990 BSD 4.3 Reno (1990) 1993 BSD 4.4 (1993) Ces deux souches, SystemV et BSD, ont eu une très grande importance et les apports de chacune a fortement marqué le domaine. De nombreuses versions constructeur d Unix dérivent soit de l une, soit de l autre. La souche de l Open Software Foundation) C est une souche industrielle issue du consortium OSF regroupant de nombreux constructeurs informatiques. Elle se voulait comme une alternative aux souches AT&T/BSD. Elle est technologiquement très avancée. Souches libres issues de BSD Elles dérivent toutes deux de la souche BSD 4.4. NetBSD 1.2 (1997) FreeBSD 2.2 (1997) 1990 OSF 1.0 OSF 1.1 OSF 1.2 OSF 1.3 La souche NetBSD se voulait initialement multiplateformes (PC, Sun, Mac...). La souche FreeBSD était pour sa part orientée PC. Cette distinction n est plus aussi vraie aujourd hui.

1.2. LA FONDATION FSF ET LE PROJET GNU 7 Souche Linux de Linus Torvalds; université d Helsinky Développée indépendamment des souches AT&T et BSD. Elle est souvent qualifiée de Unix like car elle se conforme à la norme POSIX 1003.1. On distingue deux niveaux de maturité: 1991 Linux 0.02 1994 Linux 1.0 1997 Linux 2.0 1999 Linux 2.2 Les souches stables: ce sont des souches destinées à être utilisées par tous. Se reconnaissent par le deuxième chiffre de la version qui est pair (e.g. version 2.0.35). Les souches de développement: ce sont des souches intermédiaires qui permettent le travail et l intégration de nouvelles fonctionalités. Se reconnaissent par le deuxième chiffre de la version qui est impair (e.g. version 2.1.23). La durée de vie d une telle souche est très faible afin de pouvoir avoir un noyau le plus à jour possible vis-à-vis des nouveaux développements. L installation de Linux se fait par le biais de distributions, c est-à-dire de packages contenant le noyau Linux, certaines applications, des outils d installation, des fichiers de configuration légerement différents, etc. On trouve : Slackware SuSE Debian (plus orientée développement) RedHat (peut être la plus connue/installée, prévue pour une utilisation générale). Ainsi on ne confondra pas le niveau du noyau avec celui de la distribution (e.g. en octobre 1999, RedHat 6.1 incluant le noyau Linux 2.2.12). Si Linux est un Unix non commercial, en revanche les distributions le sont, mais à un tarif dérisoire! 1.2 La fondation FSF et le projet GNU 1.2.1 La fondation FSF La FSF (Free Software Fundation) a été fondée au début des années 80 par R. M. Stallman. Son but est le développement de logiciels libres, c est-à-dire que l on peut copier, modifier et redistribuer librement. La seule contrainte est que les sources de ces logiciels doivent être disponibles gratuitement pour quiconque en fait la demande. Ces logiciels peuvent être vendus mais c est en pratique rarement le cas puisqu il existe toujours un moyen légal de se les procurer gratuitement. 1.2.2 Le projet GNU GNU signifie GNU is Not Unix (définition récursive). Son but est de développer un système d exploitation complet, distribué suivant les règles de la FSF, et distinct d Unix (d où son nom). Le projet a débuté avec la réalisation d un éditeur, emacs. A suivi un compilateur C afin de pouvoir compiler le futur système, gcc. Depuis un certain nombre de personnes se sont jointes afin d écrire toutes sortes d utilitaires. Quelques réalisations majeures de GNU sont : emacs éditeur très puissant, personnalisable. Il existe des variantes telles que xemacs doté d une interface graphique plus attrayante, pico-emacs qui est pour sa part allégé pour un chargement plus rapide... gcc compilateur C et C++. Extremmement utilisé pour de nombreuses architectures (PC, Sun, SGI, etc.) et versions du systèmes Unix du fait de la qualité du code produit et de la facilité de prise en compte du jeu d instruction d un nouveau processeur. gdb débugger symbolique très puissant associé à gcc. De nombreuses commandes Unix (tar, awk, lex, yacc, find, ls, make, etc.) existent dans une version GNU et sont souvent plus puissants que la commande d origine. Pour plus amples informations sur la FSF et le projet GNU, on se referera à [9].

8 CHAPTER 1. INTRODUCTION

Chapter 2 Gestion des utilisateurs 9

10 CHAPTER 2. GESTION DES UTILISATEURS 2.1 Principe 2.1.1 Les fichiers /etc/passwd et /etc/group Ces fichiers ont les droits suivants : -rw-r--r-- 1 root sys 2242 Jul 30 13:48 /etc/passwd -rw-r--r-- 1 root sys 347 Jul 8 16:09 /etc/group Le fichiers /etc/passwd À chaque utilisateur sont associés des attributs permettant une identification précise et donnant des informations contextuelles (nom complet, voir localisation) et administratives (répertoire principal, shell, etc.). Ces informations sont regroupées dans le fichier /etc/passwd. Exemple : roca:vfid6pgw5.rac:50164:50056:vincent Roca:/home/roca:/usr/bin/ksh Le premier champ d une ligne de /etc/passwd est le nom de login (huit caractères maximum). Le deuxième champ, d une longueur de 13 caractères, est construit à partir du mot de passe crypté de l utilisateur. Lors d une connexion, le mot de passe fourni est utilisé pour refaire le calcul et le résultat comparé à celui contenu dans ce champ. Des attributs supplémentaires permettent éventuellement de limiter dans le temps la validité d un mot de passe. Il est possible à l administrateur d invalider toute tentative de connexion en remplissant ce champ avec un mot invalide ( * par exemple). Chaque utilisateur possède un numéro d identification (UID ou User IDentifier). Ici : 50164. L interêt de distinguer l identification par nom de login et par UID est de permettre un stockage compact de l information. Ainsi à chaque fichier est associé l UID de son propriétaire et non son login. Un utilisateur appartient à un groupe lui même caractérisé par un numéro de groupe (GID, ou Group IDentifier). Ici : 50056. Vient ensuite un champ textuel donnant des informations supplémentaires sur l utilisateur (nom complet en général). Puis on trouve le répertoire principal de l utilisateur, ici /home/roca. Enfin on trouve le shell lancé lors de la connexion, /usr/bin/ksh (voir chapitre 4). Le fichier /etc/group Les groupes sont déclarés dans le fichier /etc/group. Exemple : bin::1:root,bin,daemon sirac::50056: ecrins::50057:roca Tout utilisateur possède un groupe par défaut (celui précisé dans /etc/passwd). Un utilisateur peut en changer (commande newgrp) à condition d y être autorisé. Ainsi l utilisateur roca pourra passer de son groupe d origine, sirac, au groupe ecrins. Il aura ainsi accès aux fichiers accessibles au groupe ecrins. Sur certains systèmes, e.g. NetBSD, la commande newgrp a disparu au profit d un système implicite. Un utilisateur pourra accéder directement à tous les fichiers accessibles à partir de l un quelconque des groupes auxquels /etc/group l autorise.

2.1. PRINCIPE 11 Les utilisateurs particuliers Il existe des utilisateurs particuliers : Nom UID Rôle root 0 super-utilisateur deamon 1 utilisateur fictif des démons (rarement utilisé en pratique) bin 2 (SysV) ou 3 (BSD) propriétaire de /bin et /usr/bin sys 3 (SysV) utilisateur système adm 4 (SysV) ou 3 (BSD) propriétaire des fichiers de log lp 71 (SysV) ou 9 (BSD) impression Le compte root est le plus célèbre et son UID est 0 sur tous les systèmes. Il a accès à toutes les ressources de la machine et à tous les fichiers d administration. Il peut créer et modifier les comptes utilisateurs (le mot de passe en particulier). Certains de ces utilisateurs sont sinon fictifs et ne permettent pas la création d une session (le champ passwd crypté contient * ). 2.1.2 Choisir un bon mot de passe Logiciels de craquage de mots de passe Le logiciel Crack tente de craquer les mots de passe utilisateurs. Il exploite des dictionnaires sur différents thêmes, construit de faux mots de passe en leur appliquant des variations (majuscules, suffixes, renversements, etc.), les chiffre, puis compare le résultat avec les mots de passe chiffrés des utilisateurs. Il construit peu à peu sa propre base de mots de passe chiffrés afin d accélerer les traitements la fois d après. Efficacité : sur un fichier de 403 mots de passe (réels), Crack a trouvé 100 mots en 40 heures sur un Sun Sparc10/40[2]. Technique pour choisir son mot de passe Il existe deux règles : Sept caractères au minimum, huit caractères de préférence (la puissance des machines permet un crackage brutal des mots de passe plus courts). Les éventuels caractères supplémentaires sont ignorés. Choisir une phrase et prendre les premières lettres des mots, la ponctuation, etc. Exemple : la phrase Maitre Corbeau, que vous me semblez beau. donnera le mot de passe MC,qvmsb. On évitera cependant les phrases trop célèbres qui pourraient être elles aussi connues des logiciels de craquage (et de ce point de vue l exemple est très criticable!). 2.1.3 Le fichier /etc/shadow Les logiciels de craquage ont besoin de connaitre les mots de passe chiffrés des utilisateur. Ceci est aisé sur les anciens systèmes puisque le fichier /etc/passwd contient ces informations et est lisible par tous. Pour améliorer la sécurité, sur les nouveaux systèmes, ce fichier est découpé en deux : /etc/passwd que tout utilisateur peut continuer de consulter mais qui ne contient plus les mots de passe cryptés /etc/shadow 1 qui contient les mots de passe cryptés et qui ne peut être consulté que par le root. -r-------- 1 root sys 1117 Sep 12 14:48 /etc/shadow Cette technique réduit considérablement le risque de craquage brutal des mots de passe. 1 nom variant d un système à un autre; s appelle /etc/master.passwd sous FreeBSD

12 CHAPTER 2. GESTION DES UTILISATEURS 2.1.4 La gestion centralisée des utilisateurs: NIS et NIS+ NIS (Network Information Server) permet une gestion centralisée d informations d administration. Une machine privilégiée (dite serveur NIS primaire ) maintient à jour les fichiers concernés (tel /etc/passwd mais pas seulement) et d autres stations (dites clients NIS ), membres d un même groupe de machines ( domaine NIS ), consultent ces fichiers ( map NIS ). Puisque le serveur NIS est une machine critique, on crée des serveurs NIS secondaires qui peuvent répondre aux requêtes des clients en cas de problème du primaire. Exemple : lors d un ls -l le système a besoin d afficher en clair le login du propriétaire de chaque fichier à partir de son UID. Ceci nécessite une requête au serveur NIS qui répond en envoyant l information voulue. La commande ls -l reprend alors son execution comme si l information avait été lue dans /etc/passwd. 2.2 Commandes UNIX Les commandes UNIX relatives aux utilisateurs sont les suivantes : 2.2.1 Lancer une nouvelle session sur la machine locale login nom_de_login La commande login permet de lancer une session sous le nom d un autre utilisateur. Procède par recouvrement 2. A la fin de la sous session, l utilisateur est délogé. Les fichiers d initialisation (voir chapitre 4) sont exécutés. su su nom_de_login su - su - nom_de_login La commande su permet de lancer une session sous le nom d un autre utilisateur (par défaut le root) sans se déloger. Au retour de la sous-session, on retombe sur la session initiale (à la différence de login). Sans l option -, la session est créée sans exécuter les fichiers d initialisation de l utilisateur. À l inverse, l utilisation de l option - permet de retrouver tout l environnement de la session, de même que pour un login (par exemple on acquiert le répertoire HOME du nouvel utilisateur). 2.2.2 Lancer une nouvelle session sur une machine distante: la connexion à distance Les commandes rlogin et telnet ont le même but : permettre une connexion à distance (figure 2.1). Cependant leur origine est différente : rlogin Origine Berkeley. d autres systèmes. Connexion entre systèmes Unix seulement à l origine, désormais porté sur telnet Standard (RFC854) permettant la connexion entre systèmes hétérogènes. Propose de nombreuses options de contrôle de la communication. Dans la pratique peu de différences existent entre ces deux commandes. Notons que telnet permet de contacter un autre service que le démon telnetd en spécifiant son numéro de port TCP. Cette possibilité est très utilisé pour vérifier que tel service (correspondant au numéro de port) répond (c est à dire que le démon associé est actif). Les autorisations de connexion sans mot de passe Il est possible d autoriser des connexions à distance sans mot de passe. Pour cela il faut déclarer dans le fichier $HOME/.rhosts de la machine cible (soit machine2 sur la figure 2.1) tous les couples (login, machine) autorisés à s y connecter directement. L utilisation de.rhosts sera nécessaire avec certaines commandes remote (voir chapitre 6). Exemple : 2 En fait login effectue un exec en interne d où le recouvrement.

2.2. COMMANDES UNIX 13 utilisateur machine1 machine2 session1 session2 telnet/rlogin Figure 2.1: Connexion à distance par rlogin ou telnet. $ more ~/.rhosts roca typhon.lip6.fr roca typhon Attention l utilisation de ce mécanisme peut mener très loin (et sans que l on soit au courant!) si la personne que l on autorise à utiliser son compte autorise lui-même quelqu un d autre à faire de même etc. On préferera une technique telle que la création d un groupe dédié si l on veut permettre à un groupe d utilisateurs de travailler conjointement sur un projèt. 2.2.3 Obtenir ou changer ses caractéristiques id who am i passwd (ou yppasswd si NIS est utilise) newgrp nouveau_groupe 2.2.4 Informations sur les utilisateurs who

14 CHAPTER 2. GESTION DES UTILISATEURS

Chapter 3 Système de fichiers 15

16 CHAPTER 3. SYSTÈME DE FICHIERS 3.1 Formattage, partition et système de fichiers Un disque, plus généralement un support à accès direct, n est pas de suite utilisable. Formattage (souvent fait d origine), partitionnement et création d un système de fichiers sont les trois étapes indispensables. 3.1.1 Formattage Cette étape consiste en la préparation du support physique. C est ici que la géométrie du disque est précisée en termes de nombre de cylindres, nombre de têtes, nombre de secteurs et nombre de pistes. Cette étape est donc d un très bas niveau et sera rarement mise en oeuvre par les utilisateurs. Une exception cependant est le formattage de bas niveau d une disquette. Ceci peut se faire par la commande fdformat. Ce formattage permettra ensuite la création d un système de fichier Unix sur la disquette (cf. ci-dessous). 3.1.2 Partition Une partition est un découpage logique du disque. Cela revient à découper un disque physique en plusieurs disques virtuels indépendants. Une partition a donc une taille fixée une fois pour toute. Découper un disque en plusieurs partitions a de multiples avantages : des tailles trop importantes sont difficiles à gérer (les sauvegardes automatiques sont souvent faites avec comme granularitée la partition) permet d éviter un débordement d une partition à une autre (cloisonement entre partitions systèmes et utilisateurs) permet de gérer les droits de lecture/écriture partition par partition (voir le fichier /etc/fstab ou équivalent) permet d installer plusieurs systèmes d exploitation sur le disque dans des partitions différentes L inconvénient est qu une partition peut être pleine alors que les autres sont largement sous-utilisées! La seule solution consiste alors à sauver le contenu des partitions, les détruire, et en créer de nouvelles! Ou bien acheter un nouveau disque... Ou encore acheter un système AIX, HPUX... qui permettent une augmentation dynamique de la taille d une partition :-) 3.1.3 Système de fichiers local Un système de fichiers (ou FS, file system ) est une structure logique que l on ajoute à chaque partition afin de permettre son exploitation (manipulation des blocs, stockage d une arborescence de fichiers, notion d inode, etc.). Sur les systèmes BSD, le système de fichier habituel est FFS ( Fast File System ). UFS en est une évolution. Sous Linux, le système de fichiers habituel est Ext2fs. Sous Ouindoze, il y a plusieurs systèmes : FAT16, FAT32 3.2 L arborescence de fichiers UNIX On trouvera généralement les répertoires suivants : / : Appelé racine. /bin : Contient les utilitaires et commandes indispensables. /dev : Contient les devices, ou fichiers spéciaux permettant d accéder aux périphériques physiques (/dev/rmt* : lecteurs de bandes, /dev/fd* : lecteur de disquettes, disque etc.) et aux périphériques logiques (pseudo-terminaux, services réseaux TCP et UDP, etc.). /etc : Contient les fichiers de configuration tels que /etc/passwd, /etc/hosts...

3.3. SYSTÈME DE FICHIERS DISTANT: NFS 17 /lib : Contient les bibliothèques ( library en anglais) indispensables (fichiers *.a 1 ou *.so 2 ). /root : Répertoire principal de l utilisateur root. /sbin : Contient les commandes d administration indispensables. /tmp : Contient les fichiers temporaires créés par le système ou un utilisateur. Chacun y a accès et peut y déposer des informations. Cependant /tmp peut être réinitialisé à tout moment (par exemple lors du boot, tous les soirs, etc.). /usr : Contient les fichiers et commandes supposées non indispensables. Sans lui le système fonctionne mais n est pas réellement utilisable. /usr/x11 : les librairies et commandes relatives au système de fenêtrage X11. Contient en particulier /usr/x11/bin (la plupart des utilitaires en mode graphique, window managers, jeux... ), /usr/x11/lib et /usr/x11/man. /usr/bin : les autres utilitaires et commandes. /usr/local : utilitaires et commandes additionnelles propres au site. Contient en général un grand nombre de choses très, très utiles! A avoir absolument dans son PATH. /usr/lib : les autres bibliothèques. /usr/include : fichiers d include C, *.h. /usr/sbin : les commandes d administration un peu moins importantes. /var : Contient les fichiers temporaires gérés par le système ainsi que des fichiers de taille variable. /var/log : Contient les fichiers de log, c est à dire les traces de tous les évenements étant survenus : problèmes, connexions, reboot... /var/spool : Contient le courrier, les impressions en cours, etc. /home ou /comptes ou /users : Contient les répertoires principaux des utilisateurs. Il fait souvent partie d une partition indépendante. Cette arborescence, très incomplete, est donnée à titre d exemple. Dans la pratique le type de système (SystemV versus BSD) influera, ainsi que les spécificités locales au site. Ainsi sur un système V (Solaris) on trouvera en plus : /usr/5bin : utilitaires et commandes pour un profil SystemV. /usr/ucb : utilitaires et commandes pour un profil BSD 3. /usr/ucblib : Comme /usr/lib mais pour le profil BSD. /usr/ucbinclude : Comme /usr/include mais pour le profil BSD. 3.3 Système de fichiers distant: NFS Principes de NFS NFS (Network File System) est un système de fichiers permettant à une machine d exploiter le disque d une autre machine via le réseau. On distingue (figure3.1) : le client NFS : il s agit de la machine accédant au système de fichiers distant, et le serveur NFS : il s agit de la machine exportant un système de fichiers local à des machines distantes. Le bon fonctionnement de NFS nécessite que d autres services soient opérationnels : le réseau, puisque l accès au système distant passe par le réseau, 1 bibliothèque statique, c est à dire linkée avec l executable lors de la compilation 2 bibliothèque dynamique, c est à dire linkée lors du lancement de l executable 3 l ordre d apparition de /usr/ucb et /usr/5bin dans la variable PATH donnera le profil recherché

18 CHAPTER 3. SYSTÈME DE FICHIERS machine1 - client NFS accès transparent à la partition /home distante machine2 - Serveur NFS partition /home connexion à travers le réseau Figure 3.1: Montage par NFS d une partition. la synchronisation des horloges des différentes machines collaborant à travers NFS (afin d avoir une vue cohérente des dates de modification des fichiers 4 ), l unicité des UID des utilisateurs entre les différentes machines afin de ne pas avoir de problèmes de droit d accès 5. Un montage NFS nécessite par ailleurs que le serveur autorise le client à monter (terme technique) le système de fichiers distant localement (ficher /etc/exports pour les systèmes BSD). Notons aussi que le point de montage du FS distant au sein du FS local peut se faire à différents endroits. Ainsi il peut y avoir des différences dans l arborescence des machines clientes. Montage NFS des répertoires principaux des utilisateurs Par défaut, un utilisateur ayant un compte sur les machines A et B aura un répertoire principal sur le disque de chacune des machines. Accéder aux fichiers qu il a stocké sur B lorsqu il se trouve sur A nécessitera l emploi d un outil de copie à travers le réseau (e.g. FTP, voir chapitre 6). Afin d éviter ces problèmes et d avoir une arborescence unique disponible quelle que soit la machine où l on se trouve, on identifie un serveur de HOMES, i.e. une machine disposant d un gros disque qui contiendra le répertoire principal de chaque utilisateur. Le système de fichiers associé est alors exporté vers toutes les machines distantes sur lesquelles travaillent les utilisateurs. Les avantages sont multiples : plus de confort pour l utilisateur qui retrouve tous ses fichiers quelle que soit la machine qu il utilise, une gestion centralisée de tous les comptes utilisateurs, très utile dans le cas des sauvegardes, Cela se paye en revanche par un temps d accès un peu plus important, une charge réseau plus élevée, et l impossibilité de travailler en cas de problème réseau. 3.4 Propriétaire et droits d un fichier 3.4.1 Principes généraux $ ls -l *.ps -rw-rw-r-- 1 roca sirac 492518 Sep 3 12:12 Bourne.Shell.ps L utilisateur propriétaire du fichier est roca. Il peut être changé avec la commande chown. Par exemple : chown truc_muche Bourne.Shell.ps Le groupe propriétaire du fichier est sirac. Il peut être changé avec la commande chgrp. Par exemple : chgrp ecrins Bourne.Shell.ps À chaque fichier sont associés des droits. Voici le résultat du listage de tous les fichiers (même cachés, c est à dire commançant par un. ) du répertoire local : $ ls -la drwxr-xr-x 2 roca sirac 512 Sep 8 16:04. drwxr-xr-x 14 roca sirac 1024 Sep 8 15:23.. -rw-rw-r-- 1 roca sirac 492518 Sep 3 12:12 Bourne.Shell.ps 4 C est indispensable pour des outils tels que make qui reposent sur la comparaison des dates de modification. 5 I.e. à l UID 50056 des machines A et B correspond bien la même personne physique.

3.5. NOTION DE QUOTAS 19 Le d initial (resp. son absence) indique un répertoire (resp. un fichier). Chacun des trois groupes de trois caractères qui suit indique les droits qu ont respectivement : l utilisateur (abbrégé par u, ou user, dans la commande chmod), les membres du groupe de l utilisateur (abbrégé par g, ou group, dans la commande chmod), et tous les autres utilisateurs (abbrégé par o, ou others, dans la commande chmod). Ces droits sont : r indique un droit de lecture. w indique un droit d écriture. x indique un droit d exéctution. La commande permettant leur modification est : chmod <u et/ou g et/ou o><+ ou -><r et/ou w et/ou x> fichier(s) Ainsi, pour enlever toute possibilité d accès a tout le monde en dehors de l utilisateur pour le fichier Bourne.Shell.ps, on utilisera : chmod go-rwx Bourne.Shell.ps Ces droits étant stockés sous forme numérique par le système, il est également possible de rentrer ces valeurs par une suite de 1 à 3 digits octals 6. Chaque digit code les droits rwx: r correspond à 4 w correspond à 2 x correspond à 1 Il suffit alors de faire la somme des droits désirés pour respectivement l utilisateur, le groupe, les autres. chmod 0640 Bourne.Shell.ps passe les droits en : -rw-r-----. 3.4.2 Droits d accès appliqués à un répertoire Le même principe de droits s applique également aux répertoires, la signification précise des droits étant la suivante : r autorise à lister le contenu du répertoire w autorise la création de fichiers (l autorisation décriture pour un fichier déja existant est régie par les droits du fichier!) x autorise à rentrer dans le répertoire 3.5 Notion de quotas Les quotas permettent un partage équitable de l espace disque entre les utilisateurs. On attribue à chacun une taille maximale d occupation du disque. Un débordement est toléré pendant quelques jours. Au dela de ce délai, plus aucun fichier nouveau ne pourra être créé tant que l utilisateur ne sera pas repassé sous son quota. Avantage par rapport à la technique consistant à avoir une partition par utilisateur : plus grande facilité d administration (sauvegarde, configuration), de plus l espace non utilisé par un utilisateur peut être mis à profit par un autre. 6 Il est en fait possible de spécifier un 4ème digit. Il permet de spécifier certaines propriétés qui dépassent le cadre de ce manuel.

20 CHAPTER 3. SYSTÈME DE FICHIERS 3.6 Commandes Unix 3.6.1 Chemins relatifs et absolus Deux types de chemins existent: absolue, c est à dire spécifié à partir de la racine. Exemple : /usr/x11/bin/fvwm. relatif, c est à dire spécifié à partir de la position courante. Exemple : doc/cours/intro_unix.ps,../../cours/tp. Le répertoire courant peut être désigné par. et le répertoire précédant par... 3.6.2 Gestion des répertoires et fichiers mkdir nom_de_repertoire rmdir nom_de_repertoire cd nom_du_repertoire cd. cd.. cd ou bien cd ~ cd ~/nom_de_repertoire cd ~nom_d_utilisateur pwd ls ls -l ls -a ls -d ls -t mv ancien_nom nouveau_nom (convient pour renommer ou déplacer un fichier ou un répertoire) ln -s fichier_existant nouveau_lien cp fichier_original fichier_copie rm rm -f rm -r rm -rf Attention à : rm -rf * cat nom_fichier more nom_fichier 3.6.3 Informations sur les systèmes de fichiers df (sur BSD) df -k (sur Systeme V) df. mount

3.6. COMMANDES UNIX 21 du du -k du -s du -ks * Exemples sous Linux $ df Filesystem 1024-blocks Used Available Capacity Mounted on /dev/hda3 437191 402157 12455 97% / /dev/hda6 429352 379963 27215 93% /home On voit que se trouvent deux partitions seulement, toutes deux locales (visible par le nom des partitions en /dev/hda). Exemples sous Solaris $ df -k Filesystem kbytes used avail capacity Mounted on /dev/dsk/c0t3d0s0 24063 19495 2168 90% / /dev/dsk/c0t3d0s3 239943 172855 43098 81% /usr /proc 0 0 0 0% /proc fd 0 0 0 0% /dev/fd /dev/dsk/c0t3d0s4 163223 105903 41000 73% /opt swap 55748 236 55512 1% /tmp meije:/comptes 1918374 1253717 472820 73% /comptes meije:/promethee 1837939 1582685 71461 96% /promethee Cet exemple montre la présence de deux montages NFS (pour les répertoires utilisateurs), exportés par la machine meije. Les autres systèmes sont locaux (visible par la présence de /dev/dsk/).

22 CHAPTER 3. SYSTÈME DE FICHIERS

Chapter 4 Le Shell 23

24 CHAPTER 4. LE SHELL 4.1 Principes Le shell est le premier processus d une session. Sa nature est précisée dans le fichier /etc/passwd (cf. Chapitre 2). Il a deux rôles : Interpréteur de commandes : Il constitue l interface entre l utilisateur et le système et permet, selon les shells : l écriture et l éxecution des commandes, l accès à un historique, l édition de lignes de commandes, la completion, la gestion des entrées/sorties, la création d alias, la gestion des jobs, etc. Langage de programmation : Cette programmation peut se faire de façon interactive (en ligne) ou non (scripts, ou fichiers de commandes). Le shell possède de nombreuses fonctions de contrôle, commandes internes (builtin), mécanismes de substitution de paramètres, etc. Son fonctionnement en tant qu interpréteur est le suivant : Ouverture des E/S standards Lecture sur l entrée standard Lancement de la commande entrée standard (stdin, ou fd=0), par défaut le clavier sortie standard (stdout, ou fd=1), par défaut l écran sortie erreur standard (stderr, ou fd=2), par défaut l écran lecture de la commande jusqu à la fin de ligne (\n) interpretation des méta-caractères et opérateurs recherche du nom de la commande à l aide du PATH (path) en premier plan : fork()/exec(commande)/wait()/prompt en arrière plan : fork()/exec(commande)/prompt Exemple : /bin/sh attente... l utilisateur tape "date" /bin/sh attente... creation d un clone (fork) fin (exit) /bin/sh /bin/date lancement de la commande (exec) Figure 4.1: Utilisation de la commande date en premier plan. Pourquoi créer un nouveau processus pour éxecuter la commande? indépedance du shell vis à vis de la commande. En cas de plantage, le shell n est pas affecté. permet de lancer plusieurs commandes en tache de fond. NB: on ne peut pas revenir en arrière apres un exec. Le recouvrement est définitif.

4.2. LEQUEL CHOISIR? 25 4.2 Lequel choisir? De nombreux shells existent : sh ( Bourne shell, Steve Bourne) shell historique dont l avantage est d être disponible sur tous les Unix. ksh ( Korn shell ) shell normalisé POSIX (P1003.2) et ISO (HP, Solaris). Puissant. C est le shell par défaut sous Solaris. bash ( GNU Bourne again shell de Brian Fox et Chet Ramey) ksh augmenté d origine FSF, qui possède la complétion. C est le shell par défaut sous Linux. Tester c est adopter! zsh ( Z shell ) Ksh du domaine public. Peu utilisé. csh ( C-shell, Bill Joy) shell BSD, disponible sur tous les Unix, un peu plus puissant que sh, mais incompatible et insuffisant pour une utilisation courante (pas d historique). tcsh ( Toronto C-shell ) version largement améliorée de csh, avec la complétion, shell tres utilisé. Un tableau comparatif pour l utilisation de ces shells est donné ci-dessous. Il en ressort que sh est à préferer absolument pour l écriture de scripts du fait qu il est disponible sur toutes les machines, alors que bash ou tcsh sont à privilégier dans le cas d une utilisation en tant qu interface utilisateur. Shell interface utilisateur programmation sh très limitée sûre, toujours disponible ksh bonne normalisée bash très bonne normalisée zsh bonne normalisée csh moyenne à déconseiller tcsh très bonne à déconseiller 4.3 Notions de variables et d environnement 4.3.1 Principe Le shell permet la définition de variables par : NOM_VARIABLE=valeur On pourra ensuite les référencer au sein du shell. En revanche, par défaut ces variables ne sont pas transmises aux processus créés par le shell. Pour qu une variable puisse être transmise lors du execve (par exemple DISPLAY), il faut qu elle fasse partie de l environnement. Cela se fait en exportant ces dernières au moyen des commandes : export NOM_VARIABLE pour ksh setenv NOM_VARIABLE pour tcsh 4.3.2 Quelques variables d environnement Les variables d environnement permettent de parametrer son environnement de travail. Certaines ont des valeurs par défaut (initialisées dans le fichier de configuration commun par exemple). Toutes sont personalisables dans la théorie, mais en pratique mieux vaut réflechir avant :-) PATH : suite de chemins d accès aux exécutables Exemple: PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/X11/bin:/usr/local/bin:. L ordre des chemins dans cette variable est important puisqu il détermine l ordre de recherche. Ainsi, si deux versions d une même commande existent, sera utilisée celle qui est trouvée en premier. La présence d un. dans cette variable permet d exécuter les commandes se trouvant dans le répertoire courant. Par contre il est préférable que le. se trouve après les répertoires systèmes pour des raisons de sécurité 1. 1 Il se peut en effet qu un utilisateur mal intentionné aît installé une version modifiée d une commande usuelle telle que ls dans le répertoire /tmp. Tout utilisateur ayant un. avant /bin dans sa variable PATH et ayant fait un cd /tmp exécutera alors la fausse commande ls!

26 CHAPTER 4. LE SHELL LD LIBRARY PATH : suite de chemins d accès aux bibliothèques. Même syntaxe que PATH. MANPATH : suite de chemins d accès aux manuels. Même syntaxe que PATH. HOME : chemin d accès au répertoire initial de l utilisateur. Répertoire par défaut pour cd USER : l utilisateur courant PWD : répertoire courant. Positionné automatiquement par cd PS1 : prompt principal du shell en mode interpréteur. En général $ pour un utilisateur, et # sous root PS2 : prompt secondaire du shell en mode programmation TERM : type de terminal (essayer vt100 ou xterm en cas de problèmes avec un éditeur) DISPLAY : adresse de l écran. Le format de la variable est <nom de la station>:<numero d ecran>[.0] EDITOR ou VISUAL : éditeur par défaut à utiliser (vi, emacs, etc.) PRINTER : imprimante par défaut et bien d autres encore... On pourra visualiser les valeurs courantes d une variable ou de toutes les variables par : env echo $PATH 4.4 Configuration de l environnement Elle se fait à deux endroits différents : dans des fichiers de configuration communs gérés par l administrateur, et dans des fichiers de configuration individuels gérés par l utilisateur. La localisation et la syntaxe de ces fichiers dépend du shell choisit. 4.4.1 Fichier /etc/profile commun en ksh ou bash Ce fichier d initialisation commun est un point de passage obligé pour tous les logins. On y définit des variables d environnement à très longue durée de vie. Il est fourni par le constructeur et adapté par l administrateur aux spécificités locales. Il n est pas modifiable par l utilisateur. Exemple : # positionne les droits des nouveaux fichiers a 0777-027 # soit 0750 (rwxr-x---). umask 027 USER= logname # chemins minimaux pour les commandes et les manuels. PATH=/usr/local/bin:/usr/ucb:/bin:/usr/bin:/usr/X11/bin MANPATH=/usr/local/man:/usr/man:/usr/lang/man MAIL=/var/spool/mail/$USER # nom de la machine et de l OS. HOSTNAME= uname -n OS= uname -s REL= uname -r OSREL=${OS}${REL} export USER PATH MANPATH MAIL HOSTNAME OS REL OSREL

4.4. CONFIGURATION DE L ENVIRONNEMENT 27 4.4.2 Fichiers de configuration en ksh ou bash Il s agit du fichier $HOME/.profile. Il contient les initialisations propres à l utilisateur. On peut y : redéfinir (ou étendre) des variables proposées par /etc/profile (bien réfléchir avant!) définir de nouvelles variables : export VARIABLE=valeur exécuter des commandes et scripts d initialisation (exemple: modification des droits d accès par défaut avec umask ) Pour prendre en compte des modifications du.profile, il faut alors : soit sortir de la session et se loger de nouveau, soit ressourcer le fichier par l une des commandes : Exemple de.profile : source.profile..profile. ~/.profile export PATH=$PATH:$HOME/bin:. # nouveaux chemins personnels export DISPLAY=:0 export PRINTER=lB110 # imprimante par defaut alias ll= ls -l # quelques alias utiles alias la= ls -la umask=077 # donc: 0777-0077 donne les droits 0700, soit rwx------ # tout fichier cree aura par defaut ces droits restreints A la différence de ksh, en bash on peut trouver :.bashrc_login : exécuté au login seulement d un shell interactif de login.bashrc_logout : exécuté à la fin de session.profile : exécuté au login seulement en l absence de.bashrc_login.bashrc : exécuté en cas d un shell interactif non login (par exemple depuis le shell courant on lance un nouveau shell). Le plus simple est de n avoir qu un fichier.profile et de créer un lien de.bashrc vers.profile. Cela évite bien des problèmes (par exemple lorsque l on se retrouve sous ksh parce que bash n est pas disponible) et va dans le sens d une plus grande simplicité. 4.4.3 Fichiers de configuration en csh ou tcsh Ce sont les fichiers :.cshrc/.tcshrc : Fichier d initialisation d un C-shell réinterprété à chaque invocation du csh/tcsh (donc pour chaque commande lancée).login : Fichier d initialisation d un login C-shell interprété à chaque login (après.[t]cshrc) définition de nouvelles variables peut-être ressourcé par : source.login C est ici que l on met l appel à /usr/games/fortune.logout : Fichier de clôture d une session C-shell C est ici que l on met le clear de l écran Exemple de syntaxe : setenv DISPLAY ma_console:0

28 CHAPTER 4. LE SHELL 4.5 Quelques fonctionnalités utiles de sh et ses successeurs 4.5.1 Les métacaractères ou caractères de remplacement Le constructeur * permet de désigner une chaine de caractères quelconque, éventuellement vide. Ainsi : * désigne tous les fichiers (hors fichiers cachés débutant par un. ) *.ps désigne tous les fichiers ayant l extension.ps Le constructeur? permet de désigner un caractère quelconque non vide. Ainsi :? désigne tous les fichiers d un seul caractère exemple.? désigne tous les fichiers du type exemple.x Le constructeur [] permet de désigner un caractère quelconque parmis une liste. Ainsi : v[123].txt désigne les fichiers v1.txt, v2.txt, et v3.txt v[1-5].txt désigne les fichiers v1.txt, etc. jusqu à v5.txt [a-za-z]* désigne les fichiers commençant par une lettre minuscule ou majuscule (attention à ne pas utiliser [a-z] qui conduit à une erreur puisque les codes ASCII des majuscules sont avant ceux des minuscules!). On peut se servir du constructeur [!] pour exclure des caractères pris parmis une liste. Ainsi : *[!a-z] désigne tous les fichiers se terminant par autre chose qu une lettre minuscule. Le problème des métacaractères La génération de noms comportant des métacaractères pose problème. Pour dénoter de manière littérale les métacaractères, plusieurs solutions sont possibles : On l entoure de simples quotes. Dans une chaine entourée de doubles quotes ", tous les caractères sont pris littéralement sauf $ et \ (backslash) afin de permettre la substitution de variables et de commandes. Pour rendre littéral les caractères $ et \, on les fait précéder d un \. Sinon (soit à l extérieur d une chaine délimitée par ou ") on le fait précéder du caractère \. De façon générale, le backslash est souvent un caractère d échappement. Exemples Détruire le fichier de nom bi*zare qui contient (par erreur) le caractère * : rm "bi*zare" rm bi*zare Détruire tous les fichiers qui contiennent (par erreur) le caractère * : rm *"*"* rm * * * Désigner tous les fichiers du répertoire courant dont le nom, d au moins trois caractères, commence par un. : ls.??*

4.5. QUELQUES FONCTIONNALITÉS UTILES DE SH ET SES SUCCESSEURS 29 4.5.2 La substitution de commandes On veut affecter à une variable le résultat de l exécution d une commande. Pour cela on encadrera la commande par des caractères backquote. Exemple : on veut affecter à la variable LISTE la liste des fichiers du type *.txt. LISTE= ls *.txt 4.5.3 Bilan sur l utilisation des différents caractères quote... (simple quote) : chaine non interprétée... (double quote) : chaine de caractères avec substitution de commandes et de variables (les caractères $, et backslash ont une signification particulière)... (back quote) : substitution de commandes Exemple : Pour obtenir un prompt du type nom_machine:login>, on pourra utiliser : export PS1=" uname -n : logname > " 4.5.4 La notion d alias On peut facilement redéfinir le nom de commandes complexes (ou de suites de commandes) au moyen de alias (raccourcis). Ainsi on trouvera souvent dans les fichiers de configuration : en ksh, ou bien : alias ll= ls -l alias la= ls -la alias rm= rm -i alias ll ls -l alias la ls -la alias rm rm -i en tcsh. (pour ceux qui ont peur de faire des gaffes : -i pour interactif) NB : ne pas confondre le caractère simple quote avec les doubles quote ou back quote. 4.5.5 Redirection des E/S standards On a vu que trois fichiers d E/S spéciaux existent : E/S file descriptor valeur par défaut entrée standard stdin, ou fd 0 clavier sortie standard stdout, ou fd 1 écran sortie erreur standard stderr, ou fd 2 écran On peut redéfinir (on dit aussi rediriger) ces E/S standards au niveau du shell au moyen des caractères < et > pour respectivement l entrée et la sortie standard (on peut les voir comme des flèches). Exemples d utilisation La commande bc offre la possibilité d effectuer des calculs simples en ligne. Ainsi : $ bc 5+2 7 quit On peut aussi créer un fichier donnees comportant des lignes de calcul (ici la ligne : 5+2) et demander à bc de le traiter :

30 CHAPTER 4. LE SHELL $ bc <donnees 7 De même pour envoyer le résultat des calculs dans un fichier : $ bc <donnees >resultat et pour éviter d écraser le fichier s il existait déja (cad l ouvrir en mode ajout) : $ bc <donnees >>resultat Les exemples vus ne s appliquent qu à l entrée standard et à la sortie standard. Le mécanisme est en fait plus général et s applique en particulier à la sortie erreur. Ainsi : commande 2> nom_fichier envoie la sortie erreur dans le fichier (sans espace). commande numero>&numero envoie la sortie de numéro précisé en premier paramètre dans la sortie précisée en deuxième paramètre (sans espaces nulle part). Ainsi : cc -o essais essais.c > resultat 2>&1 à ne pas confondre avec : cc -o essais essais.c 2>&1 > resultat qui ne fait vraiment pas la même chose car l ordre de déclaration est important. Dans le deuxième cas stderr prend la valeur de stdout alors que ce dernier a encore sa valeur par défaut! 4.5.6 Exécution à la chaine On peut cascader plusieurs commandes en chainant à chaque fois la sortie standard de la précédente commande avec l entrée standard de la commande suivante (figure 4.2. Ce chainage se fait gràce à des pipes (ou tubes). On peut ainsi chainer un nombre quelconque de commandes. stdin ls -l... stdout pipe stdin more stdout Figure 4.2: Exécution à la chaine de deux commandes. Exemple : $ ls -l /usr/bin more 4.5.7 Exécution en séquence On peut également exécuter en séquence des commandes. Une commande ne démarre alors que lorsque la commande précédente est achevée. Exemple : pour compiler un noyau Linux après avoir mis à jour toutes les dépendances. On sait que cela va prendre un certain temps et entrer les trois commandes d un coup permet de ne pas avoir à surveiller en permanence l évolution de la compilation. $ make dep; make clean; make zimage 4.5.8 Exécution en premier plan ou arrière plan Afin d éviter que le shell n attende la fin de la commande courante, on peut lancer celle-ci en tache de fond. Cela se fait en ajoutant un caractère & en fin de ligne. Exemple : $ gcc -Wall -o essais essais.c &