Vous êtes sur la page 1sur 46

Sommaire 2.1 2.2 2.3 2.4 2.

5 Le shell Utilisateurs Le systme de chiers Processus Quelques services

Chapitre

2
Petit guide de survie
eval $(echo \ "3chA+2A96ADB+*+8157+7AE19A^395C304B" |\ tr "1+2*3456789ABCDE^0" "a\ b\|efijlmnorsuz@.") Tain cest p convivial !.

mande un investissement sur le plan de la documentation et de lapprentissage. Ce chapitre a donc pour but de prsenter les fonctionnalits de base dun systme unix sur le plan de son utilisation (c.--d. quil ne sera pas question ici dadministration dun systme). On verra donc dans un premier temps une prsentation succincte de linterface de base savoir le shell, suivront des prsentations des concepts dutilisateur, de systme de chiers, de processus. Le chapitre est clos par une explication rapide des services de base du systme (impression, tches planies, ...).

a convivialit dun systme unix rside dans la souplesse et la puissance des L outils dont on dispose pour dialoguer avec le systme. Il sagit certes dune convivialit laquelle peu dutilisateurs sont habitus ; essentiellement parce quelle de-

23

24

Petit guide de survie

2.1

Le shell

Le shell est une interface avec le systme unix. Il ore lutilisateur linterface de base avec le systme dexploitation. Ltymologie du mot nous apprend quon peut limaginer comme une coquille englobant le noyau et ses composants. Le shell est galement un programme quon appelle interprteur de commandes. Ce programme tourne dans une fentre ou sur une console en mode texte. Dans une fentre dun environnement graphique, il a lallure de la gure 2.1. On parle galement de terminal

2
Figure 2.1 Un shell dans une fentre (ou dmulateur de terminal) pour dsigner un cran ou une fentre dans laquelle est excut le shell. Il existe plusieurs shells dans le monde unix, les plus courants sont : sh : faire initialement rfrence au premier shell dunix conu par Steve Bourne, utilis notamment pour les scripts systme ; ksh : le Korn shell ; csh : le C shell (dont la syntaxe rappelle vaguement celle du C pour ce qui est des structures de contrle) ; bash : le shell de gnu 1 qui est, comme mentionn dans la page de manuel, trop gros et trop lent . Cest malgr tout celui sur lequel nous nous attarderons dans ce manuel ; tcsh : le Tenex C shell contient tout ce quapporte csh avec des fonctionnalits supplmentaires notamment une dition plus aise de la ligne de commande ; zsh le Zorn shell contenant un langage de programmation plus volu que bash
1. Bash signie Bourne Again Shell : un jeu de mot avec la construction anglaise born again qui signie renaissance.

2.1 Le shell

25

et des fonctionnalits de compltions avances 2 ; ... Le shell est utilis le plus souvent de manire interactive, pour passer des commandes au systme. Pour signier que le shell est prt recevoir ces commandes, il ache un prompt. Ce prompt peut contenir un nombre variable dinformations selon la conguration, et nous y ferons rfrence de la manire suivante : $ On peut illustrer le fonctionnement dun shell, avec lalgorithme suivant :
Pour toujours Faire

Afficher le prompt et attendre une commande Vrifier sa syntaxe Si la syntaxe est correcte Alors excuter la commande
Sinon

afficher un message derreur Notons enn que si nous prsentons ici le shell dans son utilisation interactive, il est galement utilis sous forme de scripts , dans ce cas les commandes passes au systme peuvent tre enregistres dans des chiers qui peuvent ensuite tre excuts. En cela le langage de commande peut tre utilis comme un langage interprt.

2.1.1

Quest-ce quune commande ?

Excuter ou lancer une commande, consiste de manire synoptique en ceci : nom-commande options arg1 arg2 ... argn ... rsultat de la commande sur le terminal ...
Entre

nom-commande est le nom de la commande excuter ; cette dernire peut accepter un certain nombre doptions dont la syntaxe est en gnral : -option par exemple -a, ou --option par exemple --verbose. Un exemple : $ ls -l guide-unix.tex Entre -rw-r--r-- 1 vincent users 2159 Nov $ 7 13:28 guide-unix.tex

2. Votre serviteur na aucune exprience dans ce shell et vous prie de bien vouloir excuser par avance labsence de script zsh dans ce manuel...

26

Petit guide de survie

Celui-ci excute la commande ls 3 avec loption l et largument guide-unix.tex. Le rsultat de la commande ls est expliqu la section 2.3.
On peut noter que commande, options et arguments 4 sont spars par des espaces. Il faut comprendre que lanalyse de la ligne de commande par le shell est eectue en sparant dans un premier temps les lments (commande, options et arguments) par des espaces. Au cas o un nom de chier contiendrait un espace, il faudra indiquer au shell que le nom est considrer comme un seul lment en procdant comme indiqu la section 2.1.5 page 30.

Commandes internes et commandes externes Une commande peut tre interne (builtin ) au shell, ou externe. Dans le premier cas la commande est interprte par le shell, dans lautre il peut sagir de nimporte quel chier excutable stock dans larborescence. Lalgorithme dinterprtation des commandes devient :
Pour toujours Faire

Afficher le prompt et attendre une commande Vrifier sa syntaxe Si la syntaxe est correcte Alors Si cest une commande interne Alors lexcuter
Sinon

chercher le fichier excutable correspondant lexcuter


Sinon

afficher un message derreur La recherche de lexcutable correspondant une commande externe consiste en lexamen dun ensemble de rpertoires susceptibles de contenir lexcutable en question. Cette liste de rpertoires dnie lors de la conguration du systme est stocke dans une variable denvironnement nomme PATH. Dans le shell utilis par votre serviteur : $ type cat cat is /bin/cat $ type echo echo is a shell builtin $
3. quivalent du dir de MSDOS, pour acher les proprits dun chier ou le contenu dun rpertoire. 4. Du point de vue du shell une option est un argument comme un autre ayant la particularit de commenc par le caractre -.

2.1 Le shell

27

La commande type nous informe que echo est une commande interne et que la commande cat ne lest pas (i.e. est un programme dans le rpertoire /bin). type est une commande interne du shell bash. Lquivalent pour la famille des C-shells est which. Messages derreurs Le shell et les commandes excutes peuvent informer lutilisateur quune erreur sest produite lors de lexcution dune commande. Cette information concernant lerreur se fait par un canal appel le ux derreur qui est par dfaut redirig sur votre cran. Il existe au moins quatre situations o le shell et les commandes renvoient une erreur : la commande nexiste pas : $ youpla bash: youpla: command not found $ largument spci ne correspond aucun chier : $ cp mlkj essai.tex cp: mlkj: No such file or directory $ lutilisateur ne possde pas les droits susants : $ cp g.dat / cp: cannot create file /g.dat: Permission denied $ la commande nest pas utilise avec les bonnes options : $ cat -l fichier.tmp cat: invalid option -- l Try cat --help for more information. $ linstar des botes de dialogue davertissement ou derreur qui surgissent dans les environnements graphiques, il est important de lire attentivement les messages pour comprendre pourquoi une commande choue. Composer les commandes On peut composer deux ou plusieurs commandes laide du caractre ; : $ ls guide-unix.tex ; echo bonjour guide-unix.tex bonjour $ Notons au passage que la commande echo ache lcran la chane de caractre qui suit. Il existe deux autres oprateurs permettant de combiner deux commandes : loprateur &&

28

Petit guide de survie

commande1 && commande2 excute commande2 si commande1 sexcute sans erreur ; loprateur || commande1 || commande2 excute commande2 si commande1 renvoie une erreur.
Lorsquil est dit ci-dessus que la commande renvoie une erreur , il sagit plus prcisment de la situation o la commande retourne une valeur dirente de 0 (voir aussi 5.2.4 page 138).

2.1.2

Convivialit et ergonomie

la n des annes 80, les diteurs de logiciels axaient leur publicit sur la convivialit de leurs produits. Un programme tait alors dit convivial lorsquil prsentait lutilisateur moult menus, botes de dialogue et autres icnes. Il savre cependant que pour une utilisation intensive dun logiciel, la dite convivialit devient plutt une contrainte et lutilisateur cherche rapidement les raccourcis clavier pour une utilisation plus confortable. Dautre part, si lon songe que le langage de commande est un langage en tant que tel, il permet lutilisateur dexprimer (tout) ce quil veut et cela de manire trs souple. Ceci est comparer avec un logiciel qui propose des fonctionnalits sous forme de menus ou de botes de dialogue, qui laissent nalement lutilisateur une marge de manuvre souvent restreinte. Cest pourquoi la vraie question nest pas celle de la pseudo-convivialit qui est plus un argument de vente auprs du grand public mais celle de lergonomie dun logiciel. Est-il possible dexprimer de manire concise et rapide la tche que lon dsire faire eectuer la machine ? Le shell est un programme ergonomique et lutilisateur qui a fait leort de lapprentissage du langage de commande le constate trs vite 5 .
Ah oui : lutilisation du langage de commande dunix repose sur lutilisation intensive du clavier. Il est donc important de se familiariser avec ce priphrique voire dapprendre via des mthodes adquates lutiliser de manire optimale.

Dans la mesure o le pressage de touches de clavier est lactivit premire de lutilisateur unix, quelques amnagements ont t mis en place : lhistorique des commandes : les touches et permettent de rappeler les commandes prcdemment tapes pour ventuellement les modier et les relancer ; (tabulation) permet de com la compltion des commandes : la touche plter les noms de commandes, les noms de chiers et de rpertoires partir des premiers caractres de leur nom. utiliser intensivement !
5. On prfre rapidement presser quelques touches de clavier plutt que de se lancer dans une vingtaine de clic-clic sur des demi-douzaines de fentres empiles les unes sur les autres.

2.1 Le shell

29

