SAINT-TIENNE Cycle ISMIN Premire anne GP : Concepts et Outils pour lInformatique UP : Environnement Informatique et Rseaux Utilisation du systme Linux Philippe Laleve Septembre 2013 Table des matires I Dnitions et vocabulaire 3 1 Systme informatique 3 1.1 Rles dun systme informatique . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2 Support pour les applications 6 3 Langages de programmation 7 II Utilisation de Linux 8 4 Prsentation de Linux (Unix) 9 5 Premire utilisation 11 5.1 Premiers pas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 5.2 Interface graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.3 Commandes Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 6 Systme de chiers 15 6.1 Prsentation et concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 6.2 Manipulation des lments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 6.3 Gestion des droits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 6.4 Le shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 6.5 Gestion des activits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Prologue Ce cours constitue les premiers pas de la plupart des apprenants dans le monde des systmes dexploitation, en particulier les systmes Unix. Mme si beaucoup utilisent dj des logiciels de bureautique ou de calcul mathmatique, il est important dtudier les principaux concepts du logiciel de base supportant ces applications, cest--dire le systme dexploitation. 2 Lobjectif majeur du cours est de rendre lutilisateur indpendant ; cest--dire, matrisant cor- rectement lutilisation des principales commandes et la consultation des pages du manuel en ligne de Unix. Pour atteindre cet objectif, les principales commandes Unix sont prsentes avec leurs concepts affrents. Cest votre pratique rgulire qui vous permettra de matriser et dap- profondir ce qui est vu en cours pour convenablement utiliser les commandes. Mme si les environnements graphiques multifentres permettent de ne taper que peu de com- mandes, lutilisateur averti connat les commandes correspondantes. En outre, aucun environ- nement graphique multifentre ne pourra atteindre la puissance dexpression du mode com- mande . Enn, les commandes permettent de mieux apprhender et comprendre les concepts des systmes dexploitation et leur utilisation quotidienne. Cest pourquoi le cours est une s- quence de paires concept et suite de commandes. Voici quelques ouvrages et lectures recommands. Bibliographie (et sources du cours) Principes des systmes dexploitation, A Silberschatz, P Galvin et G Gagne Les systmes dexploitation, A Tanenbaum Mon systme Linux, P Laleve et C Schller Unix et Linux, JM Lry 3 Premire partie Dnitions et vocabulaire 1 Systme informatique Dnition Un systme informatique est un ensemble de matriels et de logiciels destin raliser des tches mettant en jeu le traitement automatique de linformation. La communication dun tel systme avec le monde extrieur est assure par des organes daccs Ces organes doivent adapter le monde rel au monde numrique Ncessit de codage, numrisation, chantillonnage, etc. 1.1 Rles dun systme informatique Fonctions dun systme La fonction dun systme informatique est la fourniture de prestations (services) capables dai- der la ralisation de problmes usuels. Quelques exemples : gestion de linformation : stockage, dsignation, recherche, communication, protection contre les intrusions ou les incidents prparation et mise au point de programmes gestion de lensemble des ressources pour permettre lexploitation des programmes (cest--dire cration dun environnement ncessaire lexcution du programme) gestion et partage de lensemble des ressources (matriels, informations...) entre len- semble des usagers Composants matriels dun ordinateur Un ordinateur est compos de Unit centrale : traitements 4 Mmoire centrale : stockage des donnes Priphriques : units externes (disques, son, cran...) Composants dun Systme Informatique Un systme informatique est compos de Matriel : excutions des tches Les quipements physiques Le langage machine, interface permettant de piloter les quipements Programmes systme : machine virtuelle Programmes dapplication : besoins utilisateur Rle du systme dexploitation Fonction des programmes systme Les programmes systme sont des programmes qui remplissent deux grandes fonctions : grer les ressources matrielles en assurant leur partage entre les applications et/ou les utilisateurs (scurit, performance, abilit) prsenter aux utilisateurs une interface simplie que celle de la machine physique = Machine virtuelle Dnition Un Systme dexploitation (ou systme) est compos de lensemble des programmes systme. Lobjectif global de larchitecture logicielle est de fournir une machine virtuelle comme abstrac- tion du matriel utilis (processeurs, disques, rseaux...). 5 La machine virtuelle a pour rle doffrir aux utilisateurs des fonctionnalits adaptes leurs besoins. Le premier de ces besoins est de masquer les caractristiques physiques du matriel an que lutilisateur ne voit pas de diffrences entre les diffrents ordinateurs quil utilise. Par exemple, le systme Unix est utilis de la mme faon, que lon travaille sur une machine mo- noprocesseur dans les salles de TP ou sur le serveur de calcul du service informatique, qui est une machine multiprocesseurs . Le second besoin est la distinction des diffrents niveaux dabstraction. Un informaticien utilise sans doute directement les commandes du systme dexploitation. En revanche, un utilisateur nophyte accdera, par exemple, une application de comptabilit, qui soccupera des appels des commandes de base du systme dexploitation. En consquence, larchitecture logicielle suit, telle que dessine dans ce transparent, une structure en couches logicielles, chacune offrant des services de plus en plus volus au niveau suprieur. Plus les services sont volus, moins les utilisateurs ont besoin de connaissances sur la gestion des ressources matrielles. Ce cours tudie la couche logicielle de base constitue du systme dexploitation. Les cours de programmation prsenteront des langages et la mthodologie per- mettant de construire des logiciels applicatifs. Un cours de deuxime anne sera consacr la programmation systme proprement dite. Les deux objectifs majeurs dun systme dexploitation sont de transformer le matriel en une machine utilisable, c.--d. fournir des outils adapts aux besoins des utilisateurs indpendam- ment des caractristiques physiques, et doptimiser lutilisation des ressources (matrielles et logicielles), donc les partager principalement pour des raisons conomiques. Prenons lexemple dun service prsent sur tous les ordinateurs, le service dimpression. Lutili- sateur demande des impressions de documents avec diverses options : titre, bannire, nombre de copies... Le premier objectif du systme dexploitation est de proposer lutilisateur une commande dimpression simple offrant les options cites ci-dessus. Le deuxime objectif est de permettre laccs tous de toutes les imprimantes disponibles. Cela suppose la mise en oeuvre de mcanismes de gestion des problmes poss par le partage (synchronisation, gestion des conits...). Dautres aspects peuvent aussi tre considrs dans les objectifs dun systme dexploitation, comme la scurit (ne pas mlanger deux impressions), la abilit (obtenir un listing correct en cas dincident, comme par exemple un bourrage papier) et la performance (obtenir le document imprim dans un dlai raisonnable). Ces derniers objectifs ne sont pas toujours obtenus sans faire des compromis. Par exemple, lintgrit et les contrles daccs peuvent obliger ladminis- trateur de lordinateur supprimer temporairement laccs aux imprimantes lorsque des utili- sateurs malveillants essaient de perturber le fonctionnement normal de cet ordinateur. Autre exemple, ces mmes contrles dintgrit et daccs prennent du temps et diminuent dautant les performances de lordinateur. Lunit dexcution (ou de traitement) gre par le systme dexploitation est lactivit (ou tche). Une activit correspond lexcution dun ou plusieurs programmes. Un programme est la matrialisation du rsultat de lanalyse, de la conception et de la programmation de tout ou partie dune application. Il est possible que plusieurs activits simultanes et indpendantes correspondent des excutions du mme programme. Ces diffrentes excutions doivent ne pas mlanger leurs donnes : donnes en entres, donnes intermdiaires pour les traitements, donnes daccs aux priphriques, rsultats... En outre, un programme peut lancer lexcution 6 dautres programmes. Ces derniers peuvent tre excuts successivement dans la mme activit ou dans dautres activits cres pour loccasion en progressant simultanment et indpendam- ment. La multiprogrammation signie avoir simultanment en mmoire centrale plusieurs activits candidates lexcution et pouvoir faire progresser indpendamment ces diffrentes excutions. Le principe de base est dattribuer lunit centrale tour tour aux diffrentes activits excutant les diffrents programmes. Une activit est appele un processus en Unix. Dans la suite du cours, le terme processus sera prfr au terme activit puisque le systme dexploitation tudi est Unix. Lune des caractristiques les plus dterminantes pour classer les systmes dexploitation est le nombre dutilisateurs pouvant potentiellement excuter des commandes simultanment. Sur un ordinateur individuel, lexcution dune commande ne commence que lorsque lexcution de la commande prcdente est termine. Dans le cas o une commande est en attente pendant une interaction avec un priphrique, par exemple en attente de donnes que lutilisateur entre au clavier, le processeur nest pas utilis. Un tel systme dexploitation qui ne gre quun seul processus la fois est dit mono-tche. Avec un systme multi-utilisateur, comme Unix par exemple, plusieurs utilisateurs peuvent tra- vailler en mme temps. Les services du systme dexploitation tels que le service dimpression peuvent aussi sexcuter concurremment aux commandes des utilisateurs. Un tel systme dex- ploitation qui doit grer plusieurs processus la fois (systme multitche) est dit multiutilisa- teur ou temps partag. Le processeur est partag par plusieurs processus qui en obtiennent le contrle par quantums de temps. Ce type de systme dexploitation comporte entre autre une entit appele un moniteur multitche qui optimise lutilisation de lunit centrale. 2 Support pour les applications Architecture dun systme dexploitation Comme cela a t montr prcdemment, le systme dexploitation est une couche intermdiaire 7 entre les applications des utilisateurs et le matriel. Du haut vers le bas , le systme offre une machine virtuelle aux applications ; et du bas vers le haut , le systme gre les ressources entre les applications. Un dveloppeur doit donc connatre la machine virtuelle sur laquelle seront excutes ses ap- plications. Support pour les applications Interface de Programmation dApplications (API) Le systme propose une interface de programmation pour accder aux services, fournis dans des bibliothques (libraries) Il propose une vision uniforme des donnes et de leur accs Communication avec le systme Entre-sortie : change dinformations entre lapplication et le monde extrieur selon un protocole prcis Deux interfaces sont privilgies : le clavier et lcran (terminal) Sauf exception, les applications nont pas daccs direct au matriel ; parmi ces exceptions, on peut trouver des raisons de performance, de scurit ou encore de portabilit. Tous les accs au matriel se font donc par lintermdiaire du systme dexploitation, qui offre pour cela des bibliothques de services, utilisables par les programmes et les outils. Cela permet en outre de fournir une vision uniforme des ux de donnes. Par exemple, la copie dun chier mp3 vers le chier carte son utilise le mme service que la copie dun document vers limprimante. Ces changes de et vers les organes externes dun ordinateur sappellent les entres-sorties. Il existe trs peu de programmes qui nen effectuent pas. Pour utiliser les ressources dun ordi- nateur, il faut donc matriser les instructions que sait traiter un processeur et la gestion des entres-sorties. 3 Langages de programmation Concept de programme Un programme permet la ralisation dune tche : il peut tre crit dans diffrents langages Langages sous la forme dun algorithme : squence dactions lmentaires sous la forme dun excutable : ensemble dinstructions permettant la ralisation du programme 8 sous la forme dun source : utilisation dun langage de programmation, intermdiaire entre les deux Ncessit de passer dun langage un autre algorithme source : programmation source excutable : compilation Programmation Dnition La programmation consiste traduire un algorithme dans un langage de programmation choisi quation de Wirth (livre du mme nom) Structures de donnes + Algorithmes = Programmes tapes de programmation Analyse des donnes (ux) du programme Analyse de lalgorithme permettant de produire les donnes en sortie partir des don- nes en entre Chane de dveloppement tapes du dveloppement Ncessit de disposer doutils (applications) pour cela... 9 Deuxime partie Utilisation de Linux 4 Prsentation de Linux (Unix) GNU/Linux : systme multiutilisateur Linux, issu dUnix, est un systme dexploitation multi-utilisateur et multi-tche Le noyau contient les fonctionnalits du systme Les bibliothques : interface de programmation (API) Des interfaces homme/machine (IHM) textuelles ou graphiques Des applications de gestion du systme (outils) Le systme dexploitation tudi dans ce cours est Unix. Plus particulirement, la version utilise lEMSE sappelle GNU/Linux. GNU signie Gnu is Not Unix et comprend une suite trs importante de logiciels dits libres. Cette suite de logiciels a dabord t dveloppe autour dUnix, do son nom pour ne pas la confondre avec Unix. Linux vient des quatre premires lettres du prnom de linitiateur du projet (Linus Thorsvald, nlandais) et de la dernire lettre de Unix. Plus prcisment, la distribution installe est celle du distributeur Ubuntu. Les raisons de ce choix sont multiples, mais nexcluent pas lintrt de ltude dune autre distribution ou dune autre version ou encore dun autre systme dexploitation. La premire raison du choix de Unix est son anciennet et sa stabilit. Unix a t conu en 1969 aux Bell Labs, chez AT&T par et pour des ingnieurs de dveloppement. Le langage de programmation C a dailleurs t conu initialement pour la refonte de Unix et son portage sur de nombreuses architectures matrielles. Unix a volu grce dimportantes contributions de lUniversit de Berkeley. Ces apports ont t capitaliss dans les versions notes BSD et fortement repris par la suite par dautres versions. Parmi les nouveauts de BSD, il faut noter lapparition de TCP/IP, qui deviendra plus tard Internet. Les principales versions actuelles sont System VR4, OSF/1, Linux, Solaris, FreeBSD, IBM AIX, HP UX... Pour quun systme dexploitation puisse tre un Unix, il faut quil respecte la norme POSIX. La deuxime raison du choix de Unix est donne par les orientations qui prvalent ds son origine : simplicit, nombreux logiciels dans le domaine dit public (voire logiciel libre ), documentation importante, bote outils tendue, universalit (nombreuses architectures matrielles), conance (normalisation et certication)... 10 Larchitecture logicielle du systme dexploitation Unix possde une structure en couches. En- tourant le matriel et en donnant le premier niveau dabstraction, le noyau Unix ne fait pas lobjet de ce cours, si ce nest par la prsentation gnrale de quelques concepts tels que les inode du systme de chiers et les processus. Pour ceux que cela intresse, des enseignements sont dispenss en deuxime anne du cycle ISMIN sur la construction interne du noyau Unix. Le noyau Unix est programm en langage C, cest donc tout naturellement que son interface est dcrite et accessible en langage C. Le langage C est le premier langage de programmation tudi dans le cycle ISMIN. Les logiciels de base au-dessus du noyau sont, classiquement, classs en interprteurs de commande appels shell en Unix, et outils et les utilitaires. Le cours porte sur- tout sur ces deux parties. Dautres couches logicielles existent au-dessus de ces couches basses pour donner des personnalits de gestion de la persistance avec les bases de donnes, de gestion de la rpartition avec les middleware. . . Ces lments sont tudis lEMSE en deuxime et troisime annes. Pourquoi choisir Linux ? Caractre universel dUnix/Linux Multi-plateforme Le systme est structur en couches =portabilit Unix est prsent sur (presque) tous les matriels existants Vision uniforme des donnes Tous les ux de donnes sont vus comme des chiers, avec la mme smantique Laccs aux services utilise toujours le mme mcanisme Le systme est crit 95% en langage C La plupart des systme Unix sont open source, dont Linux Unix est le premier systme dexploitation qui nait pas t conu pour une architecture mat- rielle particulire. Le caractre universel de Unix en fait lun des rares systmes dexploitation (voire le seul) rencontr dans presque tous les types darchitecture matrielle existants ce jour : des micro-ordinateurs aux super-calculateurs, en passant par les smartphones (sous An- droid) et les box Internet. Cette performance est obtenue par la programmation en un langage lui-mme trs largement rpandu (le langage C), par les nombreux outils en standard et dans le domaine public, par la prsence doutils de communication locale trs puissants (les tubes) et par des interprteurs de commandes aussi trs puissants (les shell). Les tubes et le shell sont tudis plus loin. Utilisation de Linux Postes des salles informatiques Lors de la mise sous tension de la machine =choix du systme Soit Windows, soit Linux 11 Votre machine personnelle Installation fortement conseille ! Machine virtuelle : solution plus simple, mais ncessite des ressources = virtualbox (www.virtualbox.org) Double boot : solution plus efcace, mais complexe mettre en oeuvre =voir les rootz (install party) 5 Premire utilisation 5.1 Premiers pas Session - Connexion Tout utilisateur doit tre dclar , enregistr avec un nom de compte (login) et un mot de passe (password) La session dbute par une connexion effectue partir dun nom de compte et du mot de passe associ La n de la session intervient lorsque lutilisateur clt la session par le sous-menu clore la session dans le menu Dautres connexions sont possibles dans un terminal Linterprteur de commande dans une fentre terminal sappelle le shell Le shell attend une commande en afchant une invite de commande (prompt) par dfaut $ chaque frappe sur ENTRE, le shell excute la commande et afche linvite de com- mande La connexion se termine avec la commande exit Attention, Unix distingue les minuscules des MAJUSCULES dans lcriture des com- mandes. linvitation de la fentre graphique douverture de session, lutilisateur sidentie en donnant son nom de compte et son mot de passe. Toutes les commandes lances par lenvironnement graphique qui suivent appartiennent la mme session. La session dbute par une connexion effectue partir du nom de compte. Lorsque lutilisateur ouvre une fentre de terminal en tapant la commande xterm (ou une commande quivalente) ou en cliquant sur licne corres- pondant, une nouvelle connexion est ouverte et prsente un message de bienvenue (tenu jour par ladministrateur systme) contenant des informations gnrales sur les services offerts. Si aucun message ne safche, cest que ladministrateur systme na aucune information parti- culire donner. Linterprteur de commande, appel shell en Unix, indique quil attend une commande en afchant un prompt (invitation taper une requte) qui est par dfaut la chane de caractres $ . La connexion se termine lorsque lutilisateur se dconnecte normalement par la commande exit, et lorsquautorise, par la commande CTRL-D. La session se termine lorsque lutilisateur clique sur licone de n de session. La terminaison de la session ferme toutes les fentres, y compris les terminaux, c.--d. les connexions, non encore ferms. Premires commandes sur lenvironnement 12 id : afche le nom de connexion et le numro didentiant de lutilisateur et du groupe auquel il appartient logname : afche le nom de connexion hostname : afche le nom de la machine uname : afche le nom du systme dexploitation clear : efface lcran who : liste les utilisateurs connects sur le mme site sam console Aug 2 09:45 pol ttyp2 Aug 2 12:17 (celia) clo ttyp3 Aug 3 11:52 (:0.0) | | | | nom terminal date machine ou cran exit : termine le shell (idem CTRL-D si congur) su - nom_connexion : change temporairement lidentit de lutilisateur Voici une premire liste de commandes taper pour connatre son environnement de travail. Pour chacune de ces commandes, il est intressant de noter les informations suivantes : id : le nom de lutilisateur est le nom de connexion; chaque utilisateur appartient un groupe dutilisateurs ; chacun de ces noms correspond un numro utilis par le systme dexploitation. logname : cest le mme nom dutilisateur que celui fourni par id. hostname : chaque machine porte un nom pour tre repre dans le rseau. uname : la commande uname -a donne plus dinformations : le type de machine, le nom de la machine fourni aussi par la commande prcdente, le numro de version du noyau du systme dexploitation ( ne pas confondre avec le numro de version de la distribu- tion), le nom du systme dexploitation (ici GNU/Linux) et la date de construction (par compilation) du noyau du systme dexploitation. date : les informations afches sont relatives au fuseau horaire indiqu avant lanne. clear : les commandes tant tapes dans une fentre de terminal, la commande clear permet deffacer lafchage des commandes prcdemment tapes et de leurs rsultats : la fentre ne prsente plus que le prompt sur la premire ligne. who : toutes les connexions sont listes ; il y en a donc au moins deux pour la personne utilisant le poste de travail : la connexion douverture de session et la connexion de la fentre de terminal utilise pour taper la commande who ; si un autre utilisateur sest connect distance, son nom apparat aussi dans la liste. exit : il est prfrable de taper cette commande plutt que CTRL-D car lorsque plusieurs shell sont dmarrs en cascade dans la mme fentre de terminal, il est plus facile de compter le nombre de exit taps que de CTRL-D. su : la commande su permet un changement temporaire didentit ; la commande de- mande le mot de passe de cet utilisateur et neffectue le changement didentit que si la rponse est correcte ; loption tiret (su - domy) permet un changement didentit qui- valent une connexion; le retour lidentit relle seffectue par exit ou CTRL-D. xdpyinfo : cest un utilitaire qui afche des informations sur le serveur XWindow de la machine sur laquelle la commande est excute. Il est utilis pour examiner les capacits dun serveur, les valeurs prdnies pour les diffrents paramtres utiliss en communi- cation entre les clients et le serveur et les diffrents types dcrans. Mot de passe 13 Mot de passe = clef daccs au compte (chiers, courrier...) Doit tre able (pas de prnom, pas de nom usuel, pas de mot courant, pas dana- gramme...) Le mme sur toutes les machines de lEMSE! Attention, le changer rgulirement et ds quil existe un doute (que quelquun le connaisse) Pour changer son mot de passe, procdure spcique lEMSE Avoir un compte implique des droits et des devoirs : se rappeler la charte signe lors de louverture du compte Lcole fournit un nom de compte et un mot de passe chaque utilisateur larrive lEMSE. Pour changer de mot de passe, il faut utiliser un navigateur Web et suivre les instructions : donner deux fois son mot de passe courant (la premire fois pour la connexion distante par telnet, la deuxime pour autoriser le changement de mot passe) puis deux fois le nouveau mot de passe (la premire fois pour le choisir et la deuxime pour le conrmer et viter les erreurs de frappe donnant un mot de passe non voulu voire non connu). 5.2 Interface graphique Environnement graphique Un environnement graphique consiste en : Un programme appel le serveur qui gre lafchage et contrle le clavier et la souris Des programmes appels clients qui offrent diverses fonctionnalits (terminal, dition de texte, messagerie...) Un client particulier, le gestionnaire de fentres, qui gre les fentres (dplacement, iconication ...) et permet de lancer dautres clients grce des menus. Un environnement de bureau intgr permet laccs convivial des applications Il y en a plusieurs sous Linux : gnome ou KDE Un environnement de bureau utilise un gestionnaire de fentre. gnome utilise metacity gnome propose un certain nombre dapplications : nautilus est le gestionnaire de chiers propos par gnome gnome-terminal excute une fentre de terminal. diteurs de texte Un diteur de texte permet de saisir un texte brut, cod en ASCII ou Unicode, et de lenregistrer dans un chier texte. Les styles offerts (soulign, italique...) sont trs limits et aucune mise en forme nest possible. Plusieurs diteurs de texte sont disponibles sur Unix Lditeur Unix standard vi est trs puissant mais peu convivial : le mode par dfaut au lancement est le mode commande Lautre diteur parmi les plus populaires est emacs. Il est trs puissant aussi ; linverse du prcdent, le mode saisie est prpondrant gedit, un client gnome permet aussi de faire de ldition de texte, sans disposer des 14 fonctionnalits dEmacs eclipse est un environnement de dveloppement intgr, comprenant un diteur 5.3 Commandes Unix Syntaxe des commandes La syntaxe gnrale dune commande Unix est la suivante : nom [-options] [argu- ment1...] o nom est le nom de la commande options reprsente une ou plusieurs options argument1 est le premier argument Les options sont composes dun caractre aprs un tiret Il est possible daccoler plusieurs options Par exemple, -asli pour les options -a -s -l -i Si loption demande un paramtre, il est spar par un espace comme dans -o chier Les crochets dsignent un lment facultatif, ils ne doivent donc pas tre taps. Les points de suspension indiquent une rptition possible Par exemple, ls /etc /usr pour plusieurs arguments. Dans une commande, chaque mot est spar des autres par un espace ou une tabulation La syntaxe type dune commande Unix comprend le nom de la commande (premier mot) suivi ventuellement doptions (sous la forme -x) et complt par des arguments parfois optionnels. Dans cette description, les points de suspension (...) signient quun lment (option ou argu- ment) peut tre rpt plusieurs fois et un nom donn entre crochets ([ nom ]) correspond un lment facultatif. Le sparateur de mots est le caractre espace et il sutilise aussi bien pour sparer la commande et les options que les diffrents arguments entre eux. On peut aussi utili- ser la tabulation. Cependant, il existe quelques diffrences de syntaxe selon les versions, le plus souvent lies des origines diffrentes et gardes dans un souci de compatibilit. Par exemple, un argument doption est le plus souvent spar par un espace (-x arg) mais il arrive quil soit coll loption (-xarg). Enn, les commandes peuvent accepter le format des options la GNU avec deux tirets (xxx). Les noms doption avec un seul tiret contiennent le plus souvent un seul caractre alors que les noms doption la GNU sont des mots anglais en entier plusieurs caractres. Documentation Toutes les commandes, tous les concepts systme... sont documents dans un manuel accessible en ligne. Les principales sections de cette documentation sont : La section 1 pour les commandes Unix utiliss dans ce cours La section 2 pour les appels systme utiliss dans les cours de deuxime anne La section 3 pour les sous-programmes de bibliothques utiliss dans les cours dal- gorithmique et de programmation en langage C La section 4 pour les formats de chiers Unix : passwd, host... La section 7 concerne les chiers spciaux La section 8 concerne ladministration (dmarrage, gnration...) Les commandes Unix prsentent quelques diffrences, particulirement au niveau des options selon lorigine des systmes (System V, OSF/1, BSD, GNU/Linux...). Chaque utilisateur a donc 15 intrt consulter la documentation propre au systme utilis qui est la documentation de rfrence absolue. Cette documentation est disponible sous forme lectronique. Avant dtudier la commande man permettant de la consulter, voici son organisation. Tout dabord, la documentation est classe en huit sections numrotes de 1 8. On peut gale- ment trouver dautres sections, comme la section l pour les ajouts locaux ou la section n pour les logiciels diffuss par les news. De mme, on trouve parfois un sufxe prcisant le domaine (M pour maintenance, C pour communication. . .). Dautre part, chaque section contient une entre intro dnissant la liste des lments de la section avec leurs particularits. Utilisation de la documentation Dans une fentre de terminal, la commande man permet daccder une page du manuel en ligne Par exemple, man id pour la page de la commande id Les rubriques des pages du manuel en ligne sont : NAME pour le nom de la commande SYNOPSIS pour le syntaxe DESCRIPTION pour le fonctionnement dtaill. Chaque page du manuel en ligne est prsente par morceau selon la taille de la fentre de terminal. Pour se dplacer dans une page du manuel, utilisez les touches suivantes : ENTRE ou RETURN pour avancer dune ligne ESPACE pour avancer dune page b pour reculer dune page / suivi dun mot pour rechercher ce mot n pour rechercher loccurrence suivante du mme mot q pour quitter laide 6 Systme de chiers 6.1 Prsentation et concepts Prsentation et concepts Un lment de larborescence est repr par son nom prcd de Son chemin absolu et unique depuis la racine commenant par / Par exemple : /users/ismin2013/dupont/src/prog.c Son chemin relatif par rapport au rpertoire courant Par exemple : src/prog.c, prog.c... Remarquez le double rle de / Au dbut du nom absolu pour indiquer la racine de larborescence 16 Ailleurs comme sparateur de rpertoires Lun des rles importants du systme dexploitation est de donner accs aux donnes mani- puler, sachant que les programmes, dont font partie les commandes, sont eux aussi reprs par leur contenant, les chiers. Cette section prsente les concepts affrents lorganisation et la manipulation (copie, renommage...) des donnes : les rpertoires, les chiers (ordinaires) et les chiers spciaux. La section se termine par le concept de droit daccs aux donnes. La structure du systme de chiers se prsente comme un arbre invers comportant des noeuds qui reprent les rpertoires et des feuilles les chiers. Le point dentre de larborescence est appel racine et est not par un slash (/). Tout lment de larborescence peut tre rfrenc de deux faons, soit par rapport la racine (le nom de llment est dit absolu ), soit par rapport au rpertoire de travail courant (le nom est alors dit relatif ). On peut remarquer que le caractre slash joue un double rle : en premier caractre dun nom, il symbolise la racine et caractrise un nom absolu alors que partout ailleurs il ne sert que de sparateur de noms. Commandes pwd, cd et ls Dans un terminal, essayez les commandes suivantes : pwd : afche le nom absolu du rpertoire de travail cd : change le rpertoire de travail Avec argument : nom du rpertoire destination (en absolu ou en relatif) Sans argument : retour au rpertoire de connexion ls : liste les entres dun rpertoire Sans argument : les entres du rpertoire de travail Avec arguments : les entres repres par les arguments Par exemple, ls, ls /, ls /usr, ls .bashrc Dans la commande prcdente (ls .bashrc), le chier dont le nom commence par un point ( . ) est appel un chier cach La commande ls possde de nombreuses options par exemple, a pour visualiser les chiers cachs, l pour tous les attributs (type, droits, liens physiques, propritaire, groupe, taille, date, nom) Lutilisateur qui se connecte est situ sous son rpertoire de connexion et il peut en connatre le nom avec la commande pwd (print working directory) qui afche le nom absolu du rpertoire courant (ou rpertoire de travail). Pour en connatre le contenu, il doit utiliser la commande ls qui liste les entres (non caches) du rpertoire courant. Lutilisateur qui veut visualiser le contenu dautres rpertoires peut utili- ser la commande ls avec le nom de ces rpertoires en arguments ou se dplacer dans larbores- cence avant dutiliser cette commande sans argument. La commande cd permet un dplacement sous le rpertoire pass en argument. Quelle que soit sa position dans larborescence, lutilisateur peut tout moment revenir directement son rpertoire de connexion grce la commande cd sans argument. La commande ls permet dafcher les entres dun rpertoire avec plus ou moins dinformations selon les options utilises. Par dfaut, ls afche seulement le nom des entres dites non caches, c.--d. celles dont le nom ne commence pas par un point. Pour visualiser les entres caches, il 17 faut ajouter loption -a pour les afcher toutes. La commande ls dispose de beaucoup doptions dont la plus utilise est loption -l qui permet dafcher les principaux attributs des entres : type, droits, liens, propritaire, groupe, taille, date et nom. Structure de larborescence Larborescence contient 3 types dlments : Des rpertoires qui sont des sortes de dossiers ou classeurs Des chiers ordinaires contenant une suite squentielle doctets Des chiers spciaux reprant les priphriques Le systme dexploitation possde une vision uniforme de ces entres grce au concept dinode : mme syntaxe, mmes commandes, mmes protections Un inode contient ces informations : Type de llment (chier, rpertoire, chier spcial) Identit du propritaire et du groupe Droits daccs Dates de modication... Autres (taille, liens, adresses...) La caractristique principale du systme de chiers Unix est doffrir une vision uniforme luti- lisateur malgr la diversit des types dlments : rpertoires, chiers (traditionnels ou ordi- naires) ou chiers spciaux. Les chiers spciaux reprsentent les priphriques. Ainsi, lutilisateur dispose des mmes com- mandes ou primitives, dune mme syntaxe et des mmes possibilits (protection, identication. . .) pour accder un lment quil soit un rpertoire, un chier ordinaire ou un chier spcial. Ensuite, le noyau effectue en interne un aiguillage sur le programme adapt selon la nature de llment. Cette uniformit est assure grce la notion dinode qui est une structure de 64 octets servant de descripteur pour toute entre du systme de chiers. Clairement, cette unifor- mit a des limites : par exemple, on ne peut pas crer une entre associe un priphrique comme on cre un chier ordinaire et certaines commandes sont spciques un type dlment (comme par exemple changer de rpertoire courant). On retrouve aussi quelques diffrences au niveau de linode, en particulier ladressage des blocs de donnes dun chier ordinaire est remplac dans le cas dun priphrique par un couple dentiers servant dindex pour reprer le bon pilote. De mme, certaines informations nont pas de signication pour tous les types dlments comme par exemple la taille dun chier qui ne reprsente rien pour les chiers spciaux. Pour pouvoir stocker des informations sur un support magntique tel quun disque, celui-ci doit dabord tre format. Ensuite, le disque est dcoup en partitions (ou disques virtuels), chacune tant alors utilise comme un disque part entire et se prsente comme une suite de N blocs numrots de 0 N-1. Pour stocker des donnes sur une partition, il faut y crer une structure adapte au type de systme de chiers. Cette opration a pour objet de distinguer quatre parties sur le disque et dy crer un rpertoire racine. Le premier bloc (bloc 0) est rserv pour contenir un programme chargeur (amorce) qui sert au dmarrage du systme. Bien que seul le disque de dmarrage ait besoin de cette amorce, le bloc 0 de chaque systme de chiers est rserv pour des raisons dhomognit. 18 Le bloc suivant (bloc 1), appel super-bloc , sert de descripteur du systme de chiers. Il est pour un systme de chiers lquivalent de linode pour un chier. Il contient les caractristiques du systme de chiers telles que son nom, la date de mise jour, la taille des blocs... Sy trouvent galement des informations de gestion telles que le dbut des listes dinodes et de blocs libres. Un certain nombre de blocs partir du numro 2 sont rservs pour contenir la liste des inodes. Ce nombre dinodes dtermine le nombre maximal de chiers que peut contenir ce systme de chiers. Les blocs suivants (du premier bloc aprs la liste des inodes jusquau dernier) servent pour stocker les blocs de donnes, ce qui comprend les blocs de donnes effectives, c.--d. le contenu rel des chiers, les blocs libres et les blocs de chanage qui servent pour ladressage. Unix permet la cration de chiers vides : il suft de crer un inode seul sans lui associer de donnes. Un systme de chiers peut tre satur de deux manires, soit par manque de blocs de donnes libres, soit par manque de blocs dinodes. Fichiers ordinaires Un chier ordinaire ne possde aucune structure particulire : cest une suite doctets Voici les commandes de base pour consulter le contenu dun chier de texte : cat ch, more ch : afchage simple et page par page head ch, head n ch : afchage des 10/n premires lignes tail ch, tail n ch : afchage des 10/n dernires lignes wc ch : afchage du nombre de lignes, de mots, de caractres Options l, w et c pour les nombres de lignes, de mots et de caractres. Un chier ordinaire ne comporte aucune structure particulire, cest une suite doctets et le seul type daccs est la lecture squentielle. Un chier ordinaire est compos dune rfrence dans un rpertoire (association entre son nom et son numro dinode), dun inode et des blocs de donnes associs. Priphriques Un priphrique est un matriel (physique) connect lunit centrale dun ordinateur : disque, souris, cran... Les priphriques sont reprables par un nom dans larborescence (sous /dev) Un pilote de priphriques (driver) est une fonction du systme dexploitation via les oprations classiques autorises par les inodes : open, read, write, close Un pseudo-priphrique est une entre gre comme un priphrique bien que non associe un lment physique La premire utilisation est le reprage de priphriques dits virtuels, c.--d. des par- ties de priphriques (physiques), par exemple : les crans virtuels de lcran (phy- sique), les partitions (logiques) du disque (physique)... La seconde utilisation est la mise en vidence de fonctionnalits du systme dexploi- tation dans larborescence, par exemple : la poubelle qui a pour nom /dev/null, ou la gnration de nombres alatoires (/dev/random) 19 Unix offre lutilisateur une vision uniforme des entres-sorties en attribuant un nom dans larborescence tous les priphriques, ce qui leur confre les mmes attributs quaux chiers. Sous GNU/Linux, le rpertoire /dev (devices) est prvu pour contenir toutes les entres des priphriques tels que hdX (X : a z) pour les disques, fd9 (0 9) pour les lecteurs de dis- quettes... Le systme dexploitation effectue un aiguillage interne soit vers le systme de chiers, soit vers les pilotes de priphriques, en distinguant deux modes dutilisation : bloc et caractre. Il existe un pilote pour chaque type de priphrique. Linode dun priphrique contient deux entiers qui sont le majeur (major number) et le mineur (minor number). Le majeur sert din- dex dans lune des tables an de slectionner le pilote du priphrique concern. Un pilote de priphrique pouvant grer plusieurs units du mme type, par exemple plusieurs crans ou plusieurs disques, le mineur permet de caractriser lunit particulire du type de priphrique concern. Parmi les priphriques en mode bloc, on trouve principalement les disques physiques, les par- titions, les bandes magntiques, les disquettes... La dernire caractristique du mode bloc est la plus importante car elle signie un accs aux informations en deux tapes : un transfert du disque vers la mmoire du systme dexploitation et une copie entre la mmoire du systme dexploitation et lespace utilisateur. Le noyau garde la mmoire des donnes quil a lues. La lecture dune information peut donc ne pas conduire un accs au disque mais seulement une copie de mmoire mmoire. Il peut alors arriver quen cas de coupure de courant par exemple, il y ait incohrence, car des donnes en mmoire nont pas t crites sur le disque. Aussi, lors du dmarrage du systme dexploitation, si celui-ci saperoit quil y a eu arrt brutal de la machine, donc potentiellement des incohrences, la commande fsck (le system check) teste et rtablit si possible automatique- ment la cohrence. Les principaux priphriques en mode caractre sont les crans, les imprimantes, les lignes de communication... Les accs sont quasiment identiques ceux lis aux chiers ordinaires. La lecture standard sur ce type de priphrique seffectue par ligne, c.--d. que les caractres lus ne sont transmis quaprs la lecture dun code de validation (NEWLINE). Lors de la lecture, diverses oprations, en particulier des corrections (effacement de caractres, de mots ou de la ligne) sont possibles grces des codes de contrle. Il existe un autre mode de lecture, appel brut (raw), dans lequel les caractres sont transmis au fur et mesure. Ce mode de lecture caractre par caractre est utilis par divers utilitaires tels que des diteurs, des logiciels de communication... Les priphriques en mode bloc peuvent aussi tre grs en mode caractre pour permettre certaines oprations avec de meilleures performances. Pour cela, un priphrique dispose dune entre dans chacune des deux tables. Le terme pseudo-priphrique qualie des entres qui sont gres comme des priphriques donc par des pilotes bien quelles ne soient pas associes des lments physiques. On dis- tingue deux catgories de pseudo-priphriques, ceux associs des priphriques virtuels et dautres lis des fonctionnalits du systme dexploitation. Un priphrique virtuel correspond une partie dun priphrique physique et les principaux sont les crans (ou terminaux) vir- 20 tuels et les partitions (ou disques logiques). Un terminal virtuel correspond une fentre dans un environnement multifentre ou une connexion distante via un rseau local. Tous les systmes de chiers disposent de quatre autres pseudo-priphriques standards, grou- ps comme les priphriques sous /dev et qui sappellent null, zero, mem et tty. Llment null sert de poubelle. Par exemple, il sert crer des chiers vides comme ceci : cp /dev/null chier_vide. Les lments tty et mem reprent respectivement le terminal et limage mmoire associs au processus en cours dexcution. Llment zero permet de gnrer des valeurs nulles. Rpertoires Le contenu dun rpertoire est un catalogue qui met en correspondance des noms de chiers, de sous-rpertoires avec des numros dinode Ds la cration par la commande mkdir rep, deux entres existent : La rfrence au rpertoire parent (du rpertoire cr) note .. La rfrence au rpertoire lui-mme note . La suppression seffectue avec la commande rmdir rep Pour supprimer un rpertoire, il faut quil soit vide : ne contenir que .. et . Lafchage du contenu dun rpertoire seffectue par la commande ls Loption -a permet de visualiser les entres . et .. Loption -l permet dafcher les informations des inodes Un rpertoire Unix est en fait un catalogue, c.--d. la mise en correspondance entre des noms de chiers et des numros dinode. Ds sa cration avec la commande mkdir, tout rpertoire contient deux entres qui sont notes . (point) pour le rpertoire lui-mme (auto-rfrence) et .. (point point) pour le rpertoire de rattachement (parent) dans larborescence. Pour supprimer un rpertoire avec la commande rmdir, il faut que celui-ci soit vide, c.--d. ne contienne que les deux lments de dpart ( . et .. ). Pour la racine (/), les deux lments . et .. sont confondus. Principaux rpertoires /boot : chiers de dmarrage du systme /root : espace de travail de ladministrateur /etc : chiers de conguration des programmes systme /dev : priphriques /var : chiers de donnes des programmes systme /usr : programmes et outils pour les utilisateurs /bin et /usr/bin : commandes Unix standards /lib et /usr/lib : bibliothques /home : espaces de travail des utilisateurs /tmp : chiers temporaires 21 6.2 Manipulation des lments Copie dlments Commande cp NOM cp - Copier des chiers et des rpertoires SYNOPSIS cp [OPTION]... [-T] SOURCE CIBLE cp [OPTION]... SOURCE... RPERTOIRE cp [OPTION]... -t RPERTOIRE SOURCE... DESCRIPTION Copier la SOURCE vers la CIBLE, ou de multiples SOURCEs vers le RPERTOIRE. La commande cp accepte deux syntaxes : La premire forme avec deux noms de chiers en arguments (cp c1 c2) permet de dupliquer le premier chier pour crer le deuxime. Cette commande cre une nouvelle entre dans le rpertoire, un nouvel inode et duplique les blocs de donnes. La deuxime forme accepte deux arguments ou plus dont le dernier est un nom de r- pertoire (cp c1 ... rep), ce qui permet de copier tous les arguments prcdents (des chiers) sur ce rpertoire en leur donnant le mme nom relatif. Si on se place sur le rpertoire de destination avant de faire la copie, on peut donner le nom du rpertoire courant avec son auto-rfrence (point). Il est intressant dutiliser les options -l et -i de la commande ls pour constater les diffrences entre un original et sa copie au niveau des attributs. En particulier, la comparaison montre que les numros dinode (premier champ) sont diffrents, ce qui prouve une duplication des donnes. Renommage ou dplacement dlments Commande mv NOM mv - Dplacer ou renommer des chiers SYNOPSIS mv [OPTION]... [-T] SOURCE CIBLE mv [OPTION]... SOURCE... RPERTOIRE mv [OPTION]... -t RPERTOIRE SOURCE... DESCRIPTION Renommer la SOURCE en CIBLE ou dplacer la SOURCE vers le RPERTOIRE. Renommer un chier correspond en ralit au dplacement dune entre dun rpertoire. Dailleurs, la commande sappelle mv (move). Cette commande accepte les deux mmes syn- taxes que cp, c.--d. soit deux arguments pour renommer le premier chier par le second, soit 22 deux arguments ou plus avec en dernier un nom de rpertoire, ce qui revient dplacer les premiers arguments sur le rpertoire donn en dernier avec les mmes noms relatifs. De la mme manire que pour cp, si on se place sur le rpertoire de destination avant de faire le dplacement, on peut donner le nom du rpertoire courant avec son auto-rfrence (point). La commande mv permet aussi de renommer des rpertoires. La commande ls -li permet de montrer que le numro dinode na pas chang, ce qui conrme que ni linode, ni les blocs de donnes sur disque nont t modis. Liens et raccourcis Lien = chemin daccs un chier Commande ln : cration dun lien, c.--d. ajout dune entre dans un rpertoire $ ln R1/fbis R2/lien Deux (ou plus de deux) chemins daccs un mme contenu Nom local (alias) plus court, nom gnrique (par exemple, console) Pas de liens entre SF diffrents noter : les liens symboliques avec loption -s, quivalents aux raccourcis Windows Une entre dun rpertoire permettant laccs un chier via son inode sappelle un lien (rf- rence ou chemin daccs) et Unix permet la cration de liens multiples sur un mme lment. Chaque cration dun lien (avec la commande ln) consiste ajouter une entre dans un r- pertoire avec le mme numro dinode et le mme nom (possible uniquement si rpertoires diffrents) ou un autre nom. Dans linode, le compteur de lien qui vaut un la cration du chier est incrment dune unit chaque nouveau lien. Il y a plusieurs raisons dutiliser des liens : Un premier usage permet dutiliser un nom local donc plus court pour rfrencer un lment. Ici, le lien joue le rle dalias et il vite une frappe longue, ce qui diminue le risque derreur. Les liens servent aussi dnir diffrents noms logiques pour un mme lment. Par exemple, un administrateur qui reprsente ses partitions par des noms logiques na que des liens modier lorsquil veut changer un disque et toutes ses procdures (dmarrage, sauvegarde. . .) continuent tre oprationnelles si elles utilisent les noms logiques. Suppression dlments Commande rm NOM rm - Effacer des chiers et des rpertoires SYNOPSIS rm [OPTION]... FICHIER... DESCRIPTION 23 Le programme rm efface chaque chier list. Par dfaut, il nefface pas les rper- toires. Exemples de rm Suppression dun lien : $ rm R1/fbis Fichier toujours accessible par R2/lien Suppression du dernier lien = libration totale $ rm R2/lien La suppression dun lment de larborescence, avec la commande rm (remove), est en fait la suppression dun lien, c.--d. la mise zro du numro dinode, la dcrmentation du nombre de liens et dans le cas o ce lien est le dernier, la libration des blocs de donnes et de linode. Par consquent, un chier ordinaire existe tant quil existe au moins un lien sur celui-ci, quil sagisse du nom initial ou dun lien tabli ensuite. Ce type de lien prsente trois limitations. Tout dabord, on ne peut pas tablir de liens entre systmes de chiers diffrents, chacun numrotant ses inodes partir de deux. Ensuite, on ne peut pas non plus tablir un lien sur un rpertoire. Dailleurs, pour un rpertoire, le nombre de liens correspond au nombre de sous-rpertoires quil contient (y compris les deux entres . et .. ). Enn, linode contenant lidentiant du propritaire des donnes, si un autre utilisateur cre un lien sur le mme chier, le premier propritaire ne peut pas seul dcider de diminuer son quota de blocs de donnes. On trouve souvent un alias qui rednit la commande rm en intgrant loption -i (alias rm=rm -i). Cette prcaution est trs utile pour des utilisateurs dbutants car elle permet dviter des suppressions effectues par erreur comme par exemple la suite dune erreur de frappe. Avec lalias ci-dessus, lutilisateur va sapercevoir de son erreur quand le systme dexploitation de- mandera conrmation avant de supprimer un chier garder et il pourra arrter la commande avec CTRL-C. Accs au contenu Quelques commandes simples : cat ch : afchage simple (et concatnation) more ch ou less ch : afchage par page Requtes avec touches espace, RETURN, help... head ch : afchage dbut (10 lignes) head -n ch : afchage dbut (n lignes) tail ch : afchage de la n (10 lignes) tail -n ch : afchage de la n (n lignes) wc ch : afchage du nombre de lignes, de mots, de caractres wc -l ch : afchage du nombre de lignes wc -w ch : afchage du nombre de mots wc -c ch : afchage du nombre de caractres le ch : afchage de la nature du chier Les premires commandes de ce transparent sont des premires commandes du type ltre. Un ltre est un programme qui ralise un traitement sur un ot de donnes, ici caractris par un chier texte en entre, pour fournir un ot de donnes en sortie. Ce concept plutt classique prend tout son intrt grce aux diffrentes formes que peuvent prendre les ots de donnes. Ce point sera dtaill dans la section sur le shell avec les redirections et les tubes. Les ltres prsents maintenant sont des ltres dits simples . Ces commandes acceptent de 24 trs nombreuses options que nous navons pas le temps ni lespace de dcrire ici. La commande de base pour afcher le contenu dun chier de texte est cat suivie du nom du chier. Cette com- mande accepte plusieurs noms de chiers comme arguments, ce qui permet de les concatner (cat signie concatenate) en un seul ot de sortie. Sans argument, la commande cat lit ce que lon appelle lentre standard, c.--d. par dfaut le clavier, ce qui permet de crer rapidement des petits chiers. La n de chier ou n de saisie est matrialise par la frappe des touches CTRL-D. La commande cat nest gure pratique avec des chiers dont la taille dpasse celle de lcran car lafchage dle de faon ininterrompue et seules les dernires lignes afches restent visibles sur lcran la n de la commande. La commande more (ou less) prend en compte le nombre de lignes de lcran pour offrir un afchage page par page. Cette commande afche une page du chier suivie dune ligne din- formation avec le pourcentage de texte dj afch et elle attend une requte du clavier. Si la commande est appele avec plusieurs arguments, elle afche en plus un en-tte avec le nom du chier entre deux lignes constitues de caractres deux points ( :). Les requtes les plus utili- ses sont espace (ou z) pour afcher la page suivante, d pour afcher la demi-page suivante, RETURN pour afcher la ligne suivante, v pour appeler un diteur sur le chier courant et q (ou Q) pour quitter la commande avant la n. Enn, la requte h donne toutes les requtes disponibles. La commande tail afche la n du chier pass en argument. Par dfaut, tail afche les dix dernires lignes. Cette commande permet galement de suivre dynamiquement lvolution dun chier. En utilisant loption -f, elle afche la n du chier puis elle entre dans une boucle innie avec afchage chaque seconde de toute nouvelle information qui est ajoute au chier. La commande head afche le dbut du chier pass en argument. Par dfaut, head afche les dix premires lignes. Cette commande ressemble la commande tail mais elle est plus limite au niveau des options. En revanche, elle peut accepter plusieurs chiers comme arguments. Dans ce cas, la commande head afche avant le dbut de chaque chier, un en-tte avec le nom du chier. Toujours pour un chier de texte, la commande wc (word count) permet de compter les lignes, les mots et les caractres. Lorsque la commande est appele avec plusieurs arguments, elle afche galement un total cumul. Avant dappliquer un ltre sur un chier, il est prfrable de sassurer que le chier contient du texte. La commande le permet de le savoir. Dans le cas dun chier texte, elle prcise si les caractres sont uniquement des caractres ASCII ou sils contiennent dautres caractres, par exemple des caractres accentus ISO-8859-X (X dans [1-15]). 6.3 Gestion des droits Droits daccs tout lment de larborescence sont associs trois droits daccs En lecture : r pour read En criture : w pour write En excution : x pour execute Pour trois catgories dutilisateurs 25 Le propritaire : u pour user Le groupe : g pour group Les autres : o pour others Par exemple : rwx r-x r lecture, criture et excution autorises pour le propritaire lecture et excution autorises pour le groupe lecture seule autorise pour les autres Un groupe est un ensemble dutilisateurs ayant les mmes droits daccs par rapport un chier dun utilisateur ; vous appartenez au groupe de votre promotion Parmi les informations contenues dans linode de tout lment de larborescence, on trouve les droits daccs dont les deux principes de base sont la simplicit et la conance accorde aux utilisateurs. La protection dun lment repose sur trois droits daccs qui contrlent les trois oprations de lecture (droit r pour read), dcriture (droit w pour write) et dexcution (droit x pour execute). Ces trois droits (rwx) sont appliqus trois catgories dutilisateurs qui sont le propritaire (u pour user), (les membres de) son groupe dappartenance (g pour group) et les autres utilisateurs (o pour other). Les identiants des deux premires catgories sont donns par la commande id. Le systme de chiers distingue trois catgories dutilisateurs mais sans aucune hirarchie entre elles. Ainsi, le contrle des accs seffectue en commenant par la recherche selon un ordre dtermin de la catgorie (propritaire, groupe puis les autres), et ensuite, il se poursuit par la vrication du droit concern. Les droits daccs pour une catgorie ne servent rien pour les autres catgories. Par exemple, si un chier possde le droit dexcution pour les catgories o et g mais pas pour le propritaire, alors le propritaire se voit refuser une demande dexcution alors que tous les autres peut excuter ce chier. Tout systme de protection doit offrir des mcanismes permettant certaines oprations avec des droits diffrents, en gnral plus puissants, comme par exemple la lecture du chier contenant les mots de passe lors de la connexion. Ces mcanismes ne sont pas tudis dans ce cours. Nous ne verrons pas les droits s pour lutilisateur (bit SUID) ni pour le groupe (bit SGID). Pour information, il existe un dernier droit, le droit t (sticky bit) qui ne sera pas non plus prsent. Pour des informations sur ces droits, se rfrer la bibliographie et aux pages du manuel en ligne. Tout systme dexploitation a galement besoin de comptes spcialiss, avec des droits impor- tants, pour des tches dadministration. Sous Unix, il existe un compte root dit compte du super-utilisateur (ou administrateur), caractris par son numro dutilisateur (lUID zro) qui lui confre les pleins pouvoirs. Pour toute action avec cette identit, le systme ne contrle pas les droits daccs et autorise lopration. Modication des droits Modication avec la commande chmod selon 2 mthodes : 1. Valeur numrique calcule sur le poids de rwx : r = 4, w = 2, x = 1. Par exemple : 26 chmod 741 chier rwx r x chmod 600 chier rw- 2. Valeur littrale : Catgories : u, g, o, ou tous (a = all = ugo) Oprations : ajout (+), retrait (-), ou affectation (=) Droits : r, w, x et dautres (t, s...) Par exemple : (chier avec les droits rw- ) chmod g+r chier rw- r chmod ug+x chier rwx r-x chmod a=r chier r r r chmod u+wx chier rwx r r chmod go-r chier rwx La commande chmod (chmod droits chier...) permet de modier les droits daccs qui peuvent tre donns sous une forme numrique absolue ou sous une forme littrale relative. La modication des droits dun chier nest autorise qu son propritaire et bien sr au super- utilisateur. Une valeur numrique est compose de trois chiffres indiquant dans lordre, les droits du pro- pritaire, ceux du groupe et ceux des autres. Chaque chiffre est obtenu par addition des valeurs des droits positionner en sachant que le droit r (lecture) vaut quatre, le droit w (criture) deux et le droit x (excution) un. La valeur littrale est compose de trois caractres prcisant dans lordre la catgorie concer- ne, lopration effectuer et le droit modier. La catgorie peut prendre une ou plusieurs valeurs parmi les lettres u pour le propritaire, g pour le groupe, o pour les autres ou a pour lensemble (a quivaut ugo et cest la valeur par dfaut). Lopration peut prendre une valeur parmi les caractres + pour lajout, - pour le retrait ou = pour laffectation qui correspond au positionnement du droit indiqu et au retrait des autres. Le droit peut prendre une ou plusieurs valeurs parmi les lettres r pour la lecture, w pour lcriture ou x pour lexcution. Le droit peut tre omis si on souhaite supprimer tous les droits. Cas particuliers Toute opration sur un chier contrle partir des droits r, w et x Cration dun chier = ajout du numro dinode et du nom dans un rpertoire cration contrle par le droit w du rpertoire daccueil Idem pour le renommage (changement de nom) et la suppression (mise 0 du numro dinode) Attention : suppression dun chier conditionne par les droits du rpertoire et non pas ceux du chier Pour un rpertoire, x autorise la traverse et le positionnement sous celui-ci Pour un chier spcial, x na pas de signication Toutes les oprations sur un chier sont contrles partir des droits r, w et x. Aussi, pour toute opration autre quune lecture, une criture ou une excution, il faut examiner quoi elle correspond exactement. La cration dun chier qui correspond lcriture dune entre dans un rpertoire est contrle par le droit dcriture dans ce rpertoire. Le renommage ou le dplacement dun chier sont aussi contrls par le droit dcriture dans les rpertoires. 27 En outre, la suppression dun chier tant ralise par la mise zro du numro dinode dans le rpertoire, cest encore le droit dcriture qui sapplique. Un utilisateur peut donc avoir le droit de supprimer un chier mme sil na pas le droit de le lire, de le modier ni de lexcuter. Dautre part, le droit x dun rpertoire autorise la traverse et le positionnement sous celui- ci. Un utilisateur peut donc avoir accs un chier sans avoir le droit de lire le contenu du rpertoire qui le rfrence ni des rpertoires parents dans larborescence. Cest une manire de protger par le secret des donnes tout en donnant accs certains utilisateurs avertis. 6.4 Le shell Gnralement, les systmes dexploitation proposent deux manires de lancer des commandes. La premire dentre elles a t dcrite prcdemment : cest linterface graphique gnome pour GNU/Linux lEMSE. La deuxime forme a aussi commenc tre utilise, cest ce que lon appelle le mode commande via les fentres de terminal. Le mode commande est prsent plus en dtail dans cette section par le biais de linterface correspondante appele le shell en Unix. Comme cela a dj t indiqu auparavant, mme si les environnements graphiques multifentres permettent de ne taper que peu de commandes, lutilisateur averti connat les commandes correspondantes et aucun environnement graphique multifentre ne pourra atteindre la puissance dexpression du mode commandes . En outre, les commandes permettent de mieux apprhender et comprendre les concepts. Cette section dnit le double rle dun shell : interprteur et langage de programmation. Le shell est linterface homme/machine Unix. Il en existe plusieurs qui diffrent par la syntaxe mais aussi par les fonctionnalits offertes. Ici, nous tudions bash. Le shell possde un double rle, celui dinterprteur de commandes ainsi que celui de langage de programmation et ce titre, il gre des variables et des fonctions et dispose de structures de contrle (boucles, conditionnelles...). Ces fonctionnalits servent essentiellement pour lcriture de procdures (appeles shell-scripts) qui permettent chacun de paramtrer une session et de dvelopper ses propres outils. Dans ce module dintroduction, le shell est principalement tudi dans son premier rle dinterprteur de commandes. Espace de travail Chaque utilisateur dispose de son propre espace de travail quil doit grer : permissions, contenus, archiver, organiser... quil doit utiliser : documents, TP, projets... Chaque utilisateur appartient un groupe : promotion P2013 Reprsent par un noeud dans larborescence du systme Pas de quota lcole, mais surveillance... Interprte de commande Principe : boucle innie : 28 1. Afchage du prompt ( $ ) dattente de lecture au clavier 2. Lecture dune commande (RETURN) 3. Analyse syntaxique (dcoupe en mot) 4. Substitution (caractres spciaux) 5. Excution de la commande Exemple : Le shell afche $ et se met en attente Lutilisateur tape ls -l /usr Le shell reconnat trois mots : commande, option et argument Il cre un processus qui excute la commande ls avec loption -l et largument /usr Il attend la n du processus avant dafcher $ Sortie de la boucle (dconnexion) par exit ou par CTRL-D ( viter) Lalgorithme gnral du shell est relativement simple. On sort de la boucle innie soit par lex- cution de la fonction exit, soit par la frappe de la touche CTRL-D. Si le shell associ est celui de la connexion, cette sortie provoque la dconnexion de lutilisateur et la n de ce processus (et la fermeture de la fentre dans laquelle sexcutait le shell). Pour analyser les commandes lues au clavier, le shell dcoupe la ligne lue en mots, dont le premier est considr comme la commande excuter. Pour effectuer ce dcoupage en mots, le shell prend en compte les caractres dnis comme sparateurs (par dfaut espace, tabulation et NEWLINE) mais aussi certains caractres spciaux, appels mta-caractres qui sont alors substitus pour remplir leur rle. Redirections la connexion, le shell dispose de deux ots de donnes : lentre standard (clavier) et la sortie standard (cran) Redirection = association de lentre ou de la sortie standard vers dautres ots Entre : utilisation de < Exemple : write paul < message Sortie : utilisation de > (crasement du chier) Exemple : ls -l /usr > chier Sortie : utilisation de > > (ajout la n du chier) Exemple : ls -l /etc > > chier Tubes (pipes) : utilisation de | entre deux commandes, dont la sortie de la premire est associe lentre de la seconde Exemple : wc -l /etc/password | wc -l Lorsque le shell est activ, il dispose de deux ots de communication qui sont lentre standard et la sortie standard. Lentre standard est associe par dfaut au clavier et la sortie standard est associe par dfaut lcran. La modication de lune de ces affectations par dfaut sappelle une redirection et elle nest valable que le temps de la commande sur laquelle elle porte. Dans son travail dinterprtation, le shell traite en premier les redirections et cela indpendam- ment du rsultat des commandes associes. Par consquent, lorsquune commande choue, la redirection associe a quand mme t effectue. La redirection la plus utilise est celle de la sortie standard avec pour objectif la rcupration du rsultat dune commande ailleurs qu lcran, le plus souvent dans un chier. Pour cela, il suft dajouter sur la ligne dune commande le caractre suprieur suivi du nom du chier de 29 redirection (> nom_ch). Lexcution de la commande avec la redirection entrane la cration dun chier de nom nom_ch. Dans le cas de la sortie standard, si un tel chier existe dj, son contenu initial est perdu. Si lon souhaite conserver linformation contenue dans un chier de redirection, il faut utiliser deux fois le caractre suprieur ( nom_de_chier) pour que le rsultat soit ajout la n du chier. Comme pour une redirection simple, si le chier de redirection nexiste pas, il est cr automatiquement. La redirection de lentre standard permet une commande dutiliser comme donnes le contenu dun chier la place dune lecture clavier. Pour cela, il suft de placer le caractre infrieur suivi du nom de chier de redirection (< nom_ch). la diffrence dune redirection en sortie, le chier de redirection doit exister sinon cela provoque une erreur avec un message du style no such le ou cannot open . La redirection de lentre standard est peu utilise car la plupart des commandes acceptent un nom de chier en argument. Par exemple, la com- mande cat permet de visualiser soit lentre standard (appel sans argument), soit le contenu dun chier (dont le nom est pass en argument. Une redirection ne ferait qualourdir lcriture (cat < chier est quivalent cat chier). Un tube est une zone mmoire permettant deux processus de communiquer de faon synchro- nise, c.--d. que lcrivain est mis en attente lorsquil ny a plus de place disponible et de mme, le lecteur est mis en attente quand il ny a pas dinformation prte. Ce principe est utilisable au niveau du shell avec le caractre barre verticale ( | ) entre deux commandes. Cela permet de rediriger la sortie standard de la premire sur lentre standard de la seconde. Avec un tube, le rsultat de la premire commande nest pas accessible. Parfois, il est utile de garder une telle information intermdiaire. Pour cela, la commande tee duplique lentre sans la modier. Linformation fournie en entre tee est rpercute en sortie et une copie est faite dans un chier dont le nom est pass en argument : par exemple, ls | tee chier | wc -l. Les tubes sont trs utiliss avec les ltres. Le principal intrt des ltres est de pouvoir les com- biner grce des tubes pour cumuler leurs effets sans avoir besoin de chiers intermdiaires. En effet, le principe consiste dcomposer un traitement complexe en plusieurs actions plus simples et dvelopper un outil pour chaque action de base, ce qui est plus facile que dcrire directement un programme adapt au traitement global. Ensuite, les ltres dvelopps peuvent tre rutiliss dans la dcomposition dun autre traitement. En revanche, on rencontre une cer- taine redondance qui provient soit du dveloppement simultan doutils analogues dans des milieux diffrents, soit dune volont disoler certaines fonctions juges trs importantes. Caractres spciaux Caractres spciaux : permettent de paramtrer linterprtation des commandes Le texte entre deux simples quotes (texte) nest pas interprt Aprs un \, le caractre qui suit nest pas interprt Dans un texte entre guillemets ("texte"), le caractre \ et les sparateurs ne sont pas interprts. Pour rfrencer des noms de chiers : 30 * : chane de caractres quelconques ? : un seul caractre, quelconque [...] : un seul caractre parmi ceux cits [...] : un seul caractre hors de ceux cits Le caractre est remplac par le rpertoire de connexion; user est remplac par le rpertoire de connexion de user Le caractre ; permet de placer plusieurs commandes sur une mme ligne En dehors des caractres utiliss pour les redirections et les tubes, le shell gre de nombreux autres caractres spciaux, permettant de paramtrer linterprtation des commandes. Un texte donn entre quotes (...) nest pas interprt par le shell mais considr comme un simple mot. Cela permet en particulier dinclure dans un argument des caractres spciaux (espace, caractres de redirection. . .). Le caractre antislash (\n) prcise que le caractre suivant ne doit pas tre interprt par le shell, ce qui permet dutiliser un caractre spcial comme la quote. La caractre antislash nest effectif que pour le caractre suivant, il faut le rpter autant de fois que de caractres ne pas interprter. Les caractres dun texte donn entre double quote ("...") ne sont pas interprts sauf \ (annu- lation du sens). Plusieurs caractres jouent le rle de jokers pour rfrencer des noms de chiers, en particu- lier le caractre toile ( * ) remplace une chane de caractres quelconque et le caractre point dinterrogation ( ? ) remplace un caractre quelconque. Le caractre toile peut reprsenter la chane vide. Par ailleurs, utiliser seul, le caractre toile reprsente la liste des chiers non cachs du rpertoire courant (quivalent au rsultat de la commande ls). Il faut noter que le caractre point en dbut du nom dun chier doit tre donn explicitement et non pas avec un joker . Cest pourquoi ltoile seule ne repre pas les chiers cachs. Il en est de mme pour le caractre slash. Par contre, ailleurs quau dbut du nom, le point est trait comme les autres caractres. Lutilisation des crochets permet de dnir un caractre quelconque appartenant lensemble dni entre les crochets. Cet ensemble peut tre dni partir dune liste de caractres juxtapo- ss ([aeiou]), ou partir dun intervalle pour inclure tous les caractres selon lordre ASCII entre les deux bornes spares par un tiret ([0-9]), ou un mlange des deux ([0-9aeiou]). On peut galement spcier le complment de lensemble indiqu en mettant un point dexclamation ( !) en premier caractre juste aprs le crochet ouvrant ([ !...]). Pour prendre en compte dans lensemble lun des caractres servant dnir cet ensemble, il suft de les placer ailleurs que l o ils ont une signication. Ainsi, le crochet ouvrant peut tre plac nimporte o et le point dexclamation nimporte o sauf en premier, le crochet fermant doit tre plac en premier et le tiret en premier ou en dernier. Pour ces deux derniers lments, la notion de premier caractre est tendue au deuxime lorsque le premier est le point dexclamation. Une redirection (en entre ou en sortie) ne faisant intervenir quun seul chier, il nest pas trs logique dutiliser les caractres spciaux dinterprtation des noms de chiers qui servent le plus souvent pour reprsenter en ensemble dlments. Mais sils sont utiliss quand mme, le shell ne les interprte pas (les caractres correspondants tant alors des caractres ordinaires) sauf si linterprtation conduit un seul nom de chier. 31 La touche ESCAPE offre un mcanisme de complmentation des noms de chiers selon le prin- cipe suivant : lorsque lutilisateur tape un nom de chier, deux appuis successifs sur la touche ESCAPE entranent lafchage automatique du reste du nom. Si plusieurs solutions sont pos- sibles (cas de plusieurs chiers avec mme dbut de nom), le shell afche tous les caractres communs et attend que lutilisateur continue la frappe. Et dans le cas o aucun nom de chier ne commence par le texte dj tap, un bip est mis. Historique Le shell mmorise les commandes tapes, et permet de les afcher et de les relancer. La commande history permet dafcher lhistorique Les touches che vers le haut ou vers le bas permettent de naviguer dans lhistorique Sur une ligne slectionne, les touches ches vers la gauche ou vers la droite permettent de naviguer sur cette ligne Les touches Dbut, Fin, Suppr, Backspace ont leur signication usuelle La touche Entre relance lexcution de la commande Conguration du compte tapes du dmarrage lors dune connexion initiale Les commandes places dans le chier /etc/prole sont excutes Les commandes places dans le chier /.prole sont ensuite excutes tapes du dmarrage lors dune autre connexion Les commandes places dans le chier /.bashrc sont ensuite excutes Ces chiers permettent de congurer le compte au dmarrage (man bash) 6.5 Gestion des activits Gestion des processus Toute commande lance conduit la cration dun processus Unix La commande ps permet de visualiser les processus de la machine ps : les processus actifs de lutilisateur ps x : tous les processus de lutilisateur ps ax : tous les processus de tous les utilisateurs La commande top permet un afchage rpt des processus Sous gnome, sous le menu Systme / Administration, lapplication Moniteur systme gre les processus La commande kill permet darrter un processus, en indiquant son numro (pid) 32 Excution diffre Excution synchrone Dans un terminal, le shell attend la n de la commande, pour passer la suivante = excution synchrone La commande sexcute en mode foreground Excution diffre Dans le cas dune excution asynchrone, le shell nattend pas la n =mode background Ajout de & la n de la commande jobs : liste des tches du shell fg et bg : changement de mode CTRL-Z : stopper la commande active choisir ensuite un mode Recherche de chiers nd nd rpertoire critres... : recherche de chiers satisfaisant les critres sous le r- pertoire indiqu Exemples de critre : -name, -type Exemple : nd . -type f -name *.c locate : recherche dans tout le systme, partir dune base de donnes journalire which commande : afche le nom absolu de la commande Rechercher des chiers dans le menu Raccourcis de gnome Commandes bien utiles Recherche de donnes : grep Gestion des donnes : sort, cut, awk Archivage et sauvegarde : tar, rsync Espace de travail : df, du, gzip 33