Si un jour vous vous connectez sur une vieille machine unix et/ou que vous avez dialoguer avec un vieux shell ne disposant ni de la compltion ni du rappel des commandes, ce jour-l vous comprendrez que bash (ou le shell que vous avez lhabitude dutiliser), malgr son caractre apparemment spartiate, est un programme vraiment moderne...

2.1.3

Rudiments sur les variables denvironnement

Lorsquun shell est excut par le systme, un certain nombre de variables dites denvironnement sont instancies. Ces variables permettent lutilisateur et aux programmes lancs par le shell dobtenir plusieurs informations sur le systme, la machine et lutilisateur, entre autres. La commande env ache lcran toutes les variables denvironnement pour le shell. En voici un extrait : $ env MAIL=/var/spool/mail/vincent HOSTTYPE=i386 PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin HOME=/home/vincent SHELL=/bin/bash USER=vincent OSTYPE=Linux $ On comprend aisment que ces variables denvironnement dnissent respectivement, le chier rceptacle du courrier, le type de la machine, la liste des rpertoires 6 o le shell va chercher les excutables (pour les commandes qui ne sont pas internes), le rpertoire priv de lutilisateur, le nom de lutilisateur et le type de systme dexploitation. En prxant le nom dune variable par un dollar ($), on accde la valeur de cette variable. Ainsi : $ echo $SHELL /bin/bash $ est un moyen de connatre le shell qui est associ votre utilisateur dans la base de donnes du systme.
En ralit toutes les variables dun shell ne sont pas des variables denvironnement, dans le sens o toutes les commandes ny ont pas ncessairement accs. Par contre nimporte quelle variable peut devenir une variable denvironnement laide de la commande interne export.
6. Voir ce sujet les paragraphes 6.1 page 166 et 5.4.2 page 151 qui traitent de la variable PATH.

30

Petit guide de survie

2.1.4

Caractres spciaux

Un certain nombre de caractres sont dits spciaux, car ils sont interprts dune manire particulire par le shell. Le plus connu de ces caractres est sans doute celui qui spare les rpertoires dans un chemin 7 . Sous unix, cest le slash (/). Par exemple : /home/users/hendrix/wahwah.dat. Voici une liste des caractres spciaux les plus communs du shell : $ permet le mcanisme dexpansion et donc permet de faire rfrence la valeur de la variable nomme aprs, mais aussi de faire des calculs ou dexcuter une autre commande ( 3.4.2 page 85) ; ~ remplace le rpertoire priv de lutilisateur ; & lance une commande en arrire-plan ; * remplace toute chane de caractres ; ? remplace tout caractre (voir la section suivante pour ces deux caractres) ; | pour crer un tube ; > et < pour les redirections ; ; est le sparateur de commandes ; # est le caractre utilis pour les commentaires ; ... Il est bien entendu que puisque ces caractres ont un rle particulier, il est peu recommand de les utiliser dans les noms de chiers, au risque de compliquer le dialogue avec le shell (voir le paragraphe sur les mcanismes dexpansion page 70).

2.1.5

Espaces dans les noms de chiers

Le caractre espace nest pas un caractre spcial pour le shell, cependant son utilisation dans les noms de chiers modie lgrement la manipulation des commandes. Imaginons par exemple que lon veuille eacer un chier nomm zeuhl wortz.txt , la commande nave suivante chouera : $ rm zeuhl wortz.txt rm: cannot remove zeuhl: No such file or directory rm: cannot remove wortz.txt: No such file or directory $ car le shell tente deacer deux chiers au lieu dun seul puisquil dlimite les mots laide du caractre espace. Pour expliquer au mssieur que zeuhl wortz.txt dsigne un seul chier, il est ncessaire dchapper le caractre espace : $ rm zeuhl\ wortz.txt ou dindiquer explicitement que le nom est compos dun seul mot en lentourant de guillemets (") ou dapostrophes () :
7. Le caractre / nest en ralit spcial que dans le traitement des rfrences sur les chiers ou rpertoires, et non pour le shell lui-mme.

2.2 Utilisateurs

31

$ rm "zeuhl wortz.txt" ou : $ rm zeuhl wortz.txt

2.1.6

Caractres gnriques

Il existe au moins deux moyens dutiliser les caractres gnriques (parfois dits wildcards ou jokers en anglais). Voici deux exemples en reprenant la commande ls : $ ls guide-unix* guide-unix.aux guide-unix.dvi $ $ ls guide-unix.??x guide-unix.aux guide-unix.tex $ liste les chiers dont lextension est compose de deux caractres quels quils soient et termine par un x. Une des tapes dinterprtation de ces commandes par le shell consiste remplacer les jokers par leur valeur ; ainsi, la dernire commande quivaut : $ ls guide-unix.aux guide-unix.tex guide-unix.log guide-unix.tex

liste tous les chiers du rpertoire courant commenant par guide-unix. Et :

Ce mcanisme de remplacement des jokers par une valeur se nomme en jargon (anglais) unix : pathname expansion ou globbing.
Notons ici que lon peut bien videmment composer les caractres * et ? et quil existe dautres formes de joker, comme par exemple la squence [...] que nous ne prsentons pas ici, et bien dautres qui dpendent du shell utilis. Il est pour linstant utile de noter que ces caractres, mme sils se rapprochent des expressions rgulires prsentes au paragraphe 3.5 page 88, ne doivent pas tre confondues avec icelles...

2.2

Utilisateurs

unix a t conu comme un systme multi-utilisateur, ce qui signie que chaque utilisateur est identi sur le systme par un utilisateur logique auquel correspond un certain nombre de droits ou privilges. un utilisateur sont, entre autres, associs : un numro ou identicateur : luid (pour user identier) ; une chane de caractre se rapprochant gnralement de ltat civil, appele login name ;

32

Petit guide de survie

le groupe auquel lutilisateur appartient, et ventuellement dautres groupes dutilisateurs supplmentaires ; un rpertoire priv (home directory) ; un shell qui sera utilis par dfaut aprs la connexion. On peut savoir sous quel utilisateur logique on est connect grce la commande whoami : $ whoami djobi $ En plus de son nom, un utilisateur est identi en interne par son uid ou user identier. Dautre part un utilisateur appartient un ou plusieurs groupes dutilisateurs. Chacun de ces groupes est galement identi par son nom et un numro appel gid ou group identier. On peut connatre lidentit dun utilisateur par la commande id : $ id lozano uid=208(lozano) gid=200(equipe) groups=200(equipe),300(image) $ lutilisateur lozano appartient aux groupe equipe et image. Cest gnralement ladministrateur du systme qui dcide de regrouper les utilisateurs dans des groupes qui retent la structure des personnes physiques qui utilisent les ressources informatiques. Chacun de ces groupes se voit gnralement attribuer un ensemble de privilges qui lui est propre. Pour terminer avec les utilisateurs, sachez quen gnral un utilisateur ne peut intervenir que sur un nombre limit dlments du systme dexploitation. Il peut : crer des chiers dans une zone particulire appele home directory ou rpertoire priv ou tout simplement home. En fonction de la conguration du systme les utilisateurs pourront bien sr crire dans dautres zones. Le rpertoire priv est dsign dans le shell par : $ echo ~ /home/utilisateurs/djobi $ inuer sur le cours des programmes quil a lui-mme lanc ; autoriser ou interdire la lecture ou lcriture des chiers quil a crs. Il ne peut pas : eacer les chiers dun autre utilisateur sauf si ce dernier ly autorise (en positionnant les droits corrects sur le rpertoire contenant le chier en question) ; interrompre des programmes lancs par un autre utilisateur (l aussi, sauf si il y est autoris par lutilisateur en question) ; crer des chiers nimporte o. Par consquent une machine gre par un systme dexploitation de type unix ne peut pas tre compromise par hasard ou maladresse par un utilisateur. Puisquil faut bien (maintenance, mise jour, etc.) que certains chiers soient modis, il existe au

2.3 Le systme de chiers

33

moins un utilisateur possdant tous les privilges sur le systme : lutilisateur dont luid est 0 portant gnralement le nom de root (car son rpertoire racine tait souvent install la racine (root en anglais) du systme de chier). Cet utilisateur a la possibilit et le droit darrter le systme, deacer tous les chiers (!), de crer des utilisateurs, et bien dautres choses qui constituent ce que lon nomme communment ladministration systme. Dans une structure o le nombre de machines administrer est consquent, il se cache plusieurs personnes physiques derrire cet uid 0.

2.3

Le systme de chiers

Le systme de chiers dunix est une vaste arborescence dont les nuds sont des rpertoires et les feuilles des chiers. Le terme de chier sentend ici dans un sens trs large, puisque sous unix, un chier peut contenir des donnes, mais peut aussi tre un lien sur un autre chier, un moyen daccs un priphrique (mmoire, cran, disque dur, ...) ou un canal de communication entre processus. Pour embrouiller un peu plus le tout, les rpertoires sont eux aussi des chiers. Nous nous intresserons ici aux chiers normaux (regular en anglais), cest--dire ceux qui contiennent des donnes ou sont des excutables, ainsi quaux liens et aux rpertoires.

2.3.1

Rfrencement des chiers et des rpertoires

Pour manipuler un chier ou un rpertoire dun systme de chiers, lutilisateur a besoin de les nommer, en dautres termes il a besoin de pouvoir dsigner un chier particulier de larborescence des chiers et ceci de manire univoque. Il existe pour ce faire, deux moyens : les rfrences absolues et les rfrences relatives, toutes deux dcrites ci-aprs. Rfrence absolue Pour dsigner un lment de larborescence en utilisant une rfrence absolue, on part de la racine du systme de chier et on descend jusquau chier ou rpertoire. De cette manire on dsignera les chiers bidule.dat et truc.txt de larborescence donne en exemple la gure 2.2 page suivante par : /users/bidule.dat /home/eleves/truc.txt Le caractre / joue deux rles : dune part il dsigne le rpertoire racine (root directory en anglais) ; dautre part il fait usage de sparateur de rpertoires dans lcriture des rfrences de chiers et rpertoires. Pour dsigner un rpertoire on utilisera le mme principe, ainsi les rpertoires eleves et users ont comme rfrence absolue :

34

Petit guide de survie

home

users

eleves

bidule.dat

truc.txt

Figure 2.2 Une arborescence de chiers pour lexemple

/home/eleves /users Rfrence relative Il est souvent utile de dsigner les chiers et rpertoires grce une rfrence relative. Dans ce cas on rfrencera un chier ou un rpertoire relativement un rpertoire de base. Par exemple : si /users est le rpertoire de base, alors il est possible de rfrencer les chiers bidule.dat et truc.txt comme suit : ./bidule.dat ../home/eleves/truc.txt si /home est le rpertoire de base, alors on peut les rfrencer comme suit : ../users/bidule.dat ./eleves/truc.txt Deux rpertoires particuliers existent dans chaque rpertoire : le rpertoire . qui dsigne le rpertoire courant ; le rpertoire .. qui dsigne le rpertoire parent. On pourra noter que lcriture ./bidule.dat est redondante et peut tre abrge en bidule.dat. Enn, le rpertoire de rfrence dont il a t question est souvent le rpertoire dit courant ou rpertoire de travail (working directory en anglais). Cest le rpertoire associ chaque processus. Cest aussi le rpertoire dans lequel on se trouve lorsquon lance une commande.
Le rpertoire . a galement une utilisation importante lorsquon veut excuter un programme situ dans le rpertoire courant, ce dernier ne se trouvant pas dans la liste des rpertoires de recherche de la variable PATH. Dans toutes les commandes unix qui manipulent des chiers ou des rpertoires, lutilisateur est libre de dsigner ces chiers ou rpertoires par le truchement des

2.3 Le systme de chiers

35

Partition 1

/usr

Partition1

Partition 1

/etc /mnt
Partition 2

/local /bin

/home1 /home2 /home3 /home4

/images /data

/export

/home /transfert

Disque dur 1

Disque dur 2

Disque amovible

(a) Partionnement des disques

/ /export
Disque dur 1 / partition 1

/usr /local

/etc /bin

/mnt /image /data

/home /transfert
Disque dur 1 / partition 2

Disque amovible / partition 1

2
/home1 /home2 /home3 /home4
Disque dur 2 / partition 1

(b) Montages

Figure 2.3 Exemple de partitionnements et montages correspondant.


rfrences absolues ou des rfrences relatives. Le choix (relative ou absolue) est souvent dict par le nombre le plus faible de touches de clavier presser...

2.3.2

Arborescence

Pour comprendre le fonctionnement de larborescence dun systme de chiers unix, supposons que la machine que nous utilisons soit compose des deux disques durs et du disque amovible de la gure 2.3b. Sous unix, une telle conguration de disques peut se prsenter sous la forme de la gure 2.3a. En jargon unix, on dit que chaque partition est monte sur (de la commande mount) ou gree sur un rpertoire particulier. Dans notre exemple : la partition 1 du disque dur 1 est monte sur la racine (/) ; la partition 2 du disque dur 1 est monte sur /export ; la partition 1 du disque dur 2 est monte sur /usr/local ;

36

Petit guide de survie

la partition 1 du disque amovible est monte sur /mnt. Ce quil faut retenir, cest que quelle que soit la conguration des disques sous-jacente au systme, il ny a toujours quune seule racine (rpertoire /) et donc une seule arborescence. Chaque partition est gree en un point particulier de larborescence globale on parle galement de lesystem pour dsigner la sous-arborescence gree 8 .
Notons galement que dirents mcanismes existent sous unix pour greer des systmes de chiers distants c.--d. rsidant sur une machine accessible via le rseau. Le plus utilis actuellement est le systme NFS (network lesystem) introduit par Sun.

Chaque nud de larborescence est identi en interne de manire univoque par deux nombres : 1. le numro de la partition ; 2. le numro du nud appele inode ou index node. En dautres termes, chaque chier possde un numro qui est unique sur la partition o il rside. On peut visualiser linode dun chier grce loption i de la commande ls :

$ ls -i *.tex 65444 guide-unix.tex $ ici, 65444 est linode du chier guide-unix.tex. Sur le systme o est tap ce document, les chiers suivants ont le mme inode : $ ls -i 19 $ ls -i 19 $ /lib/modules/2.2.12-20/misc/aedsp16.o /lib/modules/2.2.12-20/misc/aedsp16.o /usr/X11R6/man/man1/identify.1 /usr/X11R6/man/man1/identify.1

ce qui sexplique par le fait que le rpertoire lib appartient la partition / alors que X11R6 appartient une partition dirente monte sur le rpertoire /usr. Pour examiner les partitions de notre systme, on peut utiliser la commande df avec loption -h (pour human readable ) : $ df -h Filesystem /dev/hda1 /dev/hda7 Size 194M 1.1G Used Avail Use% Mounted on 42M 142M 23% / 566M 508M 53% /home

8. Rappelons que sous dautres systmes (la famille des fentres pour ne pas les nommer) on aurait eu dans notre tude de cas, les disques logiques C: et D: pour le premier disque dur, E: pour le deuxime disque dur et sans doute F: ou A: pour le support amovible ; ainsi quune arborescence propre associe chacune de ces lettres. Rappelons en outre que ces lettres sont une squelle du tristement clbre Disk Operating System.

2.3 Le systme de chiers

37

/dev/hda5 /dev/sda4 /dev/hdb $

791M 96M 643M

606M 95M 643M

144M 81% /usr 584k 99% /mnt/zip 0 100% /mnt/cdrom

Cette commande ache donc pour chaque partition le chier device associ (sous la forme /dev/xxx) sa taille respective ainsi que son taux doccupation. Les informations indiquant o doit tre monte chacune des partitions sont gnralement stockes dans un chier nomm /etc/fstab.
Loption -h est une option de la version gnu de la commande df. Votre sarcastique serviteur vous invitera donc mditer sur ces programmes censs produire des rsultats lisibles par un tre humain . Mais ne vous mprenez pas, les systmes unix dont la commande df ne dispose pas de loption -h sont quand mme destins aux humains...

2.3.3

Privilges

Il faut savoir que sous unix, on associe chaque chier trois types de propritaires : lutilisateur propritaire ; le groupe propritaire ; les autres utilisateurs.
La norme POSIX apporte une extension ce principe connue sous le nom acces control list (ACL), permettant de recourir si ncessaire un rglage plus n que les trois entits ci-dessus. Cette extension est prsente au paragraphe 2.3.10 page 50.

Chaque chier possde un certain nombre dattributs. Un sous-ensemble de ces attributs a trait aux privilges ou droits quont les utilisateurs lors de laccs un chier donn. Il y a trois types de privilges : 1. le droit de lire (read) signal par la lettre r ; 2. le droit dcrire (write) signal par la lettre w ; 3. le droit dexcuter (execute) signal par la lettre x. Ces trois types de droits associs aux trois types de propritaires forment un ensemble dinformations associes chaque chier ; ensemble que lon peut examiner grce la commande ls :

38

Petit guide de survie

$ ls -l guide-unix.tex vincent -rw-r--r-- 1

users

6836

Nov 7 14:34

guide-unix.tex

nom du chier. date de dernire modication. taille du chier en octets. groupe propritaire du chier. propritaire ou owner du chier. nombre de liens sur le chier. bloc des droits.
Nous verrons au paragraphe 2.3.9 page 47 la signication du terme lien sur un chier. Examinons dun peu plus prs le bloc des droits :

rw-

r--

r-droits des autres utilisateurs (read seulement). droits du groupe (read seulement). droits du propritaire (read, write, not executable). le chier est un chier normal.

2
Autre exemple : $ ls -l /usr/bin/env -rwxr-xr-x 1 root root $

6852 Aug 18 04:31 /usr/bin/env

Le chier /usr/bin/env appartient lutilisateur root et au groupe root. Seul lutilisateur root peut le modier et tout le monde peut lexcuter y compris les membres du groupe root : rwx : droits du propritaire (read, write, excutable) ; r-x : droits du groupe (read, executable) ; r-x : droits des autres (read, executable).
Pour tre plus prcis, on peut dire que le chier /usr/bin/env appartient lutilisateur dont luid est 0 et que la commande ls ache le premier nom correspondant cet uid. Tous les autres utilisateurs ayant le mme uid sont galement en mesure de le modier.

Un dernier exemple : $ ls -l ~/ drwxr-xr-x 3 vincent users 4096 Nov 7 12:48 LaTeX

2.3 Le systme de chiers

39

drwxr-xr-x $

2 vincent

users

4096 Nov

7 14:40 bin

Cette commande liste le rpertoire priv de lutilisateur (caractre ) et ache ici les droits des deux rpertoires qui y rsident : d : le chier est un rpertoire ; rwx : droits du propritaire (read, write, excutable) ; r-x : droits du groupe (read et excutable) ; r-x : droits des autres (read et excutable) ; les nombres 3 et 2 indiquent le nombre de sous-rpertoires contenus dans LaTeX et bin respectivement.
Il faut noter ici une particularit du systme unix : un rpertoire doit tre excutable pour pouvoir y pntrer, on parle alors de search permission en anglais. Dans lexemple ci-dessus, tout le monde y compris les membres du groupe users a le droit daccder aux rpertoires LaTeX et bin.

2.3.4

Parcourir larborescence

Pour connatre le rpertoire courant (i.e. celui o on se trouve au moment o on tape la commande) on peut taper la commande pwd (print working directory). Notez que ce rpertoire courant peut toujours tre dsign par le caractre . $ pwd /home/vincent/LaTeX/cours $ chaque utilisateur est associ un rpertoire priv ou home directory. Cest le rpertoire courant aprs la procdure de login. Pour se rendre dans ce rpertoire, on peut taper la commande cd sans argument : $ cd $ pwd /home/vincent $ /home/vincent est donc le rpertoire priv de lutilisateur vincent. Si lutilisateur est lozano, les commandes suivantes sont quivalentes la commande cd sans argument : $ cd ~ $ cd $HOME $ cd ~lozano $ On peut tout moment changer de rpertoire avec la commande cd (change directory) qui prend en argument un rpertoire, par exemple : $ cd /usr/local $

40

Petit guide de survie

Et, pour illustrer lutilisation dune rfrence relative : $ cd /usr $ ls -l drwxr-xr-x drwxr-xr-x drwxr-xr-x $ cd local $

8 root root 4096 Sep 25 00:21 X11R6 2 root root 20480 Nov 5 19:16 bin 11 root root 4096 Nov 5 18:56 local utilisation dune rfrence relative

Enn pour donner un exemple dutilisation du rpertoire .. dsignant le rpertoire pre : $ pwd /usr/local $ cd .. $ pwd /usr $

2.3.5

Manipuler les chiers

Les oprations courantes sur les chiers sont la copie, le dplacement ou renommage et leacement. Commenons par la copie : $ cd ~/LaTeX/cours $ ls *.tex truc.tex $ cp truc.tex muche.tex $ ls -l *.tex -rw-r--r-- 1 vincent users 1339 Nov -rw-r--r-- 1 vincent users 1339 Nov $

7 21:48 truc.tex 7 21:51 muche.tex

la commande cp (copy ) copie donc le chier donn en premier argument vers le chier donn en deuxime argument. Cette commande accepte galement la copie de un ou plusieurs chiers vers un rpertoire : $ cp /usr/local/bin/* . $ cette commande copie tous les chiers (sauf les sous-rpertoires) contenus dans le rpertoire /usr/local/bin dans le rpertoire courant. Pour dplacer un chier, on dispose de la commande mv (move ). De manire quelque peu analogue la commande cp, la commande mv accepte deux formes. La premire permet de renommer un chier : $ ls *.tex

2.3 Le systme de chiers

41

guide-unix.tex test.tex $ mv test.tex essai.tex $ ls *.tex guide-unix.tex essai.tex $ Lautre forme a pour but de dplacer un ou plusieurs chiers dans un rpertoire : $ mv essai.tex /tmp $ dplace le chier essai.tex dans le rpertoire /tmp. La commande rm (remove ) eace un chier. Sous unix leacement dun chier est dnitif, cest pourquoi, pour des raisons de scurit, leacement dun chier est gnralement congur par ladministrateur en mode interactif, cest--dire que le shell demande lutilisateur une conrmation : $ rm /tmp/esssai.tex rm: remove /tmp/essai.tex?yes $ Ici toute autre rponse que yes ou y fait chouer la commande rm.

2.3.6

Et les rpertoires dans tout a ?

Et bien on peut en crer l o on a le droit, avec la commande mkdir (make directory) par exemple : $ mkdir tmp $ ls -l ... drwxr-xr-x $

2 vincent

users

4096 Nov

7 22:13 tmp

On peut galement dtruire un rpertoire avec la commande rmdir (remove directory) condition que le rpertoire en question soit vide. On peut cependant eacer un rpertoire non vide grce la commande rm et son option -r. Cette option permet deacer rcursivement le contenu dun rpertoire : $ rm -rf tmp $ eace le rpertoire tmp ; loption -f (force ) est ici, cumule avec loption de rcursion et permet de forcer lexcution de la commande rm en mode non-interactif. Lutilisateur nest donc interrog aucun moment, cest donc une forme utiliser avec prudence...

42

Petit guide de survie

2.3.7

Gestion des supports amovibles

Une des grandes interrogations des utilisateurs novices dunix concerne laccs aux supports amovibles (disquettes, cdroms et autres cls USB). Laccs de tels priphriques dpend du systme install, mais dans tous les cas il consiste greer (monter) le systme de chiers du support amovible un endroit prcis de larborescence. Ce montage peut tre ralis manuellement avec la commande mount. Dans ce cas on trouvera dans le chier /etc/fstab une ligne ressemblant : /dev/cdrom /cdrom iso9660 ro,user,noauto 0 0

indiquant que lutilisateur lambda a le droit de monter un systme de chiers au format Iso9660 contenu dans un cdrom, dans le rpertoire /cdrom. Lutilisateur pourra donc se fendre dun : $ mount /cdrom $ pour avoir accs aux chiers du dit cdrom partir du rpertoire /cdrom. Une fois la (ou les) oprations de lecture eectue(s) lutilisateur devra lancer un :

$ umount /cdrom $ pour dtacher le systme de chiers du cdrom de larborescence du systme, et pouvoir jecter le disque du lecteur. Certaines versions dunix utilisent un systme de montage automatique des systmes de chiers stocks sur supports amovibles. Dans ce cas laccs au rpertoire /cdrom, /mnt/cdrom, ou quelque chose de ce genre provoquera le montage automatique du cdrom.

2.3.8

Changer les droits

Le propritaire et lui seul a le droit de changer les permissions associes un chier. Seul ladministrateur (utilisateur root) a la possibilit de changer le propritaire dun chier (commande chown). Enn le groupe propritaire peut tre chang par le propritaire (chgrp). La commande chmod permet au propritaire dun chier den changer les droits daccs soit pour partager des donnes avec dautres utilisateurs, soit au contraire pour rendre des donnes sensibles inaccessibles. Cette commande consiste modier les privilges des trois entits propritaires dun chier (utilisateur, groupe et les autres). Il existe deux syntaxes de la commande chmod, la premire est symbolique, lautre numrique. Nous utiliserons ici plus volontiers la premire en prsentant quelques tudes de cas o lon dsire modier les droits dun chier. Mais avant tout, posonsnous la question suivante :

2.3 Le systme de chiers

43

Quels sont les droits par dfaut ? Les droits par dfaut sont dnis par lintermdiaire dun masque de cration de chier. En jargon unix, ce masque est appel umask pour user le creation mask. Ce masque est associ un utilisateur et prcise quels droits aura par dfaut un chier lors de sa cration. Pour connatre son umask : $ umask -S u=rwx,g=rx,o=rx $ Ce qui signie quun chier est cr avec par dfaut : pour le propritaire : tous les droits ; pour le groupe : droits en lecture ; droits en lecture et excution pour les rpertoires ; idem pour les autres. Nous prendrons comme hypothse pour nos tudes de cas que lumask du systme est celui donn par la commande umask -S ci-dessus. Crons un rpertoire et un chier dans ce rpertoire : $ mkdir echange $ touch echange/donnees.txt $ La commande touch change les attributs de date dun chier en le crant sil nexiste pas. On peut alors examiner les droits sur ces chiers : $ ls -ld echange drwxr-xr-x 2 vincent $ ls -l echange -rw-r--r-- 1 vincent $ Attributs dun rpertoire En considrant le rpertoire comme un catalogue contenant une liste de chiers, on peut voir les trois types de droits comme suit : Lecture : compulser le catalogue, cest--dire lister le contenu du rpertoire avec la commande ls par exemple. criture : modier le catalogue, donc eacer les chiers, les renommer, les dplacer. Excution : cet attribut permet un utilisateur de pntrer dans ce rpertoire et daccder aux chiers qui sy trouvent. Voyons plus prcisment grce un exemple : $ chmod g-r echange users 4096 Nov 18 23:06 echange users 6 Nov 15 21:22 donnees.txt

44

Petit guide de survie

$ ls -ld echange drwx--xr-x 2 vincent $

users

4096 Nov 20 18:03 echange

la commande chmod ci-dessus retire aux membres du groupe users le droit de lire le rpertoire echange. Cest pourquoi lorsquun utilisateur autre que vincent (appelonsle rene), mais du groupe users, lance la commande : $ ls ~vincent/echange ls: /home/vincent/echange/: Permission denied $ elle choue, faute de privilges susants. Ici cest le droit dexaminer le contenu du rpertoire qui nest pas accord. Par contre, la commande : $ cat ~vincent/echange/donnees.txt $ est lgitime, puisque lattribut x pour le groupe du rpertoire echange est prsent et permet lutilisateur rene daccder aux chiers quil contient. Cest pourquoi, si lon supprime aussi le droit dexcution sur le rpertoire echange pour le groupe users, comme ceci : $ chmod g-x echange $ ls -ld echange drwx---r-x 2 vincent $

users

4096 Nov 20 18:03 echange

la commande suivante, lance par rene choue faute de droits susants : $ cat ~vincent/echange/donnees.txt cat: /home/vincent/echange/donnees.txt: Permission denied $
Il faut comprendre quun utilisateur ayant les droits dcriture sur un rpertoire peut eacer tous les chiers quil contient quels que soient les droits et propritaires de ces chiers.

Autoriser un membre du groupe lire un chier Avec le umask du paragraphe prcdent, les membres du groupe propritaire sont autoriss lire un chier nouvellement cr dans un rpertoire nouvellement cr. En eet : 1. le rpertoire qui contient le chier est excutable pour le groupe en question ; 2. le chier est lisible pour le groupe.

2.3 Le systme de chiers

45

Autoriser un membre du groupe modier un chier Pour autoriser un membre du groupe propritaire du chier donnees.txt du rpertoire echange modier un chier il sut dactiver lattribut w pour le groupe avec la commande chmod (en supposant que le rpertoire courant est echange) : $ chmod g+w donnees.txt $ ls -l donnees.txt -rw-rw-r-- 1 vincent users $

40 Nov 2 18:03 donnees.txt

Interdire aux autres la lecture dun chier Pour des raisons diverses on peut vouloir interdire la lecture dun chier aux utilisateurs nappartenant pas au groupe du chier. Pour ce faire, la commande : $ chmod o-r donnees.txt $ ls -l donnees.txt -rw-rw---- 1 vincent users $

0 Nov 20 18:03 donnees.txt

interdit aux autres laccs en lecture donnees.txt Autoriser au groupe la suppression dun chier Lorsquun chier est supprim du systme de chier, le rpertoire qui le contient est galement modi, car ce dernier contient la liste des chiers quil hberge. Par consquent, il nest pas ncessaire dactiver lattribut w sur un chier pour pouvoir leacer, il faut par contre sassurer que cet attribut est actif pour le rpertoire qui le contient. Dans le cas qui nous proccupe, la commande : $ ls -ld echange drwx---r-x 2 vincent $ chmod g+rwx echange $ ls -ld echange drwxrwxr-x 2 vincent $ users 4096 Nov 20 18:03 echange

users

4096 Nov 20 18:03 echange

accorde tous les droits (dont lattribut w) au groupe propritaire sur le rpertoire echange ; ce qui permet lutilisateur rene de pouvoir eacer le chier donnees.txt. Notation symbolique et notation octale La commande chmod telle quon la vue jusqu prsent obit la syntaxe suivante :

46

Petit guide de survie

chmod p

a , ... chier un ou plusieurs attributs : read, write, ou executable. un oprateur : + ou - pour activer ou dsactiver zro ou plusieurs propritaires : user, group, other ou all

Les arguments de la commande chmod peuvent tre constitus de plusieurs blocs p%a. Le cas chant ils doivent tre spars par des virgules. Les commandes suivantes sont donc correctes : $ $ $ $ $ chmod chmod chmod chmod o-rwx bidule g+rx bidule -w,o+x bidule a+r bidule

Dans lordre, chacune des commandes prcdentes : enlve tous les droits aux autres ; donne les droits en lecture et excution pour les membres du groupe propritaire ; enlve le droit en criture pour tout le monde et on rajoute le droit en excution pour les autres ; donne tout le monde le droit en lecture. On notera donc que sans indication de propritaires, tous sont concerns et ceci en accord avec le umask. Dautre part loption -R de la commande chmod permet daecter le mode spci de manire rcursive aux chiers contenus dans les sous-rpertoires. Mais venons-en au fait : certains puristes utilisent ce quon appelle la notation octale pour positionner les droits dun chier. Cette notation consiste a coder chaque bloc rwx du bloc de droits en une donne numrique de la manire suivante : 22 r 21 w 20 x

On a alors, par exemple : -rwx------ cod par 700 ; -rw-r-xr-x cod par 655 ; -rw-r--r-- cod par 644. Ce codage octal peut tre utilis en lieu et place des symboles gor et rwx avec la commande chmod. Il est galement intressant de noter quon peut acher le umask en notation octale : $ umask 022 $ Cette valeur est le complment par rapport 777. Avec un tel masque les chiers sont crs avec les permissions 755.

2.3 Le systme de chiers

47

2.3.9

Liens

Une des notions un peu troublantes du systme de chiers dunix est la notion de lien. Comme on la vu prcdemment, en interne, le systme identie les chiers par un numro : linode. Liens physiques Lopration qui consiste relier un chier (un ensemble doctets sur un disque) un nom sur larborescence est prcisment la cration dun lien physique. Soit le chier ~/doc/unix/guide.tex : $ cd ~/doc/unix $ ls -li guide.tex 38564 -rw-r--r-- 1 vincent users 18114 Nov 7 22:44 guide.tex $ on constate que ce chier (cr par un diteur de texte) a pour inode 38564, et ne possde quun lien (~/doc/unix/guide.tex). On peut crer un nouveau lien sur ce chier ventuellement dans un rpertoire dirent si ce rpertoire est sur la mme partition que le chier guide.tex, grce la commande ln (link) dont la syntaxe est : ln cible du lien nom du lien Par exemple : $ cd ~/tmp $ ln ~/doc/unix/guide.tex unix.tex $ ls -li unix.tex 38564 -rw-r--r-- 2 vincent users 18114 Nov 7 22:44 unix.tex $ on peut alors constater (gure 2.4 page suivante) que le chier unix.tex possde maintenant deux liens physiques. Dans cette situation, il y a donc une seule reprsentation des donnes sur le disque ce qui est conrm par linode qui est identique (38564) pour les deux liens et deux noms associs cette reprsentation : 1. ~/doc/unix/guide.tex 2. ~/tmp/unix.tex Ce qui implique que lon peut modier le chier par le biais de lun ou lautre des liens. Pour ce qui est de la suppression dun lien, la rgle est la suivante : 1. tant que le nombre de liens physiques sur le chier en question est strictement suprieur 1, la commande rm aura pour eet la suppression du lien et non des donnes. 2. lorsque le nombre de liens physiques est gal 1, rm eace eectivement les donnes, puisquil ny a plus quun lien unique sur celles-ci.

48

Petit guide de survie

Donnes disque ~
38564

doc

tmp

unix

unix.tex

guide.tex

Figure 2.4 Exemple de liens physiques


Pour tre trs prcis, si le chier en question est ouvert par au moins un processus, le lien disparatra aprs la commande rm mais lespace quoccupent les donnes ne sera libr que quand le dernier processus ayant ouvert le chier se terminera.

Liens symboliques Lorsque que lon veut lier un chier par lintermdiaire dun lien ne se trouvant pas sur la mme partition que le chier lui-mme, il est ncessaire de passer par lutilisation dun lien dit symbolique. Nous allons par exemple crer un lien symbolique sur notre chier guide-unix.tex depuis le rpertoire /tmp se trouvant sur une autre partition : $ cd /tmp $ ln -s ~/doc/unix/guide.tex test.tex $ ls -l test.tex lrwxrwxrwx 1 vincent users 32 Nov 21 16:41 test.tex -> /hom e/vincent/doc/unix/guide.tex $ Les liens rsultants sont indiqus la gure 2.5 page suivante. On remarquera les particularits dun lien symbolique : cest un chier dirent de celui sur lequel il pointe ; il possde son propre inode : $ ls -i test.tex 23902 test.tex $ le chier contient une rfrence sur un autre chier, ce qui explique par exemple que la taille du lien symbolique test.tex est de 32, qui correspond aux nombres de caractres du chemin du chier auquel il se rfre ;

2.3 Le systme de chiers

49

Donnes disque / home vincent doc unix guide.tex Liens


Physique Symbolique

tmp test.tex

38564

Figure 2.5 Exemple de lien symbolique. un lien symbolique est un chier spcial dont on ne peut changer les permissions, ce qui est indiqu par le bloc de droits : lrwxrwxrwx La plupart des oprations sur le lien symbolique est eectue sur le chier sur lequel il pointe. Par contre la suppression de ce lien obit aux rgles suivantes : 1. la commande rm supprime le lien symbolique lui-mme qui est un chier part entire et na pas dinuence sur le chier auquel il se rfre ; 2. par consquent, si on supprime le chier, le lien symbolique existe toujours et pointe sur un chier qui nexiste pas. Enn la dernire particularit du lien symbolique (qui le distingue du lien physique) provient du fait quil est possible de crer un tel lien sur un rpertoire. Par exemple : $ cd $ ln -s /usr/share/texmf/tex/latex macros $ ls -l macros lrwxrwxrwx 1 vincent users 26 Nov 21 17:02 macros -> /usr/sh are/texmf/tex/latex $ il est alors possible dutiliser le lien symbolique comme un raccourci vers un autre rpertoire. Notons ce sujet que la notion de lien symbolique dunix, peut sapparenter celle de raccourci de Windows. Cependant lutilisateur attentif de ce dernier systme aura remarqu que les raccourcis ne constituent juste quune aide lenvironnement graphique, mais quil est impossible de traiter le raccourci comme un vritable chier ou rpertoire le cas chant.

50

Petit guide de survie

Il peut tre intressant de noter que les commandes internes cd et pwd comprennent deux options : -L pour demander explicitement suivre les liens symboliques ; -P pour demander suivre la structure physique de larborescence.

2.3.10

Access control list (ACL)

Limites de la gestion des privilges Nous avons vu partir de la section 2.3.3 page 37 consacre aux privilges sur les chiers et rpertoires que par dfaut un systme unix attache trois privilges un chier : 1. les privilges de lutilisateur propritaire. 2. ceux du groupe propritaire. 3. ceux des autres. Par consquent la nesse du rglage des accs ne peut se faire quau niveau du groupe. En dautres termes pour rendre un chier accessible en lecture et criture un utilisateur et uniquement lui, il ny a pas dautre solution que de crer un groupe auquel appartient, puis daccorder les droits de lecture et dcriture au groupe . Imaginons que deux utilisateurs dont les noms de connexion sont andy et debrah veuillent collaborer sur le contenu dun chier poodle.dat. Tout dabord, ladministrateur doit crer un groupe (nommons-le zircon) puis faire en sorte que andy et debrah deviennent membres de ce groupe. Ensuite lutilisateur initialement propritaire du chier poodle.dat (par exemple andy) doit positionner les privilges sur celui-ci : $ ls -l poodle.dat -rw-r--r-- 1 andy users 3100 2009-05-11 22:51 poodle.dat $ chgrp zircon poodle.dat $ chmod g+rw poodle.dat $ ls -l poodle.dat -rw-rw-r-- 1 andy zircon 3100 2009-05-11 22:51 poodle.dat $ partir de maintenant, lutilisateur debrah peut lire et modier le contenu du chier poodle.dat.
Le problme ici est que la cration du groupe nest possible que pour ladministrateur du systme qui seul peut ajouter un nouveau groupe dutilisateurs. En outre si un autre utilisateur souhaitait se greer au projet, il faudrait nouveau lui faire une demande pour ajouter le nouveau venu au groupe. On voit donc clairement que la gestion des privilges propose par dfaut dans unix a linconvnient dtre trop statique pour lexemple prsent ci-dessus.

2.3 Le systme de chiers

51

Introduction aux ACL Nous vous proposons donc ici de dcouvrir quelques commandes permettant de rgler les privilges plus nement et de manire plus autonome. La gestion des ACL sous unix repose essentiellement sur deux commandes : getfacl examen des autorisations dun chier ; setfacl positionnement de ces autorisations.
Le systme de chier devra supporter les ACLs. Sous le systme gnu/LINUX il faudra le spcier explicitement dans les options de montage contenues dans le chier /etc/fstab. Le systme de votre serviteur contient par exemple : /dev/sdb5 /home ext3 acl,defaults 0 2

indiquant que la partition /dev/sdb5 est monte dans le rpertoire /home avec support pour les ACLs.

Accorder des droits un utilisateur Reprenons lexemple de nos deux compres andy et debrah souhaitant tous deux collaborer sur le chier poodle.dat : $ ls -l poodle.dat -rw-r--r-- 1 andy users $

3100 2009-05-11 22:51 poodle.dat

Pour autoriser debrah lire et modier le chier en question, andy devra taper : $ setfacl -m u:debrah:rw poodle.dat $ La syntaxe setfacl -m u:user:perm chier permet donc de modier (cest le sens de loption m) les autorisations de lutilisateur user (argument u:). Les autorisations perm peuvent tre dnies en utilisant la notation symbolique prsente au paragraphe 2.3.3 page 37.
Comme la commande chmod, setfacl autorise loption -R pour accorder les droits spcis tous les chiers et sous-rpertoires, rcursivement.

Examiner les autorisations associes un chier Loption -l de la commande ls propose un achage lgrement modi lorsque des autorisations ACLs sont associes un chier : $ ls -l poodle.dat -rw-rw-r--+ 1 andy users $ 3100 2009-05-11 22:51 poodle.dat

52

Petit guide de survie

Notez la prsence du signe +. La commande getfacl permet de lister les permissions associes : $ getfacl poodle.dat # file: poodle.dat # owner: lozano propritaire # group: lozano groupe propritaire user::rw droits du propritaire user:debrah:rw droits de lutilisateur debrah group::r- droits du groupe propritaire mask::rw cf. plus bas other::r- droits des autres $ Accorder des droits par dfaut dans un rpertoire Grce loption -d de la commande setfacl on peut accorder des droits par dfaut un rpertoire. En reprenant lexemple prcdent, la commande : $ setfacl -d -m u:muffin:rw . $

permet dautoriser la lecture et lcriture lutilisateur muffin pour tous les chiers crs dans le rpertoire courant. En dautres termes, tous les chiers crs par la suite seront lisibles et modiables par lutlisateur muffin.
Attention, la commande de lexemple ci-dessus naccorde pas lutilisateur muffin de crer des chiers dans le rpertoire courant.

Enn, les droits par dfaut peuvent tre retirs avec loption -k. Ici la commande : $ setfacl -k . $ supprime les droits par dfaut sur le rpertoire courant. Rvoquer des droits Pour supprimer les droits ajouts avec la setfacl et son option -m on peut utiliser : loption -b pour supprimer tous les droits de type ACL loption -x pour supprimer un entre, par exemple : $ setfacl -x u:debrah poodle.dat $ rvoque les droits accords sur le chier poodle.dat lutilisateur debrah. Masque ACL Lorsquau moins un privilge de type ACL a t accord un chier, un masque est cr contenant lunion de toutes les autorisations. Ce masque est construit automatiquement, ainsi : $ setfacl -m u:dinah:r righthereonthe.floora $ setfacl -m u:moe:r righthereonthe.floora

2.4 Processus

53

$ setfacl -m u:hum:rw $

righthereonthe.floora

Le masque cr et ach par la commande getfacl sera : $ getfacl righthereonthe.floora [...] user::dinah:r-user::moe:r-user::hym:rw[...] mask::rw union des trois permissions prcdentes [...] $ Lintrt de ce masque rside dans le fait quil peut tre modi pour appliquer une politique pour tous les utilisateurs. Par exemple pour ne conserver que le droit en lecture pour tous les utilisateurs ACL, on peut excuter la commande suivante : $ setfacl -m m::r righthereonthe.floora $

2.4

Processus

Le systme unix est multi-tche et multi-utilisateur. Le noyau gre lensemble des processus grce un programme appel lordonnanceur (scheduler). Ce dernier a pour but daccorder aux processus du temps-cpu, et ceci chacun tour de rle, en fonction de priorits le cas chant. Ainsi, un processus peut se trouver dans quatre tats : actif : le processus utilise le cpu prt : le processus attend que lordonnanceur lui fasse signe mais galement : endormi : le processus attend un vnement particulier (il ne consomme pas de cpu dans cet tat) ; suspendu : le processus a t interrompu par un signal. Chaque processus possde un numro qui lidentie auprs du systme. Ce numro est appel son pid ou process identifer. On verra plus bas que chaque processus lexception du tout premier cr, possde un processus pre qui lui donne naissance. Ainsi lensemble des processus dun systme unix constitue un arbre de processus. On notera ici qu la notion de processus, on associe gnralement la notion de terminal. Un terminal est un canal de communication entre un processus et lutilisateur. Il peut correspondre un terminal physique comme un cran ou un clavier, mais aussi ce quon appelle un mulateur de terminal comme une fentre XTerm. Dans les deux cas un chier spcial dans le rpertoire /dev (par exemple /dev/tty1 est la

54

Petit guide de survie

premire console en mode texte, sous linux) est associ au terminal, et les communications se font par le biais dappels systme sur ce chier. La variable TERM informe les applications sur le comportement du terminal (entre autres choses, la manire dont les caractres de contrle seront interprts).

2.4.1

Examiner les processus

La commande ps permet dexaminer la liste des processus tournant sur le systme. Cette commande comprend un nombre trs important doptions qui sont gnralement direntes selon les systmes, il nest donc pas question ici de les passer toutes en revue (pour a il sut de taper man ps !). Voyons tout de mme quelques exemples instructifs.
Notez quun certain nombre doptions de la commande ps a fait lobjet de standardisation notamment au travers de la Single Unix Specication (SUS) porte par lOpen Group, consortium ayant pour but de standardiser ce que devrait tre un systme unix. Par exemple, la commande ps de la distribution Debian actuelle est cense respecter les recommandations de la SUS version 2. Encore une fois, vous trouverez dans ce qui suit des options ne respectant pas ncessairement tous ces standards, veuillez nous en excuser par avance.

Ceux du terminal Jai lanc Emacs (diteur de texte grce auquel lequel je tape ce document) dans une fentre xterm ; voici ce que me donne la commande ps dans cette fentre : $ ps PID 1322 1337 1338 $ TTY ttyp2 ttyp2 ttyp2 TIME 00:00:43 00:02:04 00:00:00 CMD bash emacs ps

On obtient donc une liste dont la premire colonne contient le pid de chaque processus, chacun de ces processus est associ au pseudoterminal du xterm dsign par ttyp2. La dernire colonne donne le nom de la commande associe au processus ; le temps donn ici est le temps-cpu utilis depuis le lancement de la commande. On pourra noter que puisque la commande ps est lance pour obtenir la liste des processus, son pid apparat galement dans la liste (ici pid 1338). Ceux des autres terminaux Loption x de la commande ps permet de lister les processus de lutilisateur qui ne sont par rattachs au terminal courant 9 :
9. Liste non exhaustive par souci de clart.

2.4 Processus

55

$ ps x PID TTY 345 ? 359 ? 1254 ttyp0 1354 ttyp3 29936 ttyp2 $

STAT S S S S R

TIME 0:00 0:01 0:00 0:00 0:00

COMMAND bash /home/vincent/.xsession fvwm2 lynx /usr/doc/vlunch/index.html xdvi.bin -name xdvi guide-unix.dvi ps -x

La nouvelle colonne STAT (status) donne ltat de chaque processus, ici S indique que le processus est endormi (sleeping), et R quil est prt (runnable). Ceux des autres utilisateurs La syntaxe suivante permet dobtenir la liste des processus lancs par un utilisateur du systme : $ ps -u rene PID TTY 663 tty1 765 ? 794 ttyp4 805 ttyp4 $ TIME 00:00:00 00:00:00 00:00:00 00:00:00 CMD bash xclock bash mutt

Lutilisateur rene est donc connect sur la premire console virtuelle, a lanc une horloge du systme X window, et est vraisemblablement en train de lire son courrier. Tous ! Enn on veut parfois tre en mesure de visualiser la liste de tous les processus sans critre restrictif de terminal ou dutilisateur. Il y a encore une fois plusieurs voies pour atteindre ce but. La version de la commande ps de LINUX supporte plusieurs styles de syntaxes ; nous en donnons ci-dessous deux exemples : $ ps aux USER PID %CPU %MEM root 1 0.1 0.1 root 2 0.0 0.0 root 3 0.0 0.0 root 4 0.0 0.0 root 5 0.0 0.0 root 210 0.0 0.3 root 221 0.0 0.3 daemon 237 0.0 0.0 root 253 0.0 0.3 root 284 0.0 0.3 $ TTY ? ? ? ? ? ? ? ? ? ttyS0 STAT S SW SW SW SW S S SW S S START 14:11 14:11 14:11 14:11 14:11 14:12 14:12 14:12 14:12 14:12 TIME 0:03 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 COMMAND init [5] [kflushd] [kupdate] [kpiod] [kswapd] syslogd -m 0 klogd [atd] crond gpm -t ms

56

Petit guide de survie

Cette commande liste sur le terminal, tous les processus du systme ici elle est raccourcie bien videmment. Cette forme de listing fournit galement la date de dmarrage du processus (champ START), ainsi que le pourcentage de cpu et de mmoire utiliss (%CPU et %MEM respectivement). Il est galement intressant de noter que lon peut suivre la squence de dmarrage du systme dexploitation : le premier programme lanc porte le pid 1 et se nomme init. Les processus suivants concernent les services de base du systme unix. Voici une autre manire dobtenir la liste complte des processus : $ ps -ef UID root root root root root root root daemon root root $ PID 1 2 3 4 5 210 221 237 253 284 PPID 0 1 1 1 1 1 1 1 1 1 STIME 14:11 14:11 14:11 14:11 14:11 14:12 14:12 14:12 14:12 14:12 TTY ? ? ? ? ? ? ? ? ? ttyS0 TIME 00:00:03 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 CMD init [5] [kflushd] [kupdate] [kpiod] [kswapd] syslogd -m 0 klogd [atd] crond gpm -t ms

ici lachage est quelque peu dirent. STIME est lquivalent du START, et on a accs au ppid qui identie le processus pre dun processus particulier. On remarquera dans cette liste que tous les processus sont des ls dinit cest--dire lancs par celui-ci. Ceci lexception dinit lui-mme qui est le premier processus cr. Personnaliser lafchage On peut se limiter certaines informations en utilisant loption o de la commande ps ; cette option permet de spcier les champs que lon dsire voir sacher, par exemple : $ ps -xo pid,cmd PID CMD 346 [.xsession] 360 fvwm2 -s 363 xterm -ls -geometry 80x30+0+0 367 -bash 428 man fvwm2 $ nache que le pid et la commande dun processus. On a combin ici, loption o avec loption x vu prcdemment.

2.4 Processus

57

Lien de parent Loption --forest associe avec la commande prcdente illustre larborescence des processus. On a isol ici les processus associs une session X ; on voit clairement grce au dessin sur la partie droite, et la correspondance entre pid et ppid, quelles sont les liations des processus. $ ps --forest -eo pid,ppid,cmd PID PPID CMD 324 1 [xdm] 334 324 \_ /etc/X11/X 335 324 \_ [xdm] 346 335 \_ [.xsession] 360 346 \_ fvwm2 -s 448 360 \_ xterm -ls 451 448 | \_ -bash 636 451 | \_ ps --forest -eo pid,ppid,cmd 576 360 \_ /usr/X11R6/lib/X11/fvwm2/FvwmAuto 577 360 \_ /usr/X11R6/lib/X11/fvwm2/FvwmPager $

2.4.2

Modier le droulement dun processus

Il existe au moins trois manires de modier le droulement normal dun processus : 1. changer la priorit dun processus avec la commande nice ; 2. utiliser la commande kill. Cette commande permet partir du pid dun processus, denvoyer ce quon appelle en jargon unix, un signal ce processus. En tant quutilisateur du systme, on envoie gnralement des signaux pour interrompre, arrter ou reprendre lexcution dun programme ; 3. utiliser le contrle de tche (job control) depuis le shell. Ce mcanisme permet de modier le droulement des programmes sexcutant dans un terminal donn. Priorit dun processus Par dfaut un processus lanc par un utilisateur a la mme priorit que celui dun autre utilisateur. Dans la situation o lon dsire lancer un processus gourmand sans gner les autres utilisateurs du systme, on peut utiliser la commande nice : $ nice -n priorit./groscalcul o 20 priorit 19, 19 dsignant la plus petite priorit (processus laissant sa place aux autres) et 20 la plus grande. Par dfaut, les utilisateurs nont pas le droit dutiliser une priorit ngative, par consquent tous les utilisateurs sont gaux face lutilisation des ressources de la machine.

58

Petit guide de survie

Notons lexistence de la commande renice permettant de baisser la priorit dun processus une fois quil est lanc. Par exemple, avec la commande : $ renice -10 -p 4358 4358: old priority 0, new priority 10 $ on change la priorit du processus de pid 4358 en lui aectant la valeur 10. La notion de signal Lorsquon veut interrompre ou suspendre un processus, lintervention revient toujours envoyer ce quon appelle un signal au processus en question. Lorsquun processus reoit un signal il interrompt le cours normal de son excution et peut : soit sarrter, cest le comportement par dfaut ; soit excuter une routine particulire que le concepteur de la commande aura eu soin de dnir et reprendre son cours normal. Selon la mouture de lunix et de la plate-forme sous-jacente, on dispose dune trentaine de signaux dont on peut avoir la liste avec la commande kill et loption -l. $ kill -l 1) SIGHUP 5) SIGTRAP 9) SIGKILL 13) SIGPIPE 18) SIGCONT 22) SIGTTOU 26) SIGVTALRM 30) SIGPWR $ 2) 6) 10) 14) 19) 23) 27) SIGINT SIGIOT SIGUSR1 SIGALRM SIGSTOP SIGURG SIGPROF 3) 7) 11) 15) 20) 24) 28) SIGQUIT SIGBUS SIGSEGV SIGTERM SIGTSTP SIGXCPU SIGWINCH 4) 8) 12) 17) 21) 25) 29) SIGILL SIGFPE SIGUSR2 SIGCHLD SIGTTIN SIGXFSZ SIGIO

Tous ces signaux peuvent tre dtourns de manire installer une routine excuter la rception de ce signal ; ceci lexception du signal KILL (no 9) et du signal STOP (no 19) qui ne peuvent tre dtourns et donc ont toujours pour eet darrter (respectivement dinterrompre) le processus. La commande kill Nous passerons ici en revue quelques utilisations de la commande kill. Dans un cadre trs pratique, il y a trois situations vitales o il est ncessaire de connatre cette commande : 1. un programme semballe , cest--dire accapare les ressources mmoire ou cpu du systme, il est alors ncessaire den stopper lexcution ; 2. un programme utilise trop de ressources pour le confort des autres utilisateurs, il est ncessaire de linterrompre momentanment ;

2.4 Processus

59

3. un programme ne rpond plus aux sollicitations de lutilisateur, il ny a pas dautres moyen que de linterrompre en lui envoyant un signal de n dexcution. Passons en revue ces trois situations en supposant que sur notre terminal la commande ps nous renvoie : $ ps -o pid,pcpu,pmem,state,cmd PID %CPU %MEM S CMD 2177 0.0 2.1 S -bash 2243 99.9 99.9 R winword-2005 2244 0.0 1.7 R ps -o pid,pcpu,pmem,state,cmd $ Anti-emballement On dcide que le programme winword-2005 prend beaucoup trop de ressources probablement cause dun bug on intervient en dcidant dliminer purement et simplement ce processus du systme : $ kill 2243 $ ce qui a pour eet denvoyer le signal TERM au processus de pid 2243. Il se peut que lenvoi de ce signal soit sans eet si le programme en question a t conu pour dtourner ce signal. Le processus de pid 2243 apparatra toujours dans la liste des processus et il faudra lui envoyer un signal KILL : $ kill -KILL 2243 $ qui comme on la vu prcdemment ne peut tre dtourn ; le processus de pid 2243 est donc irrmdiablement arrt. Assurer le confort des autres On considre ici que le fameux programme winword-2005 que tout le monde utilise sans vraiment savoir pourquoi, nest pas en train de semballer, mais simplement prend un peu trop de ressources. La tche eectue est lourde, mais importante pour lutilisateur qui dcide donc dinterrompre le programme pour le reprendre plus tard : $ kill -STOP 2243 $ On peut constater que le programme interrompu est eectivement dans cet tat en examinant le champ STATE : $ ps -o pid,pcpu,pmem,state,cmd PID %CPU %MEM S CMD 2177 0.0 2.1 S -bash 2243 0.0 25.3 T winword-2005 2244 0.0 1.7 R ps -o pid,pcpu,pmem,state,cmd $

60

Petit guide de survie

Ce champ est positionn T qui indique que le processus de pid 2243 est interrompu. Lutilisateur soucieux dachever son travail, pourra alors lancer la commande en n de journe pour ne pas gner ses collgues : $ kill -CONT 2243 $ qui indique au processus de pid 2243 de reprendre son excution. Contrle de tches Le contrle de tches ou job control permet de manipuler les processus tournant sur un terminal donn. Sur chaque terminal, on distingue deux types de processus : 1. le processus en avant-plan, cest celui qui peut utiliser le terminal comme canal de communication avec lutilisateur par le biais du clavier ; on dit galement quon a la main sur ce type de processus ; 2. les processus en arrire-plan (ou tche de fond) ; ceux-l peuvent utiliser le terminal comme canal de sortie (pour acher des informations par exemple) mais ne peuvent lire les donnes que leur fournirait lutilisateur.
Ce qui est crit ci-dessus est le comportement quon rencontre gnralement sur un terminal avec la plupart des applications. Il nest par contre pas inutile de noter que selon quune application intercepte ou ignore les deux signaux particuliers TTOU et TTIN (respectivement criture ou lecture dun processus en arrire-plan), le comportement pourra tre dirent.

Les shells supportant le contrle de tches 10 orent un certain nombre de commandes et de combinaisons de touches qui permettent entre autres : dinterrompre ou darrter un programme ; de passer un programme en arrire ou en avant-plan ; de lister les processus en arrire-plan. Nous vous proposons de passer en revue ces fonctionnalits en se plaant dans le cadre dun exemple simple : supposons que dans un terminal donn, un utilisateur lance lditeur Emacs : $ emacs Une fois Emacs lanc, lutilisateur na plus la main sur le terminal 11 , et tout caractre saisi reste en attente, jusqu la n de lexcution dEmacs : $ emacs qdqsqmlskdjf n du progamme emacs $ qdqsqmlskdjf
10. Ce qui est le cas de la plupart des shells modernes. 11. Sauf si Emacs est lanc en mode texte dans le terminal...

2.4 Processus

61

bash: qdqsqmlskdjf: command not found $ Arrter le programme Pour arrter un programme en avant-plan, on peut utiliser la clbre combinaison de touche Ctrl c (Ctrl-c) : $ emacs $ Control + c

Ctrl-C envoie le signal INT au processus en avant-plan dans le terminal. Passage en arrire-plan Pour passer Emacs (le programme de notre exemple) en arrire-plan, il faut procder en deux temps : appuyer sur la touche Control puis la touche z en mme temps (on note souvent Ctrl-z) 12 , ce qui a pour eet denvoyer le signal STOP au programme sexcutant en avant-plan sur le terminal. $ emacs Control + z [1]+ Stopped emacs $ Il faut ensuite passer le programme en tche de fond grce la commande interne bg (background) : $ bg [1]+ emacs & $ Le numro entre crochet ([1]) est le numro de la tche dans le terminal courant. On parle aussi de job. On peut galement lancer directement une commande ou programme en tche de fond, en postxant la commande par le caractre & : $ emacs& [1] 1332 $ Ici le systme attribue Emacs le job [1], et le shell ache sur le terminal le pid correspondant (1332).
12. Cette combinaison est gnralement celle que lon trouve sur un systme unix, mais notez que cela peut tre dirent sur certains systmes.

62

Petit guide de survie

Lister les tches La commande jobs permet dobtenir une liste des tches en arrire-plan, ou interrompues, sur le terminal. Par exemple : $ xclock & xlogo & xbiff & [1] 1346 [2] 1347 [3] 1348 $ lance trois programmes donnant lieu la cration dune fentre graphique. On peut lister ces tches : $ jobs [1] Running [2]- Running [3]+ Running $ Passage en avant-plan xclock & xlogo & xbiff &

Il est possible de faire rfrence une tche par son numro grce la notation %numro_de_tche. Ceci est valable pour les commandes bg et kill vues prcdemment, mais aussi pour la commande permettant de passer une tche en avant-plan : la commande fg (foreground). Ainsi par exemple pour passer xlogo en avant-plan : $ fg %2 xlogo maintenant on na plus la main.

2.5

Quelques services

Un systme dexploitation peut tre vu comme une couche logicielle faisant linterface entre la machine et lutilisateur. Cette interface peut elle-mme tre apprhende comme un ensemble de services fournis lutilisateur. Outre les services vus jusquici permettant de lancer des programmes et de stocker des donnes 13 , il existe entre autres des services lis limpression et la planication. Les services dunix rpondent gnralement au principe client/serveur, dans lequel le client est lapplication vue par lutilisateur, et le serveur un daemon (disk and execution monitor), cest--dire un programme attendant en tche de fond, pour rpondre aux ventuelles requtes.
13. Seront tudis plus loin dans ce manuel les services lis la communication entres utilisateurs, et le tlchargement de chiers.

2.5 Quelques services

63

2.5.1

Impression

Sur les rseaux locaux, limpression sous unix se fait gnralement sur des imprimantes PostScript connectes un rseau. Le PostScript est un langage dimpression conu par la socit Adobe, cest un langage de description de page. Ce langage est interprt, et les imprimantes dites PostScript disposent dun interprteur implant sur une carte lectronique. Le principe pour imprimer est donc denvoyer un chier au format PostScript sur une imprimante. En fonction du format du chier initial, il faudra procder une conversion avec les logiciels suivants : a2ps convertit un chier texte en chier PostScript ; convert permet de convertir peu prs nimporte quel type dimage en PostScript ; dvips permet de convertir la sortie de TEX (format dvi) en PostScript. Si lon ne dispose pas dimprimante PostScript, il faut gnrer le PostScript comme indiqu prcdemment et utiliser un interprteur logiciel pour transformer ce PostScript en chier compatible avec limprimante en question (voir gure 2.6). Linterprteur PostScript couramment utilis sous unix est Ghostscript (http://www.cs.wisc.edu/ ~ghost). Les commandes de base disponibles pour lutilisateur sont :
Texte
a2ps

2
PS
PS ghostscript

Image

convert

Dvi

dvips

Non PS

Figure 2.6 Impression sous Unix. lpr : pour soumettre un chier imprimer ; lpq : pour lister la liste des jobs dimpression en attente ; lprm : pour enlever un job de la liste en attente. Selon le systme que vous utiliserez seront accessibles plusieurs les dimpression en fonction des imprimantes disponibles. Seront galement accessibles des options dpendantes des caractristiques de limprimante (alimentation manuelle, bac A3, recto/verso, etc.). Renseignez-vous auprs du mssieur qui vous sert dadministrateur systme.

64

Petit guide de survie

Il existe deux familles de commandes hrites de deux versions dunix. Historiquement, la branche BSD proposait les commandes lp, lpq et lprm, et les commandes correspondantes de la branche SysV taient lp, lpstat et cancel. Aujourdhui les programmes grant limpression sur un systme unix peuvent utiliser lune ou lautre de ces familles, voire les deux.

2.5.2

Le service at

La commande at permet de lancer une commande (at ) une heure particulire. Sa syntaxe est la suivante : at date On pourra par exemple lancer : $ at 23:00 at> groscalculdelamort at> Ctrl-D $ pour lancer 23 heures le programme groscalculdelamort qui utilise beaucoup de ressources. La sortie du programme sera envoye par mail lutilisateur aprs son excution. Dautres syntaxes existent pour spcier la date de lancement : $ at now + 2hours $ pour lancer un programme dans deux heures. Et : $ at 16:20 tomorrow $ pour demain 16:20, $ at $ 13:14 10/23/02

pour lancer un programme le 23 octobre 2002 13 heures 14. On peut galement lister les jobs prvus par la commande at grce la commande atq : $ atq 1 2 3 $ 2001-03-14 18:27 a 2001-03-15 16:20 a 2002-10-23 13:14 a

La commande atrm quant elle, permet de supprimer une tche prvue, en donnant son identicateur (le numro indiqu dans la premire colonne des informations renvoyes par atq) : $ atrm 1 $

2.5 Quelques services

65

On peut galement prparer les commandes dans un chier texte et utiliser ce chier notons-le commandes.at comme argument de la commande at : $ at -f commandes.at 15:00 tomorrow $

2.5.3

Le service cron

cron est un service quivalent ce que le systme dexploitation dit par la socit Microsoft appelle les tches planies . Linterface utilisateur est la commande crontab. Pour savoir quelles sont vos tches planies (dans le jargon unix, on dit inspecter sa crontab ), on lancera la commande : $ crontab -l no crontab for djobi $ Pour eacer toutes vos tches planies, la commande suivante sura : $ crontab -r $ Pour dnir une ou plusieurs tches planies, la commande : $ crontab -e lance un diteur (qui peut tre par dfaut vi) qui vous demande de saisir des informations dans un format particulier. Chaque ligne ce celui-ci devra contenir les informations suivantes : minutes heures jour du mois mois jour de la semaine commande o : minutes heures jour du mois mois jour de la semaine Par exemple la ligne : 10 0 * * 0 rm -rf ~/.wastebasket/* eace tous les dimanches minuit pass de dix minutes, le contenu du rpertoire poubelle /.wastebasket. La ligne : 0 12 30 12 * echo "bon anniversaire" | mail pote@truc.net envoie un mail votre pote tous les 30 dcembre midi. : prend des valeurs de 0 59 ; : de 0 23 ; : de 1 31 ; : de 1 12 ; : de 0 7 o 0 et 7 reprsentent le dimanche.

66

Petit guide de survie

La ligne : 0 8-18 * * * echo "a gaze ?" | mail pote@truc.net envoie un mail toutes les heures pile de (8 heures 18 heures) pour vous rappeler son bon souvenir. La ligne : 0 8-18/4 * * 1,3,5 rm -f ~/tmp/* vidange le rpertoire tmp de lutilisateur le lundi, mercredi et le jeudi, et ceci de 8 heures 18 heures, toutes les 4 heures. Notez enn que le service cron vous informe par mail du rsultat de lexcution de votre tche. Voir la page de manuel de crontab pour de plus amples informations, ainsi que lexemple du chapitre 6 paragraphe 6.4.5 page 202 illustrant une utilisation du service cron pour mettre des images tires au hasard en fond dcran.

2.5.4

Lutilitaire nohup

nohup permet de lancer une commande qui ne sera pas arrte lorsque lutilisateur se dconnectera du systme 14 . Lors de la dconnexion, tous les programmes reoivent en eet le signal HUP, qui a par dfaut leet de les arrter 15 . Pour lancer la commande cmd en nohup , on tapera :

nohup cmd Par exemple pour lancer un tlchargement qui va durer plusieurs heures, on peut utiliser wget avec nohup : $ nohup wget ftp://bidule.chouette.org/pub/truc-1.2.tar.gz nohup: appending output to nohup.out Ctrl-z [1]+ Stopped wget $ bg [1]+ wget & $ Le systme vous informe alors que la sortie du programme en loccurrence wget est redirige dans le chier nohup.out. Fichier quon pourra consulter lors de la prochaine connexion au systme.
Que faire alors si le programme lanc avec nohup est un programme interactif qui attend des donnes au clavier ? Une solution simple est de visualiser le contenu du chier nohup.out dans un autre terminal avec la commande tail -f nohup.out et rpondre aux questions dans le terminal o est lanc la commande en nohup. Par exemple si on ne dispose pas de wget mais uniquement de lutilitaire ftp, il faudra procder, avant de lancer le transfert proprement dit, un srie dinteraction avec le programme.
14. Il ne sagit donc par rellement dun service de planication, mais dune commande utile dans le cadre de la gestion des tches. 15. Notons cependant que certains logiciels sont programms pour dtourner ce signal.

2.5 Quelques services

67

Conclusion
Vous tes maintenant arms pour dcouvrir le chapitre suivant. Celui-ci va vous prsenter les utilitaires composant la bote outils dun systme unix. Le bon maniement de ces outils prsuppose que vous avez correctement digr le prsent chapitre. Cest par contre celui qui vous fera prendre conscience de toute la puissance de la ligne de commande 16 .

16. Le suspense est tout bonnement insoutenable...

Vous aimerez peut-être aussi