Admin System Unix
Admin System Unix
Admin System Unix
version 7.0
Partie 2
2004 2005
Thierry Besanon Philippe Weill
Formation Permanente Universit Pierre et Marie Curie - PARIS 6 Tour centrale 13e tage 4, place Jussieu 75252 Paris Cedex 05 Tl. : 01-44-27-58-49 ou 01-44-27-58-50 01-44-27-38-19 ou 01-44-2738-25 Fax : 01-44-27-27-15 e-mail : [email protected]
[email protected] [email protected]
http://www.formation.jussieu.fr/ars/2004-2005/UNIX/cours/
Si vous amliorez ce cours, merci de menvoyez vos modications ! :-)
Copyright (c) 1997-2005 by [email protected] This material may be distributed only subject to the terms and conditions set forth in the Open Publication Licence, v1.0 or later (the latest version is available at http://www.opencontent.org/openpub/).
"...the number of UNIX installations has grown to 10, with more expected..." - Dennis Ritchie and Ken Thompson, June 1972
N de transparent
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. 1 . 1 . 4 . 5 . 7 . 8 . 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . 17 . 18 . 19 . 20 . 23 . 24 . 25 . 26 . 33 . 34 . 35 . 36 . 37 . 38 . 39 . 40 . 41 . 42 . 43 . 44 . 48 . 51 . 52 . 56 . 60 . 73 . 80 . 81 . 87 . 88 . 90 . 92 . 93 . 94 . 95 . 96 . 97 . 101
10 11 Chapitre 18 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Chapitre 19 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
Informations de connexions : last . . . . . . . . . . . . . . . . . . . . . . . . (Windows : : commandes darrt et de redmarrage) . . . . . . . . . . . . . . . . Le noyau Unix et les priphriques . . . . . . . . . . . . . . . . . . . . . . . . . Assurer la validit du noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . Congurer le noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modier le noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Compilation du noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Compilation du noyau LINUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . Compilation du noyau FreeBSD . . . . . . . . . . . . . . . . . . . . . . . . . . Compilation du noyau SOLARIS . . . . . . . . . . . . . . . . . . . . . . . . . . Noyaux modulaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modications dynamiques du noyau LINUX : sysctl, /etc/sysctl.conf . Modications dynamiques du noyau FreeBSD : sysctl, /etc/sysctl.conf Modications dynamiques du noyau SOLARIS : ndd, /etc/system . . . . . . Messages du noyau : dmesg . . . . . . . . . . . . . . . . . . . . . . . . . . . Le noyau Unix et les priphriques . . . . . . . . . . . . . . . . . . . . . . . . . Types dobjets Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rpertoire /dev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mode bloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mode caractre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Device drivers/Pilotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Minor number / major number . . . . . . . . . . . . . . . . . . . . . . . . . . . Cration des chiers spciaux : mknod . . . . . . . . . . . . . . . . . . . . . . Copie de devices : dd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Systmes de chiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Technologies de disques durs . . . . . . . . . . . . . . . . . . . . . . . . . . . Disques durs IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Disques durs SCSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Duplicateurs de disques durs . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tests de disques durs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Technologie NAS : Network Attached Storage . . . . . . . . . . . . . . . . . . . . Technologie SAN : Storage Array Network . . . . . . . . . . . . . . . . . . . . . Technologie RAID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Filesystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Partitionnement de disques durs, format, fdisk . . . . . . . . . . . . . . . . Liste des partitions SOLARIS : prtvtoc . . . . . . . . . . . . . . . . . . . . . Liste des partitions LINUX : fdisk . . . . . . . . . . . . . . . . . . . . . . . . Nommage des partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Formatage (1) : mkfs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Formatage (2) : newfs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Montage de lesystems : mount . . . . . . . . . . . . . . . . . . . . . . . . . Dmontage de lesystems : umount . . . . . . . . . . . . . . . . . . . . . . . Remontage chaud de lesystems . . . . . . . . . . . . . . . . . . . . . . . . . Identication des causes des lesystems busy : fuser . . . . . . . . . . . . . . Identication des causes des lesystems busy : lsof . . . . . . . . . . . . . . . Liste des partitions montes : df . . . . . . . . . . . . . . . . . . . . . . . . . . Liste des partitions montes (2) : mount . . . . . . . . . . . . . . . . . . . . . Montage automatique au boot : /etc/fstab, /etc/vfstab . . . . . . . . . Gestion des quotas : quotaon, quota, edquota . . . . . . . . . . . . . . . Structure interne associe un objet : inode . . . . . . . . . . . . . . . . . . . . Informations sur les inodes : df . . . . . . . . . . . . . . . . . . . . . . . . . . Inodes 0, 1, 2 et 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rpertoire lost+found . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cohrence des disques : sync . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
102 103 106 108 109 110 113 115 117 118 119 122 124 126 128 129 130 131 134 136 138 140 141 146 149 150 155 156 158 159 160 162 163 172 173 176 177 178 183 184 186 188 189 190 191 192 197 199 201 205 210 213 214 215
Cohrence des disques : update . . . . . . . . . . . . . . . . . . Vrication de la cohrence des disques : fsck . . . . . . . . . . . Stratgie dallocation des blocs, MINFREE, tunefs . . . . . . . . . Vitesse de rotation du disque . . . . . . . . . . . . . . . . . . . . . Snapshots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (Windows : : Snapshots) . . . . . . . . . . . . . . . . . . . . . . . Logical Volume Managers, LVM . . . . . . . . . . . . . . . . . . . Filesystem journalis . . . . . . . . . . . . . . . . . . . . . . . . . Gravure de CD/DVD (1) : image ISO 9660 . . . . . . . . . . . . . . Gravure de CD/DVD (2) : manipulation dune image ISO 9660 . . . . . Gravure de CD/DVD (3) : gravure dune image ISO 9660 . . . . . . . Droits tendus : Access Control Lists (ACL) . . . . . . . . . . . . . . ACL sous LINUX . . . . . . . . . . . . . . . . . . . . . . . . . . . ACL sous SOLARIS . . . . . . . . . . . . . . . . . . . . . . . . . ACL sous FREEBSD . . . . . . . . . . . . . . . . . . . . . . . . . Mcanismes de sauvegarde . . . . . . . . . . . . . . . . . . . . . Technologies de lecteur de bandes . . . . . . . . . . . . . . . . . . Priphriques UNIX de lecture de bande magntique . . . . . . . . . Utilitaires dump, restore . . . . . . . . . . . . . . . . . . . . . Utilitaire tar . . . . . . . . . . . . . . . . . . . . . . . . . . . . (Windows : : NtBackup) . . . . . . . . . . . . . . . . . . . . . . . Quelques rgles . . . . . . . . . . . . . . . . . . . . . . . . . . . Mmoire virtuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . Principe de la mmoire virtuelle . . . . . . . . . . . . . . . . . . . Afchage de la taille du swap LINUX : free . . . . . . . . . . . . . Afchage de la taille du swap SOLARIS : swap . . . . . . . . . . . Activation de partitions de swap LINUX : swapon . . . . . . . . . . Activation de partitions de swap SOLARIS : swap . . . . . . . . . . Activation de partitions de swap au boot LINUX : /etc/fstab . . . Activation de partitions de swap au boot SOLARIS : /etc/vfstab Taille du swap . . . . . . . . . . . . . . . . . . . . . . . . . . . . (Windows : : taille du swap) . . . . . . . . . . . . . . . . . . . . . . Fichiers de swap . . . . . . . . . . . . . . . . . . . . . . . . . . . (Windows : : Fichiers de swap) . . . . . . . . . . . . . . . . . . . . Cration de chiers de swap : mkfile . . . . . . . . . . . . . . . (Windows : : creatfil) . . . . . . . . . . . . . . . . . . . . . . Cration de chiers de swap (2) : dd . . . . . . . . . . . . . . . . . Processus et excutables . . . . . . . . . . . . . . . . . . . . . . Liste des processus : ps version BSD . . . . . . . . . . . . . . . . Liste des processus : ps version System-V . . . . . . . . . . . . . . Liste des processus : top . . . . . . . . . . . . . . . . . . . . . . Contrle des processus : kill . . . . . . . . . . . . . . . . . . . Priorit des processus : nice / renice . . . . . . . . . . . . . . (Windows : : processus) . . . . . . . . . . . . . . . . . . . . . . . Temps dexcution dun processus : time . . . . . . . . . . . . . . Charge du systme : uptime . . . . . . . . . . . . . . . . . . . . Processus non tuables, processus zombies . . . . . . . . . . . . . . Processus zombies (2) . . . . . . . . . . . . . . . . . . . . . . . . Attribut de chier excutable : bit setuid . . . . . . . . . . . . . . . . Attribut de chier excutable : bit setgid . . . . . . . . . . . . . . . . Directory /proc . . . . . . . . . . . . . . . . . . . . . . . . . . Principes des processus Unix . . . . . . . . . . . . . . . . . . . . Principes des threads Unix . . . . . . . . . . . . . . . . . . . . . . Visualisation des threads Unix . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
217 218 224 225 226 231 238 239 241 246 253 266 267 274 284 285 287 292 293 300 308 309 318 318 321 322 323 324 325 326 327 328 330 331 332 333 334 335 337 340 342 344 348 351 357 359 361 362 365 369 373 380 385 388
Compilation avec threads sous Unix . . . . . . . . . . . . . . Chane de compilation sous Unix . . . . . . . . . . . . . . . . Edition de liens, link : ld . . . . . . . . . . . . . . . . . . . . Edition de liens statique : bibliothques statiques . . . . . . . . Edition de liens statique : file . . . . . . . . . . . . . . . . Edition de liens statique : ar . . . . . . . . . . . . . . . . . . Edition de liens statique : ranlib . . . . . . . . . . . . . . . Edition de liens statique : /sbin . . . . . . . . . . . . . . . Edition de liens dynamique : bibliothques dynamiques . . . . . Edition de liens dynamique : file . . . . . . . . . . . . . . . Edition de liens dynamique : ldd . . . . . . . . . . . . . . . (Windows : : listdlls) . . . . . . . . . . . . . . . . . . . Edition de liens dynamique : ldconfig . . . . . . . . . . . Edition de liens dynamique : effacement de librairies dynamiques Dynamic Loading . . . . . . . . . . . . . . . . . . . . . . . . Reprsentation interne des symboles : Mangling, nm . . . . . . Table de symboles dun excutable : strip . . . . . . . . . . Chanes de caractres : strings . . . . . . . . . . . . . . Debugging post mortem : core . . . . . . . . . . . . . . . . Debugging live dun runtime : trace, strace, truss . . . Excution en environnement restreint non scuris : chroot . Horloges Unix . . . . . . . . . . . . . . . . . . . . . . . . . Consultation de lhorloge : date . . . . . . . . . . . . . . . . Commande date amliore : GNU date . . . . . . . . . . . . Rglage de lhorloge : date . . . . . . . . . . . . . . . . . . Heure dt Heure dhiver . . . . . . . . . . . . . . . . . . Synchronisation dhorloges : NTP (Network Time Protocol) . . . (Windows : : NTP) . . . . . . . . . . . . . . . . . . . . . . . Faux ami : commande time . . . . . . . . . . . . . . . . . . Programmation de tches priodiques . . . . . . . . . . . . . Utilitaire cron . . . . . . . . . . . . . . . . . . . . . . . . . Fichiers crontab . . . . . . . . . . . . . . . . . . . . . . . . Excution des chiers crontab . . . . . . . . . . . . . . . Edition des chiers crontab . . . . . . . . . . . . . . . . . Autorisation utiliser cron, cron.allow, cron.deny . . . (Windows : : cron) . . . . . . . . . . . . . . . . . . . . . . . Traces/Journaux systme : SYSLOG . . . . . . . . . . . . . . Principes . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemples de messages SYSLOG . . . . . . . . . . . . . . . Format des messages SYSLOG . . . . . . . . . . . . . . . . Commande shell logger . . . . . . . . . . . . . . . . . . . Fichier de conguration : /etc/syslog.conf . . . . . . . Exemple de chier /etc/syslog.conf . . . . . . . . . . Conseils pour /etc/syslog.conf . . . . . . . . . . . . Reconguration, SIGHUP . . . . . . . . . . . . . . . . . . . Surveillance des logs . . . . . . . . . . . . . . . . . . . . . . Autres implmentations de SYSLOG . . . . . . . . . . . . . . (Windows : : SYSLOG) . . . . . . . . . . . . . . . . . . . . . Avenir de SYSLOG . . . . . . . . . . . . . . . . . . . . . . . Base de donnes ORACLE . . . . . . . . . . . . . . . . . . . Base de donnes MYSQL . . . . . . . . . . . . . . . . . . . Utilisateur Unix ddi MYSQL : mysql . . . . . . . . . . . Arborescence MYSQL . . . . . . . . . . . . . . . . . . . . . Cration des bases initiales MYSQL : mysql_install_db
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
390 391 394 398 399 400 401 402 403 404 405 408 410 412 413 420 422 424 426 433 435 441 443 445 446 447 448 450 452 454 454 455 457 459 460 461 467 467 468 469 471 472 474 475 477 478 479 481 483 484 486 487 488 489
lancement/arrt de MYSQL . . . . . . . . . . . . . . Cration de bases MYSQL (1) : mysqladmin . . . Cration de bases MYSQL (2) : commandes SQL . . Dialogue interactif avec MYSQL en mode CLI : mysql Notion dutilisateurs MYSQL . . . . . . . . . . . . . Fichier de conguration : my.cnf . . . . . . . . . . Sauvegarde : mysqldump . . . . . . . . . . . . . Rechargement dune sauvegarde . . . . . . . . . . . Interface de gestion de MYSQL : phpmyadmin . . Base de donnes POSTGRESQL . . . . . . . . . . Utilisateur Unix ddi PGSQL : pgsql . . . . . . Arborescence PGSQL . . . . . . . . . . . . . . . . Cration des bases initiales PGSQL : initdb . . . Lancement/arrt de PGSQL : pg_ctl . . . . . . . Cration de bases PGSQL : createdb . . . . . . Destruction de bases PGSQL : dropdb . . . . . . . Dialogue interactif avec PGSQL en mode CLI : psql Cration de bases PGSQL : commandes SQL . . . . Destruction de bases PGSQL : commandes SQL . . . Notion dutilisateurs PGSQL . . . . . . . . . . . . . Gestion dutilisateurs PGSQL (1) : createuser . . Gestion dutilisateurs PGSQL (2) : dropuser . . . Fichier de conguration : postgresql.conf . . Fichier de conguration : pg_hba.conf . . . . . . Sauvegarde : pg_dump, pg_dumpall . . . . . . Rechargement dune sauvegarde . . . . . . . . . . . Interface de gestion de PGSQL : phppgadmin . . . Langage SQL . . . . . . . . . . . . . . . . . . . . Dnition des exemples . . . . . . . . . . . . . . . Description des donnes . . . . . . . . . . . . . . . Manipulation des donnes . . . . . . . . . . . . . . Contrle des accs . . . . . . . . . . . . . . . . . . Projection, Restriction . . . . . . . . . . . . . . . . Les requtes imbriques . . . . . . . . . . . . . . . La jointure . . . . . . . . . . . . . . . . . . . . . . Lunion . . . . . . . . . . . . . . . . . . . . . . . . Lintersection . . . . . . . . . . . . . . . . . . . . . La diffrence . . . . . . . . . . . . . . . . . . . . . La division . . . . . . . . . . . . . . . . . . . . . . Group by . . . . . . . . . . . . . . . . . . . . . . . Group by . . . HAVING . . . . . . . . . . . . . . . . Conclusion . . . . . . . . . . . . . . . . . . . . . . Correction des exercices . . . . . . . . . . . . . . . Consolidation dOS . . . . . . . . . . . . . . . . . . VMWARE . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
492 493 494 495 499 501 502 505 506 507 509 510 511 512 513 514 515 518 519 520 522 524 526 527 529 532 533 534 535 537 539 540 541 549 551 553 554 555 556 558 559 560 561 573 574
bin
dev
etc
lib
proc
sbin
tmp
usr
var
bin
include
lib
local
sbin
src
log
run
spool
tmp
bin
etc
include
lib
sbin
Pourquoi ce chapitre sur larborescence ? 1. Pour connatre le contenu des principaux directories 2. Pour connatre lutilit des principaux directories 3. Pour savoir congurer les PATH (utilisateurs + root) 4. Pour surveiller les directories systme pouvant grossir en raison de chiers log.
Formation permanente ARS 7.0 1
Difcult de portage de shell scripts et autres applications. Difcult de gestion en environnement htrogne.
Exemple : FreeBSD 2.2.x HP-UX 9.07 SunOS 4.1.4
Une certaine convergence apparat actuellement (effet des diffrents standards Posix and co ? ou rarfaction des Unix ?).
Solution du lien symbolique Ne pas oublier la commande "ln -s chier1 chier2". IRIX 5.3 SunOS 4.1.4 On fera par exemple sur la machine SGI :
/usr/bsd /usr/ucb
% ln -s /usr/bsd /usr/ucb % ls -l /usr drwxr-xr-x 2 root sys 512 Aug 28 1996 bsd/ lrwxr-xr-x 1 root sys 3 Aug 22 1996 ucb -> bsd/ % echo $PATH /usr/local/bin:/bin:/usr/ucb:/usr/bin:/usr/sbin:/etc:/usr/etc % type rlogin rlogin is /usr/ucb/rlogin
diffrences de PATH Rpertoires partageables / Rpertoires non partageables stations diskless Rpertoires gs / Rpertoires voluant dans le temps partitions en read-only, partitions sur CDROM
Possibilit de mixer ces caractristiques. Exemple : Rpertoires partageables Rpertoires gs Rpertoires volutifs Rpertoires non partageables
bin
dev
etc
lib
proc
sbin
tmp
usr
var
bin
include
lib
local
sbin
src
log
run
spool
tmp
bin
etc
include
lib
sbin
Directory /sbin
/sbin
system binaries
Il rside dans la mme partition que / ce qui garantit sa disponibilit ce moment-l o dautres partitions ne sont pas encore disponibles.
arp, dump, fsck, halt, ifconfig, init, ldconfig, mkfs, restore, shutdown, swapon, etc.
Formation permanente ARS 7.0 7
Directory /bin
/bin
binaries
Il rside dans la mme partition que / ce qui garantit sa disponibilit ce moment-l o dautres partitions ne sont pas encore disponibles.
bash, chmod, chown, cp, date, dd, df, echo, hostname, kill, mkdir, mknod, more, mv, ps, pwd, rm, rmdir, sed, umount, etc.
Formation permanente ARS 7.0 8
Directory /usr/sbin
/usr/sbin
Il contient des binaires systme (do le s dans son nom) non primordiaux et plus utiliss pour la gestion au jour le jour de la machine. Il rside dans une mme partition pouvant ne pas tre disponible pendant les premires tapes du boot.
adduser, in.rlogind, inetd, lpd, lpc, pwck, sa, showmount, traceroute, vipw, etc.
Formation permanente ARS 7.0 9
Directory /usr/bin
/usr/bin
Il contient la plupart des commandes Unix pour utilisateurs (plusieurs centaines en gnral).
Directory /usr/local/sbin
/usr/local/sbin
11
Directory /usr/local/bin
/usr/local/bin
12
Directory /lib
/lib
libraries
Directory /usr/lib
/usr/lib
Il contient les librairies dynamiques non primordiales au fonctionnement du systme ainsi que les librairies statiques .a de programmation en langage C.
Linker avec -ltoto revient linker avec /usr/lib/libtoto.a (sauf option spcique cc)
Directory /usr/local/lib
/usr/local/lib
15
Directory /usr/include
/usr/include
16
Directory /usr/local/include
/usr/local/include
17
Directory /etc
/etc
Il contient les chiers de conguration des divers utilitaires primordiaux assurant le fonctionnement du systme.
group, passwd, motd, hosts, hosts.allow, hosts.deny, fstab, inittab, printcap, resolv.conf, syslog.conf, etc.
Formation permanente ARS 7.0 18
Directory /usr/local/etc
/usr/local/etc
Il contient les chiers de conguration de divers utilitaires non ncessaires au fonctionnement du systme.
19
Directory /dev
/dev
system devices
Il contient les chiers spciaux du systme permettant daccder aux ressources physiques de la machine comme les disques durs, la mmoire RAM etc. 2 approches historiques : ancienne approche : les chiers spciaux sont gnrs manuellement via les scripts
/dev/MAKEDEV et /dev/MAKEDEV.local
approche moderne : les chiers spciaux sont gnrs automatiquement (faire en plus boot sur SOLARIS). Pas de /usr/dev ni /usr/local/dev ! Les droits daccs aux chiers spciaux dans /dev sont trs importants. Une prcaution : conserver une trace crite dun "ls
Formation permanente ARS 7.0
-r
-l" de /dev
20
Directory /dev
/dev ?
organisation en vrac (FreeBSD, LINUX) organisation structure (SOLARIS, HP-UX, etc.) en sous rpertoires Exemple non exhaustif de SOLARIS : Rpertoire Contenu disques en mode caractre disques en mode bloc bandes magntiques pseudo-terminaux esclaves pseudo-terminaux matres
21
Directory /dev
le device de la carte audio de la machine le device de la console texte de la machine mmoire du noyau Unix canal des messages systme mmoire de la machine trou noir le device virtuel de votre terminal texte gnrateur de caractres de code ASCII 0
22
(Windows : : NUL)
24
Classiquement, les messages importants safchent sur la console. (sur un poste LINUX en mode X Windows, faire Ctr texte)
Formation permanente ARS 7.0 25
Directory /proc
/proc
system process
Il contient une reprsentation sous forme de chiers virtuels et directories virtuels dinformations de la machine Unix.
pour le programmeur systme qui utilisera les appels standard (et non pas des appels spciques
comme la libkvm ou des ioctl() spciques) Implmentation de /proc propre chaque Unix.
Utilit ?
Reprsentation virtuelle de : informations sur les processus informations sur le hardware informations sur le noyau
Formation permanente ARS 7.0 26
Directory /proc
sysadmin sysadmin sysadmin sysadmin sysadmin sysadmin sysadmin sysadmin sysadmin sysadmin sysadmin
0 64 0 64 0 0 0 64 0 0 0
Sep Sep Sep Sep Sep Sep Sep Sep Sep Sep Sep
22 22 22 22 22 22 22 22 22 22 22
14:30 15:45 15:45 15:45 15:45 15:45 15:45 15:45 14:29 15:45 15:45
cmdline cwd -> [0001]:1523515394 environ exe -> [0801]:10251 fd maps mem root -> [0801]:2 stat statm status
27
Directory /proc
0 Nov
2 18:52 /proc/pci
% cat pci PCI devices found: Bus 0, device 0, function 0: Host bridge: VIA Technologies, Inc. VT82C693A/694x [Apollo PRO133x] (rev 196). Prefetchable 32 bit memory at 0xd0000000 [0xd3ffffff]. Bus 0, device 1, function 0: PCI bridge: VIA Technologies, Inc. VT82C598/694x [Apollo MVP3/Pro133x AGP] (rev 0). Master Capable. No bursts. Min Gnt=12. ...
28
Directory /proc
% cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 8 model name : Pentium III (Coppermine) stepping : 10 cpu MHz : 1002.214 cache size : 256 KB Physical processor ID : 0 Number of siblings : 1 fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 2 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse bogomips : 1989.22 ...
29
Directory /proc
% cat /proc/stat cpu 1276780 2094 1821586 158965456 cpu0 681135 1171 903015 79447636 cpu1 595645 923 918571 79517818 page 19636553 18178406 swap 3965 4959 intr 460335474 414888745 32 0 4 4 3635073 6 0 1 0 35855460 1382047 897324 0 11 3676767 0 0 0 0 0 0 0 0 0 disk_io: (3,0):(3,3,24,0,0) (22,2):(695266,373120,8363128,322146,6352160) (22,3):(2514420,999712,3090945 ctxt 233821067 btime 1066985101 processes 201147
30
Directory /proc
31
Directory /proc
32
Directory /tmp
cest--dire 1777 exprim en octal : signication de 777 : tout le monde sur la machine peut crer, modier, effacer des chiers signication de 1000 : un utilisateur ne peut effacer que les chiers qui lui appartiennent
En principe,
Directory /var/log
Directory /var/mail
Par exemple :
total 2 -rw-rw----
1 besancon mail
0 Dec
2002 besancon
Directory /var/run
Directory /var/spool
Pour le systme dimpression, cest /var/spool/lpd . Pour la messagerie lectronique, cest /var/spool/mqueue .
37
Directory /var/tmp
Diffrence avec /tmp : /var/tmp nest pas vid au boot de la machine Unix.
cest--dire 1777 exprim en octal : signication de 777 : tout le monde sur la machine peut crer, modier, effacer des chiers signication de 1000 : un utilisateur ne peut effacer que les chiers qui lui appartiennent
Formation permanente ARS 7.0 38
Directory /mnt
/mnt
mount point
Point de montage pour rendre disponible provisoirement une partition (locale ou rseau)
Tendance LINUX :
/mnt/floppy /mnt/cdrom
etc.
39
Directory /opt
/usr/local local add-ons /opt local add-on applications software /usr/local contient les ajouts locaux de commandes. /opt contient les ajouts locaux de paquets complets de commandes (cd nombreuses
commandes excutables et chiers annexes)
Directory /usr/src
Prsent sur les unix libres. Non prsent sur les Unix commerciaux du type SOLARIS, AIX, HP-UX, etc.
41
Directory /sys
Prsent sur les Unix commerciaux type SOLARIS, AIX, HP-UX, etc. Non prsent sur les unix libres.
42
43
Sauvegarde de la conguration du moniteur dans une NVRAM (Non Volatile RAM ) ou EEPROM.
Formation permanente ARS 7.0 44
Rles du moniteur : inspecter ltat matriel de la machine permettre lutilisateur dinteragir si besoin pour divers rglages : prcision du disque de boot consultation dadresses mmoire modication de valeurs dans EEPROM ou NVRAM recherche des priphriques sur le bus SCSI options de boot (single ou multi) commandes de tests hardware charger en mmoire vive le secteur de boot dun certain priphrique et excuter ce programme.
45
panne matrielle
certains constructeurs permettent de protger le moniteur par mot de passe si perte du mot de passe du moniteur retour usine, moins dun super mot de passe secret
connu du constructeur le fonctionnement du moniteur est particulier chaque constructeur ; plus ou moins riche selon chaque constructeur
http://sunsolve.sun.com/handbook_pub/General/OBP.html
46
BIOS
47
A noter : Le chargement en mmoire vive du secteur de boot se fait en faisant appel uniquement aux rmwares des priphriques. Aucun pilote logiciel (device driver ) nentre en jeu.
48
La cration de ce secteur de boot est un mcanisme propre chaque constructeur. Par exemple sur Solaris :
# installboot /usr/platform/uname -i/lib/fs/ufs/bootblk /dev/rdsk/c0t3d0s0
Complexit sur LINUX : le chargeur primaire et le chargeur secondaire sont assurs par le mme programme. On parle de MBR (Master Boot Record ). Deux programmes principalement : LILO (Linux Loader ) GRUB (Grand Unied Boot Loader )
49
50
/kernel/unix puis les modules de /kernel jusqu ce que le noyau soit capable de monter
par lui mme des lesystems) puis lexcute.
A noter : Le chargement en mmoire vive du chargeur secondaire se fait en faisant appel uniquement aux rmwares des priphriques. Aucun pilote logiciel (device driver ) nentre en jeu.
51
Le noyau est charg puis excut par le chargeur secondaire. Pas de convention en ce qui concerne le nom du noyau : Systme FreeBSD Linux SunOS Solaris 5.0 5.4 Solaris Nom du noyau
52
Le noyau Unix permet la conguration du systme : prise en compte des priphriques conguration logicielle des interfaces rseau cration de toutes les structures mmoire ncessaires lancement des deux premiers processus de la machine, PID 0 et 1. Ce ne sont pas des processus Unix "traditionnels" puisquils sont construits partir de rien (par opposion aux processus ultrieurs qui auront tous un parent).
53
54
STAT D IW D
PID 0 1 2 3
PPID 0 0 0 0
C 0 0 0 0
TTY ? ? ? ?
55
init a traditionnellement le PID 1. Le programme init assure le reste du dmarrage de la machine Unix via le lancement de scripts
de dmarrage personnaliss et la surveillance des ports srie.
Deux questions se posent : Comment crer des processus supplmentaires ? Comment organiser les scripts de dmarrage ?
56
Tout processusUnix est cr par un processus parent excutant un fork(), cest--dire une copie de lui mme (code + data), suivi dun exec() pour remplacer le contenu de cette copie par un
avant le fork()
aprs le fork()
... ... if ( fork() ) { ... /* parent */ ... /* code */ } else { exec(...) /* child */ ... /* code */ } ... ...
... ... if ( fork() ) { ... /* parent */ ... /* code */ } else { exec(...) /* child */ ... /* code */ } ... ...
aprs le exec()
... ... if ( fork() ) { ... /* parent */ ... /* code */ } else { exec(...) /* child */ ... /* code */ } ... ...
exec()
le fils reprend ici
57
getty
login
grep
58
59
fs::sysinit:/etc/rcS >/dev/console 2<>/dev/console </dev/console is:3:initdefault: s0:0:wait:/etc/rc0 >/dev/console 2<>/dev/console </dev/console s2:23:wait:/etc/rc2 >/dev/console 2<>/dev/console </dev/console s3:3:wait:/etc/rc3 >/dev/console 2<>/dev/console </dev/console s5:5:wait:/etc/rc5 >/dev/console 2<>/dev/console </dev/console s6:6:wait:/etc/rc6 >/dev/console 2<>/dev/console </dev/console
60
Syntaxe de /etc/inittab
Ensemble de lignes au format :
Le label est une tiquette quelconque. En gnral un terme adapt ce que lon fait.
61
Niveaux
% /sbin/runlevel N 5
sur SOLARIS (ici le 7 Mars est la date du dernier boot) :
% who -r .
run-level 3
Mar
7 22:29
62
Signication des niveaux sur SOLARIS : SVR4 Run States S 0 1 2 3 4 5 6 Single-user (leaves lesystems mounted) Power off Single-user/System-admin (leaves only / mounted) Multi-user, network disabled Multi-user, network enabled (not used) PROM Monitor level Halt & reboot to default state
63
Principales actions
respawn
le programme init devra relancer la commande du champ commande chaque fois quelle se terminera.
wait
Lorsque init rentre dans le niveau considr, il doit lancer la commande du champ commande et en attendre la n avant de passer la ligne suivante de inittab.
once
Si la commande na pas t lance au pralable, init la lance et passe la ligne suivante ; en aucun cas, cette commande ne sera relance.
initdefault
Cette ligne prcise le run-level dans lequel init se place au dbut de son invocation. Il ne peut y avoir quune ligne de ce type.
64
La structure classique (LINUX, SOLARIS, etc.) est la suivante (exemple extrait de SOLARIS) :
fs::sysinit:/etc/rcS >/dev/console 2<>/dev/console </dev/console is:3:initdefault: s0:0:wait:/etc/rc0 >/dev/console 2<>/dev/console </dev/console s2:23:wait:/etc/rc2 >/dev/console 2<>/dev/console </dev/console s3:3:wait:/etc/rc3 >/dev/console 2<>/dev/console </dev/console s5:5:wait:/etc/rc5 >/dev/console 2<>/dev/console </dev/console s6:6:wait:/etc/rc6 >/dev/console 2<>/dev/console </dev/console
On trouve parfois aussi les chiers /sbin/rc0, /sbin/rc1, /sbin/rc2, /sbin/rc3, etc. Ce sont des scripts. Tous ces scripts sont btis sur le mme modle.
65
66
Le principe : 1. Quand on entre dans le runlevel N on lance le script rcN. 2. Le script rcN lance des programmes dont le nom commence par la lettre K et situs dans
/etc/rcN.d.
Lenchanement de ces programmes se fait dans lordre alphabtique. Un argument est pass chaque programme : stop (cf le K pour Kill ) 3. Le script rcN lance des programmes dont le nom commence par la lettre S et situs dans
/etc/rcN.d.
Lenchanement de ces programmes se fait dans lordre alphabtique. Un argument est pass chaque programme : start (cf le S pour Start )
67
Exemple de script S :
#!/sbin/sh state=$1 set who -r if [ $8 != "0" ] then exit fi case $state in start) if [ $9 = "2" -o $9 = "3" ] then exit fi echo "Starting process accounting" /usr/lib/acct/startup ;; stop) echo "Stopping process accounting" /usr/lib/acct/shutacct ;; esac
68
Exemple de script K :
#!/sbin/sh state=$1 set who -r if [ $8 != "0" ] then exit fi case $state in start) if [ $9 = "2" -o $9 = "3" ] then exit fi echo "Starting process accounting" /usr/lib/acct/startup ;; stop) echo "Stopping process accounting" /usr/lib/acct/shutacct ;; esac
69
Moralit : les chiers contiennent la mme chose ; ils sont en fait identiques !
% ls -l *spc ls -l /etc/rc2.d/*spc lrwxrwxrwx 1 besancon lrwxrwxrwx 1 besancon
13 Nov 12 00:44 /etc/rc2.d/K20spc -> ../init.d/spc 13 Nov 12 00:44 /etc/rc2.d/S80spc -> ../init.d/spc
Via le mcanisme des liens symboliques (ou de liens hard), on regroupe au sein dun mme chier la partie dmarrage et la partie arrt.
Sur linux, on a affaire /etc/rc.d/init.d et aux rpertoires mais le principe dcrit prcdemment reste le mme.
/etc/rc.d/rc[0-9].d
70
inittab
rc0
rc3
rc0.d
rc3.d
K08audit
K22cron
K30nfs
K38nis
S10syslog S18nis
S19nfs
S21audit
71
1996 /etc/init.d/ars*
2. mettre dans le rpertoire du bon niveau un lien symbolique vers le script prcdent Par exemple :
lrwxr-xr-x 1 root sys 13 Jul 25 1996 /etc/rc2.d/S99ars -> ../init.d/ars*
La moins bonne faon de faire : 1. crire un script plac quelque part Par exemple
-rwxr-xr-x 1 root sys 355 Jul 25 1996 /etc/rc.local
72
Sous LINUX, on peut aussi grer les scripts via la commande commande
chkconfig (inspire de la
73
#!/bin/bash # # syslog Starts syslogd/klogd. # # chkconfig: 2345 12 88 # description: Syslog is the facility by which many daemons use to log \ # messages to various system log files. It is a good idea to always \ # run syslog. ...
Lecture : 2345 : script activ dans les runlevels 2, 3, 4 et 5 12 : dmarr en 12 ime position ; on parle de priorit de dmarrage 88 : arrt en 88 ime position ; on parle de priorit darrt Tous les exemples qui suivent reposent sur le script ci-dessus pour syslog.
Formation permanente ARS 7.0 74
# chkconfig --list syslog syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
75
# chkconfig --level 2 syslog off # ls -l /etc/rc[0-9].d/*syslog lrwxrwxrwx 1 root root 16 Feb lrwxrwxrwx 1 root root 16 Feb lrwxrwxrwx 1 root root 16 Jul lrwxrwxrwx 1 root root 16 Jul lrwxrwxrwx 1 root root 16 Jul lrwxrwxrwx 1 root root 16 Jul lrwxrwxrwx 1 root root 16 Feb
Formation permanente ARS 7.0
13 13 22 22 22 22 13
name off
13 13 22 22 22 22 13 09:57 09:57 13:16 13:16 13:16 13:16 09:57 /etc/rc0.d/K88syslog /etc/rc1.d/K88syslog /etc/rc2.d/S12syslog /etc/rc3.d/S12syslog /etc/rc4.d/S12syslog /etc/rc5.d/S12syslog /etc/rc6.d/K88syslog -> -> -> -> -> -> -> ../init.d/syslog ../init.d/syslog ../init.d/syslog ../init.d/syslog ../init.d/syslog ../init.d/syslog ../init.d/syslog
# ls -l /etc/rc[0-9].d/*syslog lrwxrwxrwx 1 root root 16 Feb lrwxrwxrwx 1 root root 16 Feb lrwxrwxrwx 1 root root 16 Jul lrwxrwxrwx 1 root root 16 Jul lrwxrwxrwx 1 root root 16 Jul lrwxrwxrwx 1 root root 16 Jul lrwxrwxrwx 1 root root 16 Feb # chkconfig syslog off # ls -l /etc/rc[0-9].d/*syslog lrwxrwxrwx 1 root root 16 Feb lrwxrwxrwx 1 root root 16 Feb lrwxrwxrwx 1 root root 16 Jul lrwxrwxrwx 1 root root 16 Jul lrwxrwxrwx 1 root root 16 Jul lrwxrwxrwx 1 root root 16 Jul lrwxrwxrwx 1 root root 16 Feb
Formation permanente ARS 7.0
13 13 22 22 22 22 13
name reset
# rm /etc/rc[0-9].d/*syslog # ls -l /etc/rc[0-9].d/*syslog ls: /etc/rc[0-9].d/*syslog: No such file or directory # chkconfig syslog reset # ls -l /etc/rc[0-9].d/*syslog lrwxrwxrwx 1 root root 16 Jul lrwxrwxrwx 1 root root 16 Jul lrwxrwxrwx 1 root root 16 Jul lrwxrwxrwx 1 root root 16 Jul lrwxrwxrwx 1 root root 16 Jul lrwxrwxrwx 1 root root 16 Jul lrwxrwxrwx 1 root root 16 Jul
22 22 22 22 22 22 22
78
chkconfig et processus
les scripts de dmarrage de fonctionnalits.
La commande chkconfig nagit pas sur des processus qui tourneraient dj. Elle agit sur
# ps ax | grep syslog 884 ? S 0:39 syslogd -m 0 # chkconfig syslog off # ps ax | grep syslog 884 ? S 0:39 syslogd -m 0
79
init.
Les particularits de la station sont regroupes dans le script /etc/rc.local appel par
/etc/rc.
Ce mcanisme tombe en dsutude car trop fouillis. FreeBSD 5.x.y est en voie dadoption du mcanisme des scripts de dmarrage de System-V.
80
Utilit : intervenir sur la machine Unix soit pour rparer un problme soit pour installer une partie logicielle quil est impossible de faire ultrieurement (changement de librairie dynamique par exemple).
On passe du mode mono utilisateur au mode multi utilisateur via exit qui fait se terminer le shell root du mode single user.
81
82
83
84
85
Il faudra entrer le mot de passe de lutilisateur restera en mode boot multi utilisateur.
Sur Sun, il faudra certainement rgler le type de terminal (pour pouvoir faire vi and co) :
86
Thorie : il faut suivre une procdure darrt du fait de laspect multiutilisateur : 1. Prvenir les utilisateurs 2. Signaler aux processus de se terminer proprement 3. Passer en single user 4. Flusher les disques avant dteindre (via la commande
sync).
87
Mcanisme APM
88
Mcanisme APM
Principe :
89
Mcanisme ACPI
90
Mcanisme ACPI
91
92
93
94
95
96
Formes les plus utilises : Pour redmarrer la machine : shutdown Pour arrter la machine : shutdown Pour arrter la machine : shutdown
97
98
99
Moment du reboot arriv : la machine ne sera plus joignable le temps de son redmarrage :
100
-TERM 1
-TERM 1
init
101
last :
ftp console system boot console system boot ftp console console system boot ftp ftp
dell.example.org Sun Sun Sun Sun Sun dell.example.org Tue Sat Sat Sat dell.example.org Tue dell.example.org Mon
Mar Mar Mar Mar Mar Mar Feb Feb Feb Feb Feb
14 7 7 7 7 2 28 28 28 24 23
14:54 22:30 22:29 21:57 21:53 00:48 23:24 23:23 23:22 23:20 00:28
- 00:49 (00:00) - 21:43 (7+22:18) - 23:24 (00:00) - 23:21 - 00:28 (00:01) (00:00)
102
103
104
Humour :
105
Le noyau : un ensemble de fonctions, de procdures, de structures de donnes ralisant un certain nombre de tches un excutable lanc pendant le boot un excutable contenu dans / (en gnral) Les responsabilits du noyau : fournir une interface dutilisation et de gestion efcace grer le CPU savoir piloter les diffrents types de priphriques grer les processus (cration des processus, ordonnancement, accounting) grer la mmoire (allocation aux processus, swap, paging) grer le systme de chiers (accs locaux, accs rseau, quotas) grer les autres ressources (entres/sorties, rseau etc.)
Formation permanente ARS 7.0 106
Les tches de ladministrateur concernant le noyau : assurer que le noyau du systme fonctionne correctement assurer que le noyau est congur pour reprsenter correctement le systme modier le noyau compiler le noyau
107
108
Congurer le noyau
Congurer les tailles de diverses structures mmoires (appel smit sur AIX, sam sur HP-UX,
109
Modier le noyau
110
Modier le noyau
111
Modier le noyau
Compilation du noyau
A noter que la mise en place dun nouveau noyau sans rebooter peut conduire larrt du fonctionnement de certains programmes, par exemple "ps" :
# ps -ax ps: /dev/mem: error on ktextseg: Bad address ps: could not read kernel VM
113
Compilation du noyau
Diffrences entre les systmes sources publiques et les systmes constructeurs : la compilation dun noyau implique la compilation de tous ses chiers sources. La compilation dun noyau linux est donc une procdure longue (de lordre de 6 minutes sur un bi-pentium Pro 200 MHz pour Linux). les Unix constructeurs ne fournissent pas les chiers sources mais par contre ils fournissent les chier .o rsultats de la compilation spare intermdiaire. La compilation dun noyau Unix constructeur revient : compilation de quelques chiers .c contenant lindication des pilotes installs, des tailles mmoirede certaines structures dition de liens des .o constructeurs et des .o locaux
114
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
cd /usr/src/linux-x.y.z make mrproper pour faire le mnage complet make config ou make menuconfig ou make xconfig make checkconfig facultativement make dep pour construire les chiers de dpendance pour la compilation C make clean ( faire quasi imprativement) make bzImage pour construire une image compresse make modules compilera les modules dynamiques du noyau cp bzImage /boot cp System.map /boot make modules_install
115
12. Editer /etc/lilo.conf pour reter lajout dun nouveau noyau et relancer la commande
116
2. 3. 4. 5. 6. 7. 8.
cp GENERIC MYKERNEL pour partir de la conguration par dfaut vi MYKERNEL pour diter le chier MYKERNEL pour y congurer les aspects utiles du noyau /usr/bin/config MYKERNEL pour gnrer les chiers C rsultats de la conguration cd ../compile/MYKERNEL pour se placer dans le rpertoire de compilation des sources make depend make pour compiler le noyau make install pour installer le noyau
117
/etc/system
(lide lorigine est la constatation que seul 10% des clients de SUN sont des informaticiens simplier les choses)
Formation permanente ARS 7.0
118
Noyaux modulaires
La mode est aux modules chargeables dynamiquement dans le noyau. Ils ajoutent alors les nouvelles fonctionnalits au noyau pendant quil tourne sans ncessiter darrt.
119
Noyaux modulaires
120
Noyaux modulaires
Size Info Rev Module Name 3b30 1 1 specfs (filesystem for specfs) 2bc8 1 1 TS (time sharing sched class) 4a4 1 TS_DPTBL (Time sharing dispatch table) 23538 2 1 ufs (filesystem for ufs) dc4b 226 1 rpcmod (RPC syscall) dc4b 1 1 rpcmod (rpc interface str mod) 2752b 0 1 ip (IP Streams module) 2752b 3 1 ip (IP Streams device) 11f3 1 1 rootnex (sun4u root nexus) 188 57 1 options (options driver) 14e8 12 1 sad (Streams Administrative drivers) 538 2 1 pseudo (nexus driver for pseudo) f059 32 1 sd (SCSI Disk Driver 1.255) 5f26 1 scsi (SCSI Bus Utility Routines) ca68 61 1 esp (ESP SCSI HBA Driver 1.250)
121
Le noyau Unix et les priphriques Modications dynamiques du noyau LINUX : sysctl, /etc/sysctl.conf
sysctl
-a :
-w variable=valeur :
122
Le noyau Unix et les priphriques Modications dynamiques du noyau LINUX : sysctl, /etc/sysctl.conf
Le chier /etc/sysctl.conf peut contenir des rglages faire au dmarrage de la machine. Syntaxe du type variable=valeur.
123
Le noyau Unix et les priphriques Modications dynamiques du noyau FreeBSD : sysctl, /etc/sysctl.conf
/sbin/sysctl : -a :
variable=valeur :
124
Le noyau Unix et les priphriques Modications dynamiques du noyau FreeBSD : sysctl, /etc/sysctl.conf
Le chier /etc/sysctl.conf peut contenir des rglages faire au dmarrage de la machine. Syntaxe du type variable=valeur.
Par exemple :
net.inet.ip.forwarding=1
125
/usr/sbin/ndd.
Au niveau du chier /etc/system, on peut rgler certains paramtres du noyau qui seront pris en compte au dmarrage.
Par exemple pour rendre les piles des processus non excutables :
set noexec_user_stack = 1 set noexec_user_stack_log = 1
Pour connaitre comment paramtrer certains aspects du noyau SOLARIS, se reporter au manuel Solaris Tunable Parameters Reference Manual :
http://docs-pdf.sun.com/817-1759/817-1759.pdf
127
128
tout se ramne des fonctions du langage C daccs des chiers interface unie de programmation
129
objets priphriques blocs (test -b toto) ou objets priphriques caractres (test -c toto) : ils font rfrence des priphriques crw-r----- 1 root operator 13, 0 Jun 10 13:27 /dev/rsd0a brw-r----- 1 root operator 4, 0 Jun 10 13:27 /dev/sd0a pipes nomms ou FIFO (test -p toto) prw-r--r-1 besancon software sockets (test -S toto) srwxrwxrwx 1 root bin
0 Sep
4 17:21 /tmp/.X11-unix/X0
liens symboliques (test -L toto) lrwxrwxrwx 1 root wheel 23 Jun 10 13:24 /etc/termcap@ -> \ /usr/share/misc/termcap
Formation permanente ARS 7.0 130
Rpertoire /dev
Traditionnellement, le script /dev/MAKEDEV cre les chiers spciaux ncessaires par dfaut au systme (boot
-r sur Solaris).
Les droits daccs aux chiers spciaux dans /dev sont trs importants. Une prcaution : conserver une trace crite dun "ls
-l" de /dev
131
Rpertoire /dev
disques en mode caractre disques en mode bloc bandes magntiques pseudo-terminaux esclaves pseudo-terminaux matres
132
Rpertoire /dev
Les machines LINUX ont une position intermdiaire : moiti organise moiti en vrac
# du -k /dev 0 /dev/pts 4 /dev/ataraid 32 /dev/cciss 4 /dev/compaq 4 /dev/cpu/0 4 /dev/cpu/1 ... 4 /dev/cpu/9 68 /dev/cpu 4 /dev/dri 32 /dev/i2o 32 /dev/ida 4 /dev/inet 4 /dev/input 12 /dev/logicalco 4 /dev/net 4 /dev/raw 68 /dev/rd 4 /dev/scramdisk 0 /dev/shm 4 /dev/usb 4 /dev/video 4 /dev/video1394 4 /dev/snd 4 /dev/cpqhealth 436 /dev
133
Mode bloc
-l :
brw-r----- 1 root operator 4, 0 Jun 10 13:27 /dev/sd0a brw-r----- 1 root sys 32, 8 Jul 9 1999 /dev/dsk/c0t1d0s0
Ce mode concerne surtout les disques durs : la lecture dun octet de donnes se traduit par la lecture dun bloc complet conserv alors dans un peu de mmoire du noyau, le buffer cache. la lecture de donnes supplmentaires passe par la consultation du cache dabord une criture est asynchrone : les donnes sont crites dans le buffer cache les donnes crites sajoutent au buffer cache en cas de remplissage du cache, les donnes sont crites sur disque et le cache se vide
Finalit du mode bloc : minimaliser les entres / sorties Les transferts se font toujours par blocs de taille xe.
134
Mode bloc
Buffer Cache
Block
135
Mode caractre
-l :
crw-r----- 1 root operator 13, 0 Jun 10 13:27 /dev/rsd0a crw-r----- 1 root sys 32, 8 Jan 6 2000 /dev/rdsk/c0t1d0s0
Un priphrique en mode caractre accepte un transfert dune quantit quelconque doctets. Pas de transit par une zone cache intermdiaire.
accs rapide
Dautres oprations sont permises selon le priphrique en mode caractre : formatage rglage de paramtres de liaison srie autres oprations de bas niveau ... Les priphriques en mode block ont souvent aussi une interface en mode caractres.
136
Mode caractre
Buffer Cache
Block
137
Device drivers/Pilotes
un device driver par priphrique de type diffrent. installation au niveau du noyau Unix du device driver (donc reconguration en cas dajout de
device) ; linstallation est spcique chaque Unix.
138
Device drivers/Pilotes
Buffer Cache
Block
139
140
Qui connait les minor et les major numbers mettre en paramtres ? Ils ne sinventent pas ! La rponse est dans le systme !
141
Le systme gre dynamiquement les devices au fur et mesure quil rencontre des priphriques.
umass0: M-Systems DiskOnKey, rev 1.10/2.00, addr 3 umass0: Get Max Lun not supported (SHORT_XFER) da0 at umass-sim0 bus 0 target 0 lun 0 da0: <M-Sys DiskOnKey 2.51> Removable Direct Access SCSI-0 da0: 1.000MB/s transfers
142
143
144
On a une liste exhaustive des minors et majors pour les drivers de base. Sur ces systmes, le
MAKEDEV.local
145
Copie de devices : dd
Exemple 1
Gnrer un chier de 50 Mo :
# dd if=/dev/zero of=grosfichier bs=1M count=50 50+0 records in 50+0 records out 52428800 bytes transferred in 3.533640 secs (14837052 bytes/sec) # ls -l grosfichier -rw------- 1 besancon 52428800 Nov 16 01:27 grosfichier
146
Exemple 2
Copie de devices : dd
147
Exemple 2 bis
Copie de devices : dd
148
Systmes de chiers
Exemple rcent : Source : LIBRATION vendredi 18 juin 2004 (Reuters - 08 :32) par Lucas van Grinsven L ES SITES DE STOCKAGE DE PHOTOS NUMRIQUES SE MOBILISENT AMSTERDAM - Trouver un stockage gratuit pour leurs donnes en ligne est devenu une proccupation de millions dinternautes, que ce soit pour leur courrier lectronique ou leurs photographies numriques. Deux des principaux sites de photographie numrique, Ofoto (www.ofoto.com), contrl par Kodak, et Fotango (www.photos.fotango.com), dtenu par Canon, proposent une capacit illimite de sauvegarde. Ofoto revendique plus de 13 millions dusagers pour 450 millions de photos stock es sur ses serveurs. Chaque semaine, le site ajoute cinq traoctets de mmoire pour accueillir cinq millions de nouvelles images. Comment cela marche-t-il ?
Formation permanente ARS 7.0 149
Systmes de chiers
(source http://www.almaden.ibm.com/sst/)
150
Systmes de chiers
Perspectives :
(source http://www.almaden.ibm.com/sst/)
151
Systmes de chiers
(source http://www.almaden.ibm.com/sst/)
152
Systmes de chiers
(source http://www.almaden.ibm.com/sst/)
153
Systmes de chiers
Une tte de lecture dun disque dur est un objet trs sophistique, trs fragile en cas de choc :
(source http://www.almaden.ibm.com/sst/)
154
Systmes de chiers
155
Systmes de chiers
Limitations de SCSI 2 : limitation 16 priphriques par bus SCSI longueur de cable limite lajout de priphrique diminue la longueur de cable autoris cest du parallel SCSI
156
Systmes de chiers
Amliorations : SCSI 3 passage dun cable de cuivre du bre chanel dont les trames peuvent transiter sur du cable de cuivre ou sur de la bre optique nombre de priphriques illimit (limite 16 millions) dcomposition de la norme SCSI 3 en plusieurs couches (la norme SCSI 3 20 documents
157
Systmes de chiers
Systmes de chiers
http://support.wdc.com/download/index.asp#diagutils
applications pour disques de marque Seagate :
http://www.seagate.com/support/seatools/
applications pour disques de marque Hitachi :
http://www.hitachigst.com/hdd/support/download.htm
applications pour disques de marque Fujitsu :
http://www.fcpa.com/support/hard-drives/software_utilities.html
applications pour disques de marque Maxtor :
http://www.maxtor.com/en/support/downloads/
applications de la socit OnTrack pour marques diverses de disques :
http://www.ontrack.fr/
159
Systmes de chiers
160
Systmes de chiers
Solution du NAS : une machine spcialise quipe de disques RAID et qui sert ces chiers via le rseau IP en protocoles NFS, CIFS en gnral.
http://www.netapp.com.
161
Systmes de chiers
162
Systmes de chiers
Technologie RAID
Papier historique : A Case tor Redundant Arrays of Inexpensive Disks (RAID) par Patterson, Gibson, et Katz de lUniversit de Berkeley Californie.
http://sunsite.berkeley.edu:80/Dienst/Repository/2.0/Body/ncstrl.ucb/CSD-87-391/pdf
163
Systmes de chiers
Technologie RAID
Principe la louche : on nutilise plus de disques durs indpendants mais un ensemble de disques durs (en gnral rackable) grs par des contrleurs disques spcialiss.
Lensemble est cens encaisser la panne dau moins un disque dur. En cas de panne dun disque dur, le systme continue de travailler. Un disque en remplacement sera rempli par des donnes reconstruites partir des donnes sur le reste des disques de lensemble.
164
Systmes de chiers
Technologie RAID
Avantages :
les donnes sont dcoupes en blocs (A, B, C, etc.) crits sur des disques distincts
Inconvnients :
maximum de performance
Systmes de chiers
Technologie RAID
Avantages :
les donnes sont dcoupes en blocs (A, B, C, etc.) crits sur des disques jumeaux
Inconvnients :
simple raliser
pas trs efcace (100% de disques en plus) charge le CPU en gnral (car ralisation en logiciel et pas en hardware)
166
Systmes de chiers
Technologie RAID
disque
Systmes de chiers
Technologie RAID
Avantages :
on vrie la parit du stripe lors des lectures taux lev de lectures ou dcritures
Inconvnients :
Systmes de chiers
Technologie RAID
Principe du RAID 4 :
minimum de 3 disques on travaille par bloc doctets que lon disperse sur les disques durs
on calcule la parit de ces blocs que lon crit sur le disque ddi de parit
Systmes de chiers
Technologie RAID
Principe du RAID 5 :
minimum de 3 disques chaque bloc doctets est crit sur un disque
Avantages :
la parit est disperse sur tous les disques vitant ainsi un goulet dtranglement du RAID 4. Fort taux de transfert en lecture, taux moyen en criture
Inconvnients :
Systmes de chiers
DISK 1 00010011 (0x13) 00011100 (0x1C) 01010111 (0x57) 00010011 (0x13) 00110101 (0x35) DISK 2 01001111 (0x4F) 01101000 (0x68) 00000001 (0x01)
Technologie RAID
DISQUE DEFAILLANT
DISK 3 00011100 (0x1C) 00110101 (0x35) 00000000 (0x00) 10111010 (0xBA) 00000000 (0x00) 01100011 (0x63) 10111100 (0xBC) 10001000 (0x88)
DISK 2
DISQUE RECONSTRUIT
DISK 4
01001111 (0x4F) 01100011 (0x63) 00100000 (0x20) 01010111 (0x57) 10111010 (0xBA) 00100000 (0x20) 01001011 (0x4B) PARITY 11001101 (0xCD) 01101000 (0x68) 10111100 (0xBC) 01001011 (0x4B)
171
Systmes de chiers
Filesystem
19.9 Filesystem
Filesystem structure performante de gestion des chiers
Exemple : Fast File System dit FFS, EXT2 ou EXT3 de LINUX, etc.
Brivement, en voici quelques caractristiques : 1. Notion dinode 2. Notion dcriture gographiquement proche 3. Optimisation de la gestion de la liste des blocs libres 4. Stratgie dallocation des blocs
172
Systmes de chiers
173
Systmes de chiers
Pourquoi partitionner un disque dur en lesystems ? pour cloisonner les utilisateurs cest--dire les problmes pour faciliter les sauvegardes pour limiter lexpansion de certains utilisateurs au dtriment des autres pour faciliter lutilisation de NFS (Network File System)
Problmes courants avec les partitions : Une partition est pleine alors quune autre, surdimensionne est quasi vide. Les diffrents constructeurs divergent sur les implmentations des partitions.
Une partition peut contenir : un lesystem une zone de swap, sans structure de lesystem plaque dessus rien ; la partition est rserve pour un usage ultrieur
174
Systmes de chiers
Les informations concernant les partitions sont stockes dans une zone du disque dite disk label (sur SunOS dans le premier secteur de la premire partition).
Le disk label contient : caractristiques physiques du disque paramtres de partitionnement secteurs dfectueux Les commandes pour dposer un disk label sont propres chaque constructeur (disklabel,
format . . .) :
Sur Solaris : format Sur Linux : fdisk
175
Systmes de chiers
raw-device
prtvtoc /dev/rdsk/c1t1d0s2 /dev/rdsk/c1t1d0s2 partition map Dimensions: 512 bytes/sector 417 sectors/track 6 tracks/cylinder 2502 sectors/cylinder 14342 cylinders 14340 accessible cylinders Flags: 1: unmountable 10: read-only First Sector Last Sector Count Sector 0 35878680 35878679 0 35878680 35878679
Partition 0 2
Tag 8 5
Flags 00 01
176
Systmes de chiers
-l
# /sbin/fdisk -l /dev/hdc Disk /dev/hdc: 16 heads, 63 sectors, 148945 cylinders Units = cylinders of 1008 * 512 bytes Device Boot /dev/hdc1 /dev/hdc2 /dev/hdc3 Start 1 4163 75001 End 4162 75000 148945 Blocks 2097616+ 35702352 37268280 Id 82 83 83 System Linux swap Linux Linux
177
Systmes de chiers
b c
178
Partitions System-V
Les noms des partitions sont de la forme /dev/dsk/c d s , o :
Systmes de chiers
est le numro du contrleur ; est le numro du disque ; est le numro de la section sur le disque.
179
Partitions LINUX
IDE de base.
Systmes de chiers
Il y aura une diffrence selon que les disques utiliseront des contrleurs autres que les contrleurs
Used Available Use% Mounted on 244640 734976 25% / 23066 37073 39% /boot 62636 1896680 4% /tmp 1686152 2232536 44% /var 3069260 849460 79% /usr 276480 3642208 8% /home
Used Available Use% Mounted on 24691344 6528672 80% / 10991 82657 12% /boot 12628172 20596696 39% /share/vmware2
180
Partitions SOLARIS
/dev/dsk/c t d s (contrleur, target, disk, slice) :
% df -F ufs -k Filesystem /dev/dsk/c0t0d0s0 /dev/dsk/c0t0d0s6 /dev/dsk/c0t1d0s0 /dev/dsk/c0t1d0s1 /dev/dsk/c0t0d0s5 kbytes used avail capacity 246167 60541 161010 28% 962582 419332 485496 47% 1015695 822607 132147 87% 7717573 3463222 4177176 46% 183687 13017 152302 8%
Systmes de chiers
181
Partitions BSD
Systmes de chiers
Les noms typiques sont de la forme /dev/ est un code mnmonique du driver ; est le numro du disque ;
o :
% df Filesystem /dev/sd0a
1K-blocks 95359
Used 42623
Mounted on /
182
Systmes de chiers
[options] fichier-spcial
183
Systmes de chiers
newfs offre des options simples et appelle en fait derrire mkfs avec ce quil faut. [options] fichier-spcial
Options intressantes : option -m : prcise la taille de minfree. option -i : prcise le nombre doctets de donnes pour un inode (2048 octets pour un inode par dfaut). option -v : afche la commande
184
Systmes de chiers
# newfs -v /dev/rdiskette newfs: construct a new file system /dev/rdiskette: (y/n)? y mkfs -F ufs /dev/rdiskette 2880 18 2 8192 1024 16 10 5 2048 t 0 -1 8 16 /dev/rdiskette: 2880 sectors in 80 cylinders of 2 tracks, 18 sectors 1.4MB in 5 cyl groups (16 c/g, 0.28MB/g, 128 i/g) super-block backups (for fsck -F ufs -o b=#) at: 32, 640, 1184, 1792, 2336,
185
Systmes de chiers
186
Systmes de chiers
Attention : 1. Le point de montage doit exister avant de lancer la commande. 2. Le contenu du point de montage devient invisible aprs le montage. 3. On ne peut monter un lesystem que si celui-ci a une structure interne marque comme cohrente (cf la suite sur fsck) :
# mount /users WARNING: R/W mount of /users denied. Filesystem is not clean - run fsck.
187
Systmes de chiers
point-de-montage
Attention : on ne peut pas dmonter une partition 1. si une commande sexcute dans la partition 2. si des chiers sont ouverts dans la partition 3. si lon a un rpertoire courant dans un rpertoire de la partition (ce qui se ramne avoir un le descripteur ouvert sur la partition dans tous les cas)
188
Systmes de chiers
A verifier...
Formation permanente ARS 7.0 189
Systmes de chiers
# cd /mnt # umount /mnt umount: /mnt: Device busy # fuser /mnt /mnt: 17853c 10237c # echo $$ 17853
190
Systmes de chiers
lsof
ftp://vic.cc.purdue.edu/pub/tools/unix/lsof/
# cd /mnt # umount /mnt umount: /mnt: # lsof /mnt COMMAND PID bash 21372 lsof 21376 lsof 21377 # echo $$ 21372
Device busy USER root root root FD cwd cwd cwd TYPE DEVICE SIZE/OFF NODE NAME VDIR 36,2 512 2 /mnt VDIR 36,2 512 2 /mnt VDIR 36,2 512 2 /mnt
191
Systmes de chiers
192
Systmes de chiers
On peut limiter lafchage certains types de lesystems : Sur LINUX et la plupart des Unix traditionnels :
df -t type-du-filesystem
(par exemple sur LINUX : types ext2, ext3, iso9660, proc, nfs)
df -F type-du-filesystem
(par exemple : types ufs, hsfs, proc, lofs, nfs)
193
Systmes de chiers
On peut limiter lafchage aux disques locaux (ie prsents sur la machine mme) :
Used Available Use% Mounted on 6080340 8471184 42% / 34981 208434 15% /boot
194
Systmes de chiers
On peut limiter lafchage aux disques locaux (ie prsents sur la machine mme) :
195
Systmes de chiers
Attention : df peut bloquer sur un montage dfaillant (disque presque en panne, serveur rseau
injoignable).
df renvoie la liste des partitions montes la commande fdisk -L renvoie la liste des partitions dun disque, que les partitions soient
montes ou pas
196
Systmes de chiers
% mount / on /dev/dsk/c0t0d0s0 read/write/setuid/intr/largefiles/logging/onerror=panic/dev=2200000 \ on Tue Oct 10 17:49:13 2000 /usr on /dev/dsk/c0t0d0s3 read/write/setuid/intr/largefiles/logging/onerror=panic/dev=2200003 \ on Tue Oct 10 17:49:13 2000 /proc on /proc read/write/setuid/dev=2d80000 on Tue Oct 10 17:49:11 2000 /dev/fd on fd read/write/setuid/dev=2e40000 on Tue Oct 10 17:49:14 2000 /etc/mnttab on mnttab read/write/setuid/dev=2f40000 on Tue Oct 10 17:49:16 2000 /var on /dev/dsk/c0t0d0s4 read/write/setuid/intr/largefiles/logging/onerror=panic/dev=2200004 \ on Tue Oct 10 17:49:16 2000 /var/run on swap read/write/setuid/dev=1 on Tue Oct 10 17:49:16 2000 /tmp on swap read/write/setuid/dev=2 on Tue Oct 10 17:49:18 2000 /opt on /dev/dsk/c0t0d0s5 read/write/setuid/intr/largefiles/logging/onerror=panic/dev=2200005 \ on Tue Oct 10 17:49:19 2000 /infosystems on /dev/dsk/c0t0d0s6 read/write/setuid/intr/largefiles/logging/onerror=panic/dev=2200006 \ on Tue Oct 10 17:49:19 2000 /users on serveur.example.com:/users remote/read/write/setuid/dev=2fc0001 \ on Tue Oct 10 17:49:24 2000 /logiciels on serveur.example.com:/logiciels remote/read/write/setuid/dev=2fc0002 \ on Wed Oct 11 10:17:21 2000
197
Systmes de chiers
Attention : mount peut bloquer sur un montage dfaillant (disque presque en panne, serveur
rseau injoignable).
mount renvoie la liste des partitions montes la commande fdisk -L renvoie la liste des partitions dun disque, que les partitions soient
la commande montes ou pas
198
Systmes de chiers
-a".
199
Systmes de chiers
champ 1 : nom du chier spcial champ 2 : point de montage champ 3 : type de esystem champ 4 : options de montage champ 5 : utilis par la commande "dump" champ 6 : numro dordre du disque lors dune vrication de cohrence des disques par la
commande fsck Une fois renseign le chier /etc/fstab, on peut : monter la totalit des partitions : mount -a monter une certaine partition : mount partition comme par exemple : # mount /var
200
Systmes de chiers
Une limite est en fait compose dun couple de valeurs : limite soft : Aucune alarme nest active tant quon reste en dessous de cette limite. Si lon dpasse ce seuil, il y a une alarme qui est active. Des messages derreur apparaissent. Lutilisateur a 7 jours pour revenir en dessous de ce seuil. Au del de 7 jours, toute consommation de ressources supplmentaires est bloque. limite hard : Cest un seuil suprieur indpassable. Lutilisateur sil dpasse la limite soft peut continuer de consommer des ressources concurrence de la limite hard.
201
Systmes de chiers
Par exemple :
% quota -v besancon Disk quotas for besancon (uid 4332): Filesystem usage quota limit timeleft /adm 98696 80000 100000 7.0 days
files 4959
quota 4000
limit 5000
besancon dpasse son quota soft et a 7 sept jours pour revenir en dessous des 2
202
Systmes de chiers
Les commandes de gestion des quotas sont : Commande Description Afche lutilisation disque de lutilisateur et son quota Recalcule les quotas utiliss Active les quotas Dsactive les quotas Rapport de situation des quotas Modication du quota dun utilisateur
# repquota -v -a /dev/sd3g (/adm): User besancon Block limits used soft hard timeleft 98696 80000 100000 7.0 days used 4959 soft 4000 File limits hard timeleft 5000 7.0 days
++
203
Systmes de chiers
Lactivation du systme de quotas ncessite les points suivants : 1. Le noyau doit supporter le mcanisme des quotas. En effet laspect comptabilit incombe au noyau. 2. Le lesystem doit supporter les quotas. 3. Les quotas doivent tre activs lors du montage de la partition : (a) Prciser que le lesystem est mont avec les quotas activs au niveau de /etc/fstab ou quivalent :
/dev/sd3g
(b) Lancer
/adm
4.2
rw,quota
1 4
quotaon. De prfrence pendant le boot de la station. Une opration quotacheck doit tre lance au pralable an davoir un tat cohrent des quotas. Cela
peut ralentir le boot.
4. Les quotas doivent tre entrs pour chaque utilisateur. Cest une opration automatisable au moyen dun squelette type et de la commande
edquota.
204
Systmes de chiers
Un objet est identi sur une partition de disque dur par son numro dinode (index node) et non pas par son nom. Linode nest unique quau sein dune mme partition. Le systme manipule en fait les objets via un couple (disque, inode).
205
Systmes de chiers
206
Systmes de chiers
La structure inode (cf <sys/ufs/dinode.h>) dcrit un objet de la faon suivante : type de lobjet droits daccs nombre de liens ; quand il passe 0 et que lobjet nest plus utilis, lobjet est dtruit et la place est rcupre. UID, GID taille dates de dernire modication, consultation etc. localisation sur le disque des blocs de lobjet
207
Systmes de chiers
La structure inode (128 octets) ne peut pas contenir la liste complte de tous les blocs utiliss. On utilise donc le principe de liste indirecte :
I-Node.
Other Info
Block Addresses
direct
Legend
Data block, contains actual file data Indirect blocks, contain about 256 block pointers
208
Systmes de chiers
Un bloc a pour taille 4 ko (4096 octets). Une adresse de bloc occupe 4 octets.
Linode contient 13 numros de blocs : les 12 premiers sont les numros des 12 premiers blocs de donnes du chier ; le suivant indique le numro dun bloc indirect : il contient les numros des blocs de donnes partir du onzime. Il adresse donc 1024 blocs. le douzime numro est le numro dun bloc. Celui-ci contient 1024 numros de blocs indirects, cest--dire que chacun de ces 1024 blocs adressent un bloc de donnes ; le treizime numro suit cette logique avec une triple indirection.
octets
octets
Le troisime niveau dindirection est quasi inutilis car le remplissage des blocs indirects et indirects de niveau 1 et 2 assure dj une taille de chiers > 4 Go.
Formation permanente ARS 7.0 209
Systmes de chiers
Syntaxe : Sur LINUX et la plupart des Unix traditionnels : df Sur SUN Solaris : df
-i
-e
210
Systmes de chiers
% df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/hda3 2280320 318523 1961797 14% / /dev/hda1 66264 50 66214 1% /boot none 193904 1 193903 1% /dev/shm mailhost.example.com:/var/mail 7654398 17808 7636590 1% /var/mail
211
Systmes de chiers
212
Systmes de chiers
Inodes 0, 1, 2 et 3
19.27 Inodes 0, 1, 2 et 3
Points importants dans la logique du fonctionnement du lesystem : Certains directories ont des numros dinodes bien prcis
% /bin/ls -lai / 2 drwxr-sr-x 22 root 2 drwxr-sr-x 22 root 3 drwxr-xr-x 2 root
512 Sep 11 15:11 . 512 Sep 11 15:11 .. 8192 Aug 8 17:38 lost+found
Le numro dinode 0 sert marquer les inodes inutiliss. Le numro dinode 1 est rserv.
213
Systmes de chiers
Rpertoire lost+found
Points importants dans la logique du fonctionnement du lesystem : Le directory lost+found (inode 3) est cre automatiquement par la commande newfs La taille du directory (vide) est sufsamment grande pour y stocker des numros dinodes deconnects dans des conditions prcaires :
% ls -l /lost+found -rw------1 root drwxr-xr-x 2 mailman sys 101 0 Mar 512 Jun 1 2 1996 #155782 2000 #091584
Selon le constructeur, il existe ou pas une commande spciale pour reconstruire ce directory.
214
Systmes de chiers
Buffer Cache
Block
215
Systmes de chiers
Quelques constatations : 1. Les lesystems sont constamment modis. 2. Il peut arriver que des informations se perdent en cas de dysfonctionnement du matriel. 3. Il y a le cache buffer. Le buffer cache conserve des donnes dont on retarde lcriture sur disques (exception faite pour les rpertoires, les superblocks, etc.).
besoin de provoquer lcriture sur disque du contenu du buffer cache. commande manuelle sync pour cela.
Lors de lecriture manuelle sur disque du buffer cache, le lesystem est marqu FSCLEAN.
216
Systmes de chiers
Lors de lcriture chronique sur disque du buffer cache, le lesystem est marqu FSCLEAN.
217
Systmes de chiers
Lors du boot dune machine, si un lesystem est marqu FSCLEAN, fsck ne vrie pas ce lesystem. On se trouve dans ces conditions si la machine a t arrte ou redmarre en utilisant des commandes comme fastboot, fasthalt etc.
218
Systmes de chiers
Plusieurs vrications sont effectues par fsck : le super-block contient le bon nombre de blocs libres ; le super-block contient le bon nombre dinodes libres ; le super-block contient la bonne taille de la partition ; un bloc de donnes appartient un et un seul chier, ou la liste des blocs libres ; un inode, sil est rfrenc
un inode est soit utilis, soit dans la liste des inodes libres ; la taille du chier correspond au nombre de blocs allous ; tout rpertoire contient une entre pour . et .. ; une entre dans un rpertoire doit rfrencer un inode non libre.
219
Systmes de chiers
/users Blocks and Sizes Pathnames Connectivity Reference Counts Cyl groups IN SUPERBLOCK
23423 files, 1174684 used, 2946897 free (6641 frags, 367532 blocks, 0.2% fragmentation) ***** FILE SYSTEM WAS MODIFIED *****
220
Systmes de chiers
221
Systmes de chiers
Syntaxe :
Quelques rgles : Ne jamais lancer fsck sur une partition active, monte car cela peut conduire un tat instable du lesystem. Si possible, lancer fsck en tant en single user. En cas de fsck sur /, redmarrer juste aprs sans sauver le buffer cache.
222
Systmes de chiers
Prsence dun fsck l o lon ne sy attend pas toujours : dmarrage dun switch CISCO rcent :
C2950 Boot Loader (C2950-HBOOT-M) Version 12.1(11r)EA1, RELEASE SOFTWARE (fc1) Compiled Mon 22-Jul-02 17:18 by antonino WS-C2950-24 starting... Base ethernet MAC Address: 00:0b:46:eb:9b:c0 Xmodem file system is available. Initializing Flash... flashfs[0]: 17 files, 2 directories flashfs[0]: 0 orphaned files, 0 orphaned directories flashfs[0]: Total bytes: 7741440 flashfs[0]: Bytes used: 3961856 flashfs[0]: Bytes available: 3779584 flashfs[0]: flashfs fsck took 6 seconds. ...done initializing flash. Boot Sector Filesystem (bs:) installed, fsid: 3 Parameter Block Filesystem (pb:) installed, fsid: 4 Loading "flash:/c2950-i6q4l2-mz.121-11.EA1.bin"...############################## ################################################################################ ################################################################################ ################################################################################ ########### File "flash:/c2950-i6q4l2-mz.121-11.EA1.bin" uncompressed and installed, entry point: 0x80010000 executing...
Formation permanente ARS 7.0 223
Systmes de chiers
Ceci explique que lon puisse remplir une partition plus de 100% :
# df -t ufs /mnt Filesystem 1K-blocks /dev/sd0s1d 1702685 Used 1638403 Avail Capacity -71932 105% Mounted on /mnt
Systmes de chiers
225
Systmes de chiers
Snapshots
19.34 Snapshots
Snapshot clich instantan du lesystem (terme de photographie)
Avantages : snapshot rapide construire backup dune image stable dun lesystem rcupration facile et simple dun chier
226
Systmes de chiers
Snapshots
fssnap)
Disponible partir de FreeBSD 5 (option de /etc/fstab : snapshot) Mais plante le noyau dune machine multiprocesseur en 5.0. . .
http://www.netapp.com
227
Systmes de chiers
Snapshots
228
Systmes de chiers
Snapshots
C2
229
Systmes de chiers
Snapshots
Le lesystem est conu pour travailler conjointement avec les snapshots. Il va dupliquer le bloc que lon veut modier car le lesystem sait que ce bloc est associ un snapshot. Il modier la copie du bloc. Le snapshot pointe toujours sur les mmes blocs.
C2
Systmes de chiers
(Windows : : Snapshots)
http://www.laboratoire-microsoft.org/articles/win/wolume_shadow_copy/0/
Approche diffrente des systmes Unix : sur Unix : le snapshot est fait indpendamment de lapplication ; un snapshot dune base de donnes sil est invalide va conduire la base de donnes faire une rparation du snapshot dlai de retour la normale. . . sur Windows : le snapshot sera toujours sain ; une application pourra se er un snapshot et lutiliser comme point de reprise immdiat.
Formation permanente ARS 7.0 231
Systmes de chiers
(Windows : : Snapshots)
232
Application Writers
chiers et limportance des chiers quelles utilisent.
Systmes de chiers
(Windows : : Snapshots)
Les applications sont les utilisatrices des snapshots car elles savent mieux que le lesystem les
Il faut donc rendre une application compatible avec VSS moyennant un kit de dveloppement Microsoft, Microsoft snapshot SDK (disponible en NDA).
Les applications ainsi modies sont des Snapshot Writers : Lapplication sera responsable de retenir lactivit en criture le temps de tenter la cration du snapshot. Si lapplication na pas pu retenir le ux dcriture, alors le snapshot nest pas sain mais lapplication le sait. Si le ux dcriture a pu tre retenu, le snapshot est sain et lapplication le sait.
233
Backup requestors
restoration de la machine.
Systmes de chiers
(Windows : : Snapshots)
Ces programmes de backup doivent tre modis au moyen du Microsoft snapshot SDK pour tre rendus compatibles avec VSS.
Principe de la sauvegarde : voir pages suivantes Principe de la restoration : voir pages suivantes
234
Systmes de chiers
(Windows : : Snapshots)
Principe de la sauvegarde :
235
Systmes de chiers
(Windows : : Snapshots)
Principe de la restoration :
236
Systmes de chiers
(Windows : : Snapshots)
237
Systmes de chiers
LVM
cration dynamique de lesystems supporte davantage que les 8 partitions classiques dun seul disque dur redimensionnement dynamique de lesystems actifs suppression de lesystems ajout de disques online
Un LVM est un avantage. Un LVM est dlicat manipuler. Un LVM est spcique chaque Unix.
238
Systmes de chiers
Filesystem journalis
Le journal correspond une zone disque rserve dans laquelle sont ranges squentiellement toutes les mises jour de donnes, et ce, avant leur mise jour effective dans le systme de chiers.
Lors dun crash machine, la relecture du journal permet de reconstituer la totalit des systmes de chiers en quelques secondes. Il ny a plus besoin de recourir fsck.
Formation permanente ARS 7.0 239
Systmes de chiers
Filesystem journalis
SECTION DE DONNEES
root usr tmp people
JOURNAL
... En 1 En En + 1 ...
Point de sauvegarde Point de depart pour reexecuter les actions effectuees avant le crash
240
Systmes de chiers
X.
La gravure de CD/DVD se fait en deux tapes sous Unix : 1. construction dune image de larborescence graver ; le format est dit ISO 9660 avec les extensions Rock Ridge pour grer les noms longs des chiers et des rpertoires ainsi que des choses spciales comme les liens symboliques 2. gravure de limage iso La commande la plus connue pour faire cela est mkisofs , disponible lURL
Exemple 1
Systmes de chiers
% mkisofs -r -J -o image.iso arborescence Using UNIX_000.EPS;1 for /unix-fork.eps (unix-fork-exec.eps) Using VANGO000.;1 for arborescence/poubelle/vangogh-ps-ef (vangogh-ps-e) Using TASKM000.EPS;1 for arborescence/windows/taskmgr-07.eps (taskmgr-06.eps) Using TASKM001.EPS;1 for arborescence/windows/taskmgr-06.eps (taskmgr-05.eps) Using TASKM002.EPS;1 for arborescence/windows/taskmgr-05.eps (taskmgr-03.eps) Using TASKM003.EPS;1 for arborescence/windows/taskmgr-03.eps (taskmgr-02.eps) Using TASKM004.EPS;1 for arborescence/windows/taskmgr-02.eps (taskmgr-01.eps) Using TASKM000.GIF;1 for arborescence/windows/taskmgr-07.gif (taskmgr-06.gif) Using TASKM001.GIF;1 for arborescence/windows/taskmgr-06.gif (taskmgr-05.gif) Using TASKM002.GIF;1 for arborescence/windows/taskmgr-05.gif (taskmgr-03.gif) Using TASKM003.GIF;1 for arborescence/windows/taskmgr-03.gif (taskmgr-02.gif) Using TASKM004.GIF;1 for arborescence/windows/taskmgr-02.gif (taskmgr-01.gif) Using CHROO000.DIA;1 for arborescence/chroot/chroot.dia~ (chroot.dia) 61.28% done, estimate finish Sat Oct 23 13:03:57 2004 Total translation table size: 0 Total rockridge attributes bytes: 4284 Total directory bytes: 10240 Path table size(bytes): 64 Max brk space used 10000 8184 extents written (15 Mb)
Formation permanente ARS 7.0 242
Exemple 2
musical).
Systmes de chiers
On veut une image ISO partir dun CDROM que lon a (CDROM de chiers informatiques, pas CD
employer la commande dd :
% dd if=/dev/cdrom of=/tmp/image.iso bs=128k
243
Exemple 3
Systmes de chiers
ATTENTION : pour des backups systme, ne pas utiliser loption -r mais lui prfrer loption -R. Sinon les droits enregistrs seront incorrects et ne reteront pas les vrais droits.
Soit des chiers protgs :
# mkisofs -r -J -o /tmp/image.iso .
on obtient aprs gravure un CDROM o les droits et les propritaires des chiers sont :
root root
Tous les chiers dans data sont lisibles ! ! ! Tous les chiers sont proprit de root ! ! !
Systmes de chiers
Si lon fait :
# mkisofs -R -J -o /tmp/image.iso .
on obtient aprs gravure un CDROM o les droits et les propritaires des chiers sont :
Tous les chiers ont conserv leurs droits originaux. La sauvegarde systme est utilisable.
245
Systmes de chiers
Avantages : Permet de tester une image avant de la graver peut-tre pour rien Gain de temps si lon peut monter limage ISO car on vite la phase de gravure sur le support CDROM, support altrable (rayures, cassabilit, etc.) Limage ISO nest pas rayable, cassable
Dfauts : Limage ISO peut-tre corrompue lors dun transfert rseau par exemple. Ncessit de faire un checksum de limage et de la vrier.
246
Systmes de chiers
# mount -o loop -t iso9660 /var/tmp/image.iso # ls /mnt/iso 20041013 factures __THIS_IS_SAE5_DATA__ html cisco pamo # umount /mnt/iso
247
Systmes de chiers
commande mount traditionnelle 3. dmonter le device de type block aps utilisation commande umount traditionnelle 4. dissocier le device de type block commande lofiadm
commande lofiadm
248
Systmes de chiers
# lofiadm -a /var/tmp/image.iso /dev/lofi/1 # mount -r -F hsfs /dev/lofi/1 /mnt/iso # ls /mnt/iso 20041013 factures __THIS_IS_SAE5_DATA__ html cisco pamo # umount /mnt/iso # lofiadm -d /dev/lofi/1
249
Systmes de chiers
commande mount traditionnelle 3. dmonter le device de type block aps utilisation commande umount traditionnelle 4. dissocier le device de type block commande mdconfig (anciennement vnconfig)
vnconfig)
250
Systmes de chiers
# mdconfig -a -t vnode -f /var/tmp/image.iso md0 # mount -t cd9660 /dev/md0 /mnt/iso # df -k /mnt/iso Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md0 354240 354240 0 100% /mnt/iso # ls /mnt/iso 20041013 factures pgsql __THIS_IS_SAE5_DATA__ html rr_moved cisco pamo shares # umount /mnt/iso # mdconfig -d -u md0
251
Systmes de chiers
On peut monter une image ISO 9660 via le logiciel gratuit DAEMONTOOLS disponible lURL
252
Systmes de chiers
http ://www.fokus.fhg.de/research/cc/glone/employees/ joerg.schilling/private/cdrecord.html. logiciel avec interface graphique : K3B, site ofciel http://www.k3b.org
253
Systmes de chiers
La gravure dune image ISO sous LINUX se fait par les commandes suivantes : pour graveur CDRW IDE : commande fournie par SOLARIS : cdrw pour graveur DVD+-RW IDE : commande fournie par SOLARIS : cdrw (selon niveau de patch) pour graveur CDRW SCSI (de plus en plus rare trouver) : commande non fournie par SOLARIS :
254
Systmes de chiers
-l
Exemple :
# cdrw -l Looking for CD devices... Node Connected Device Device type ----------------------+--------------------------------+----------------/dev/rdsk/c0t1d0s2 | _NEC DVD_RW ND-2500A 1.06 | CD Reader/Writer /dev/rdsk/c1t5d0s2 | HP CD-Writer+ 9200 1.0e | CD Reader/Writer
255
Systmes de chiers
-scanbus
Exemple :
# cdrecord -scanbus Cdrecord 1.9 (sparc-sun-solaris2.9) Copyright (C) 1995-2000 Jrg Schilling Using libscg version schily-0.1 scsibus0: 0,0,0 0) * 0,1,0 1) * 0,2,0 2) * 0,3,0 3) SEAGATE ST318436LW 0010 Disk 0,4,0 4) * 0,5,0 5) HP CD-Writer+ 9200 1.0e Removable CD-ROM 0,6,0 6) * 0,7,0 7) HOST ADAPTOR
256
Systmes de chiers
-b all
Exemple :
# cdrw -b -v -d /dev/rdsk/c0t1d0s2 session Initializing device...done. Blanking the media (Can take several minutes)...done. # cdrw -b -v -d /dev/rdsk/c0t1d0s2 all Blanking the media (Can take several minutes)...done.
257
Systmes de chiers
blank=fast
Exemple : # cdrecord blank=fast Cdrecord 1.9 (sparc-sun-solaris2.9) Copyright (C) 1995-2000 Jrg Schilling scsidev: 0,5,0 scsibus: 0 target: 5 lun: 0 Using libscg version schily-0.1 Device type : Removable CD-ROM Version : 4 Response Format: 2 Capabilities : SYNC Vendor_info : HP Identifikation : CD-Writer+ 9200 Revision : 1.0e Device seems to be: Generic mmc CD-RW. Using generic SCSI-3/mmc CD-R driver (mmc_cdr). Driver flags : SWABAUDIO cdrecord: Drive needs to reload the media to return to proper status. Starting to write CD/DVD at speed 4 in write mode for single session. Last chance to quit, starting real write in 1 seconds.
Formation permanente ARS 7.0 258
Systmes de chiers
# cdrw -i -v -d /dev/rdsk/c0t1d0s2 image.iso Initializing device...done. Writing track 1...12 % Writing track 1...done. Finalizing (Can take several minutes)...done.
259
Systmes de chiers
# cdrecord image.iso Cdrecord 1.9 (sparc-sun-solaris2.9) Copyright (C) 1995-2000 Jrg Schilling scsidev: 0,5,0 scsibus: 0 target: 5 lun: 0 Using libscg version schily-0.1 Device type : Removable CD-ROM Version : 4 Response Format: 2 Capabilities : SYNC Vendor_info : HP Identifikation : CD-Writer+ 9200 Revision : 1.0e Device seems to be: Generic mmc CD-RW. Using generic SCSI-3/mmc CD-R driver (mmc_cdr). Driver flags : SWABAUDIO Starting to write CD/DVD at speed 8 in write mode for single session. Last chance to quit, starting real write in 1 seconds. Track 01: Total bytes read/written: 660957184/660957184 (322733 sectors).
260
Systmes de chiers
La gravure dune image ISO sous LINUX se fait par la commande suivante : pour graveur CDRW IDE : commande fournie par FREEBSD : burncd pour graveur DVD+-RW IDE : commande fournie par FREEBSD : burncd
261
Systmes de chiers
blank
Exemple :
262
Systmes de chiers
Exemple :
% burncd data z.iso fixate next writeable LBA 0 writing from file z.iso size 354240 KB written this track 354240 KB (100%) total 354240 KB fixating CD, please wait..
263
Systmes de chiers
La gravure dune image ISO sous WINDOWS se fait par les commandes suivantes : pour graveur CDRW IDE : commande fournie par MICROSOFT dans le resource kit Windows
pour graveur DVD+-RW IDE : commande fournie par MICROSOFT dans le resource kit Windows 2003 : dvdburn.exe pour graveur CDRW IDE : commande non standard : BURNCDCC disponible sur
http://www.terabyteunlimited.com/downloads/burncdcc.zip (version
1.03) pour graveur DVD+-RW IDE : commande non standard : BURNCDCC disponible sur
http://www.terabyteunlimited.com/downloads/burncdcc.zip (version
1.03)
264
Systmes de chiers
cdburn.exe drive -erase [image [options]] ou cdburn.exe drive image [-speed max]
Exemple :
C:\Documents and Settings\root\Desktop>cdburn e: -erase Erasing media before burning Number of blocks in ISO image is ffffffff Erasing target media Media erased C:\Documents and Settings\root\Desktop>cdburn e: cd040818.iso -speed max Requesting burn at maximum speed Number of blocks in ISO image is 613 Finished Writing Synchronizing Cache: Error ejecting/reinserting disc
265
Systmes de chiers
cration dun autre mcanisme connu sous le nom de Access Control Lists ou ACL.
Disponible sur LINUX, SOLARIS, FREEBSD, WINDOWS Attention aux diffrentes implmentations non compatibles des ACL. Lunication des diffrentes implmentations na pas encore eu lieu en pratique.
Formation permanente ARS 7.0 266
Systmes de chiers
267
Systmes de chiers
A completer...
268
Systmes de chiers
[options] objets
XXXX
A completer...
269
Systmes de chiers
[options] objets
XXXX
A completer...
270
Attention
Systmes de chiers
Il faut vrier que les commandes de manipulation des chiers fonctionnent correctement avec les ACL.
271
A propos de tar
Systmes de chiers
272
Systmes de chiers
273
Systmes de chiers
274
Systmes de chiers
[options] objets
Au niveau de getfacl :
% getfacl exemple.txt # file: exemple.txt # owner: besancon # group: adm user::rwgroup::r-mask:r-other:r-Formation permanente ARS 7.0
#effective:r--
275
Systmes de chiers
Au niveau de getfacl :
% getfacl exemple.txt # file: exemple.txt # owner: besancon # group: adm user::rwuser:mysql:rwgroup::r-mask:rwother:r--
#effective:rw#effective:r--
276
Systmes de chiers
[options] objets
#effective:r-#effective:r--
A cause du mask par dfaut, lutilisateur mysql naura pas son droit en criture mme si on la
modication du mask faire pour autoriser les droits donns individuellement via les ACL.
Formation permanente ARS 7.0
277
Systmes de chiers
Exemple avec modication du mask faire pour autoriser les droits donns individuellement via les ACL.
% setfacl -m mask:rw- exemple.txt % setfacl -m user:mysql:rw- exemple.txt % getfacl exemple.txt # file: exemple.txt # owner: besancon # group: adm user::rwuser:mysql:rwgroup::r-mask:rwother:r--
#effective:rw#effective:r--
278
Attention
Systmes de chiers
Sur LINUX, il faut vrier que les commandes de manipulation des chiers fonctionnent correctement avec les ACL.
Commentaire personnel : pas terrible car manifestement les ACL ne sont pas intgrs au systme.
Sur SOLARIS, les commandes fournies par le systme intgrent le support des ACL.
Exemple : commande
% /bin/ls -l total 2 -rw-r--r--+ 1 besancon adm % cp exemple.txt exemple2.txt % ls -l total 4 -rw-r--r--+ 1 besancon adm -rw-r--r--+ 1 besancon adm
279
Systmes de chiers
Exemple : commande
% /bin/ls -l total 2 -rw-r--r--+ 1 besancon adm % mv exemple2.txt exemple3.txt % ls -l total 4 -rw-r--r--+ 1 besancon adm
280
A propos de tar
La commande
Systmes de chiers
Sauvegarde des chiers avec leurs ACL dans une archive TAR :
% tar cvfp /tmp/archive.tar exemple.txt a exemple.txt 1K
281
Systmes de chiers
1 besancon adm
#effective:rw#effective:r--
282
Systmes de chiers
283
Systmes de chiers
A completer...
284
Mcanismes de sauvegarde
Flood (9.6%)
Sabotage (0.8%) Water Pipe (1.0%) HVAC Outage (1.4%) Other (1.5%) Human Error (2.0%) Network Outage (2.1%) Earthquake (4.9%) Power Surge (5.1%) Software Error (5.4%)
There are two types of computer users in the world. . . those that have lost data, and those that are going to.
Formation permanente ARS 7.0 285
Mcanismes de sauvegarde
Unix offre une vue unie des chiers ou des priphriques. On peut donc sauvegarder : sur nimporte quel priphrique en mode caractre dans un chier sur un autre disque sur une autre machine
286
Mcanismes de sauvegarde
287
Mcanismes de sauvegarde
Type AIT 1 AIT 2 DDS 2 DDS 3 DDS 4 DDS 5 ? DLT 4000 DLT 7000 DLT 8000 Ultrium LTO 215 Ultrium LTO 230 Ultrium LTO 460
1.5 5 6 7.5 15 30
288
Mcanismes de sauvegarde
Quelques prix :
Technologie Ultrium LTO Exabyte Tandberg SLR 100 DLT 8000 DDS3 DDS4 DDS5
Type SCSI externe SCSI 3 SCSI ? SCSI interne SCSI, interne SCSI, interne SCSI, interne
Prix 1990 EUR (nov 2003) 1069 EUR (nov 2003) 1668 EUR (nov 2003) 1135 EUR (mai 2004) 569 EUR (mai 2004) 595 EUR (mai 2004) 679 EUR (mai 2004)
289
Mcanismes de sauvegarde
DAT (34.0%)
Exprience personnelle : un lecteur de bande DDS meurt en 3 ans (vri par 5 collgues) pas de soucis avec les lecteurs DLT les cartouches SDLT, Ultrium LTO sont chres
290
Mcanismes de sauvegarde
Le lecteur peut tre : isol (interne ou externe) mont dans une library un caroussel ensemble lecteur + robot de manipulation de cartouches stockes dans
Figure manquante...
291
Mcanismes de sauvegarde
Mcanismes de sauvegarde
Utilitaires
dump, restore
La particularit de dump est dassurer la sauvegarde dun disque en consultant la structure interne mme du lesystem via le chier spcial en mode caractre de la partition.
Syntaxe conseille :
293
Mcanismes de sauvegarde
Utilitaires
dump, restore
Possibilit de sauvegardes incrmentales. Un niveau est associ la sauvegarde. Le niveau 0 correspond une sauvegarde complte. Le niveau 1 correspond la sauvegarde des seuls chiers modis depuis le niveau 0. etc.
Sauvegarde des chiers trous lidentique (sauvegarde des seuls blocs utiliss)
294
Mcanismes de sauvegarde
Utilitaires
dump, restore
295
Mcanismes de sauvegarde
Utilitaires
dump, restore
La commande pour relire une sauvegarde ralise par dump est restore (sur Solaris, utiliser
/sbin/ufsrestore).
On peut utiliser dump + restore pour dupliquer une arborescence. Par exemple :
296
Mcanismes de sauvegarde
Utilitaires
dump, restore
restore -f archive -i puis utiliser les commandes add fichier/dir, cd dir, delete fichier/dir, ls et la commande extract :
[root@localhost d]# restore -f /tmp/archive -i ... restore > ls .: etc/ restore > cd etc restore > ls ./etc: ... im_palette-small.pal restore > add yp.conf restore > ls ./etc: im_palette-small.pal
passwd.OLD
yp.conf
passwd.OLD
*yp.conf
297
Mcanismes de sauvegarde
Utilitaires
dump, restore
restore > extract You have not read any tapes yet. Unless you know which volume your file(s) are on you should start with the last volume and work towards the first. Specify next volume #: 1 set owner/mode for .? [yn] y restore > quit [root@localhost d]# ls -Rl .: total 8 drwxr-xr-x 2 root root 4096 Jan 27 14:47 etc ./etc: total 4 -rw-r--r--
1 root
root
298
Mcanismes de sauvegarde
Utilitaires
dump, restore
La commande pour connaitre la table des matires dune sauvegarde ralise par dump est aussi restore (sur Solaris, utiliser /sbin/ufsrestore).
# ufsdump 0f /tmp/archive /opt3 DUMP: Date of this level 0 dump: Sat Jan 24 22:27:28 2004 DUMP: Date of last level 0 dump: the epoch DUMP: Dumping /dev/rdsk/c0t0d0s6 (furax.unixiens.org:/opt3) to /tmp/archive. DUMP: Mapping (Pass I) [regular files] DUMP: Mapping (Pass II) [directories] DUMP: Writing 32 Kilobyte records DUMP: Estimated 350 blocks (175KB). DUMP: Dumping (Pass III) [directories] DUMP: Dumping (Pass IV) [regular files] DUMP: 318 blocks (159KB) on 1 volume at 2650 KB/sec DUMP: DUMP IS DONE # ufsrestore tf /tmp/archive 2 . 3 ./lost+found 4 ./foo
299
Mcanismes de sauvegarde
Utilitaire
tar
Cette commande a un immense avantage : elle est disponible sur la totalit des plateformes Unix.
Contrairement dump, elle permet la sauvegarde dune partie seulement dune partition. En fait, on peut sauvegarder des chiers ou directories sans aucun rapport entre eux.
Syntaxe :
300
Mcanismes de sauvegarde
Utilitaire
tar
ftp://ftp.lip6.fr/pub/gnu/tar/tar-1.14.tar.gz
associ au GNU zip :
ftp://ftp.lip6.fr/pub/gnu/gzip/gzip-1.2.4a.tar
Avantages : le GNU tar ne sauve pas les chiers avec un / initial ; il offre la possibilit de se cantonner au sein dun lesystem.
301
Mcanismes de sauvegarde
Utilitaire
tar
Problmes classiques avec tar : Il ne sait pas sauver convenablement les major et minor numbers des chiers de /dev. Pour sauver /dev, on prfrera plutt recrer les devices partir de /dev/MAKEDEV.
Par dfaut, il ne sait pas sauver un chier trous (les blocs intermdiaires non allous sont sauvs
effacer par exemple les chiers core avant de sauvegarder par cron, sinon remplissage
inutile de la bande
302
Mcanismes de sauvegarde
Utilitaire
tar
# tar cvf archive /etc [root@localhost /tmp]# tar cvf archive /etc tar: Removing leading / from member names etc/ etc/csh.cshrc etc/csh.login etc/exports etc/filesystems etc/group etc/host.conf etc/hosts.allow etc/hosts.deny ...
303
Mcanismes de sauvegarde
Utilitaire
tar
304
Mcanismes de sauvegarde
Utilitaire
tar
305
Mcanismes de sauvegarde
Utilitaire
tar
Sur Internet, il y a souvent des packages avec ".tar.gz" ou ".tgz" comme sufxes. Comment en extraire le contenu ?
306
Mcanismes de sauvegarde
Utilitaire
tar
307
Mcanismes de sauvegarde
(Windows : : NtBackup)
308
Mcanismes de sauvegarde
Quelques rgles
1. Sauvegarder 2. Sauvegarder lorsque le lesystem est le moins actif : en mode mono-utilisateur pendant les priodes creuses dutilisation (la nuit par exemple) 3. Ne jamais restaurer de chiers dans le homedir dun utilisateur de peur dy effacer des chiers plus rcents que ceux de la sauvegarde. 4. Vriez priodiquement les sauvegardes. 5. Conserver un jeu de sauvegardes ok part des autres en cas de destruction des autres par un sinistre.
309
Mcanismes de sauvegarde
Quelques rgles
Mcanismes de sauvegarde
Quelques rgles
Mcanismes de sauvegarde
Quelques rgles
Mcanismes de sauvegarde
Quelques rgles
Mcanismes de sauvegarde
Quelques rgles
Mcanismes de sauvegarde
Quelques rgles
Mcanismes de sauvegarde
Quelques rgles
Mcanismes de sauvegarde
Quelques rgles
Mmoire virtuelle
Lespace mmoire est dcoupe en segments de taille donne, les pages. On charge les pages dun processus en RAM au fur et mesure des besoins. Cest la pagination.
Quand la RAM est "pleine", et que lon doit charger des pages, on copie sur disque de vieilles pages et on les limine de la RAM pour les remplacer par les nouvelles pages. Cest ce que lon appelle swapper.
Formation permanente ARS 7.0 318
Mmoire virtuelle
319
Mmoire virtuelle
Le fonctionnement dune machine Unix standard ncessitera donc une partition disque pour le swap.
320
Mmoire virtuelle
# free Mem: -/+ buffers: Swap: 259768 total 129488 used 121716 16892 0 free 7772 112596 259768 shared 4136 buffers 104824
321
Mmoire virtuelle
Utiliser swap
-l
# /usr/sbin/swap -l swapfile dev swaplo blocks free swapfs 0 139408 123280 /dev/dsk/c0t3d0s1 32,25 8 98488 98488
Utiliser swap
-s
# /usr/sbin/swap -s total: 8264k bytes allocated + 3520k reserved = 11784k used, \ 52632k available
322
Mmoire virtuelle
# free total Mem: 512720 -/+ buffers/cache: Swap: 1052216 # mkswap -f /dev/hda5 # swapon /dev/hda5 # free total Mem: 512720 -/+ buffers/cache: Swap: 1068208 used 198128 95520 0 free 314592 417200 1068208 shared 1168 buffers 13428 cached 89180 used 198032 95436 0 free 314688 417284 1052216 shared 1168 buffers 13428 cached 89168
323
Mmoire virtuelle
-a partition
# swap -l swapfile dev swaplo blocks free /dev/dsk/c0t0d0s1 136,1 16 4198304 3455392 # swap -s total: 601128k bytes allocated + 230824k reserved = 831952k used, \ 1686832k available # swap -a /dev/dsk/c0t0d0s6 # swap -l swapfile dev swaplo blocks free /dev/dsk/c0t0d0s1 136,1 16 4198304 3455392 /dev/dsk/c0t0d0s6 136,6 16 1440224 1440224} # swap -s total: 601128k bytes allocated + 230824k reserved = 831952k used, \ 2406896k available
Formation permanente ARS 7.0 324
Mmoire virtuelle
/dev/hda2
none
swap
sw
0 0
325
Mmoire virtuelle
FS type swap
fsck pass -
326
Mmoire virtuelle
Taille du swap
327
Mmoire virtuelle
328
Mmoire virtuelle
329
Mmoire virtuelle
Fichiers de swap
Inconvnients : une fois ajout au swap, il est souvent impossible de faire machine arrire ; pour supprimer le chier de swap, il faut rebooter. swap via le lesystem et non via en dessous
Mmoire virtuelle
331
Mmoire virtuelle
Via la commande
# mkfile 50m grosfichier # chmod 600 grosfichier # ls -l grosfichier -rw------- 1 besancon 52428800 Nov 16 01:27 grosfichier
Faire ensuite :
# swapon /chemin/vers/grosfichier
Mmoire virtuelle
(Windows : : creatfil)
Syntaxe : creatfil
c:\>creatfil %TEMP%\grosfichier.dat 1024 c:\>dir %TEMP%\grosfichier.dat Volume in drive C is Windows XP Volume serial Number is 0C5C-E708 Directory of C:\DOCUME~1\besancon\LOCALS~1\Temp 18/07/2004 12:35 1 File(s) 0 Dir(s) 1 048 576 grosfichier.dat 1 048 576 bytes 1 173 176 320 bytes free
333
Mmoire virtuelle
# dd if=/dev/zero of=grosfichier bs=1M count=50 50+0 records in 50+0 records out 52428800 bytes transferred in 3.533640 secs (14837052 bytes/sec) # chmod 600 grosfichier # ls -l grosfichier -rw------- 1 besancon 52428800 Nov 16 01:27 grosfichier
Faire ensuite :
# swapon /chemin/vers/grosfichier
Les droits du chier doivent tre 600. Pourquoi ?
Formation permanente ARS 7.0 334
Processus et excutables
ps
COMMAND init [kflushd] [kupdate] [identd] [atd] xfs -droppriv -da [login] [kdm] [kwm] [tcsh] [tcsh] -bash [vi] vi probleme6.c
335
Processus et excutables
Comment bien utiliser "ps" ? Une bonne utilisation de "ps" repose sur la connaissance des diffrentes options employables. La difcult est que les options sont diffrentes selon que le systme est de type BSD ou AT&T. On retiendra : (BSD)
ps -aux
ps -edf
(AT&T)
336
Processus et excutables
COMMAND -bash (bash-2.01) xdvi.bin partie-03.dvi gs -sDEVICE=x11 -dNOPAUSE -dSAFER -q - (gs-5.10) ps -x -bash (bash-2.01)
337
Processus et excutables
rlogin alpha -bash (bash-2.01) xdvi.bin partie-03.dvi gs -sDEVICE=x11 -dNOPAUSE -dSAFER -q - (gs-5.10) ps -ax -bash (bash-2.01) -tcsh (tcsh-6.07)
338
ps -aux : tous les processus de la machine avec les noms de login associs
% ps -aux USER PID %CPU %MEM satish 24499 3.7 5.8 root 1 0.0 0.1 root 2 0.0 0.0 root 3 0.0 0.0 ... besancon 24578 0.0 0.7 besancon 24600 0.0 1.9 VSZ RSS 9320 7504 484 76 0 12 0 12 784 944 1108 2456 TT p5 ?? ?? ?? p7 p7 STAT SN Is DL DL Ss S STARTED 4:31PM Wed04PM Wed04PM Wed04PM 4:44PM 4:44PM
Processus et excutables
TIME COMMAND 0:39.34 /usr/local/net 0:01.18 /sbin/init -1:25.50 (pagedaemon) 0:00.00 (vmdaemon) 0:00.36 -bash (bash-2. 0:00.60 xdvi.bin parti
-axw" :
Is
-w".
339
Processus et excutables
340
Processus et excutables
ps -f : full listing
% ps -edf UID PID PPID root 0 0 root 1 0 root 2 0 root 3 0 root 181 1 ... daemon 283 1 root 291 1 root 296 1 nobody 15130 291 besancon 16463 16461 ...
C 0 0 0 0 0 0 0 0 0 0
STIME 09:09:47 09:09:47 09:09:47 09:09:47 09:12:07 09:12:12 09:12:13 09:12:14 23:30:56 00:12:26
TTY ? ? ? ? ? ? ? ? ? pts/0
TIME 0:01 0:02 0:00 0:52 0:06 0:11 0:00 0:00 0:00 0:00
CMD sched /etc/init pageout fsflush /usr/lib/autofs/automountd /usr/sbin/lpd /usr/local/apache/bin/httpd /usr/local/admin/lib/idled /usr/local/apache/bin/httpd -csh
341
Processus et excutables
Amlioration de ps : la commande "top" qui nest cependant pas standard sur tous les Unix. Son intrt : elle afche une liste des processus toutes les secondes
URL : ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/
Formation permanente ARS 7.0 342
Processus et excutables
343
Processus et excutables
344
Processus et excutables
Nom en langage C Nom pour la commande Valeur Comportement
kill SIGHUP SIGINT SIGQUIT SIGILL SIGTRAP SIGABRT SIGEMT SIGFPE SIGKILL SIGBUS SIGSEGV SIGSYS SIGPIPE SIGALRM SIGTERM SIGUSR1
Formation permanente ARS 7.0
HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM USR1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Exit Exit Core Core Core Core Core Core Exit Core Core Core Exit Exit Exit Exit
Hangup Interrupt Quit Illegal Instruction Trace or Breakpoint Trap Abort Emulation Trap Arithmetic Exception Killed Bus Error Segmentation Fault Bad System Call Broken Pipe Alarm Clock Terminated User Signal 1
345
Processus et excutables
Nom en langage C Nom pour la commande Valeur Comportement
kill SIGUSR2 SIGCHLD SIGPWR SIGWINCH SIGURG SIGPOLL SIGSTOP SIGTSTP SIGCONT SIGTTIN SIGTTOU SIGVTALRM SIGPROF SIGXCPU SIGXFSZ SIGWAITING
Formation permanente ARS 7.0
USR2 CHLD PWR WINCH URG POLL STOP TSTP CONT TTIN TTOU VTALRM PROF XCPU XFSZ WAITING
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
Exit Ignore Ignore Ignore Ignore Exit Stop Stop Ignore Stop Stop Exit Exit Core Core Ignore
User Signal 2 Child Status Changed Power Fail or Restart Window Size Change Urgent Socket Condition Pollable Event Stopped (signal) Stopped (user) Continued Stopped (tty input) Stopped (tty output) Virtual Timer Expired Proling Timer Expired CPU time limit exceeded File size limit exceeded Concurrency signal reserved by threads library
346
Processus et excutables
Les signaux les plus utiles sont : SIGHUP Cela envoie lquivalent du Ctrl SIGKILL Cela envoie un signal que le processus est oblig de suivre et qui se traduira inlectablement par la mort du processus.
C du clavier.
347
Processus et excutables
nice number
[-N] commande
348
Processus et excutables
Processus et excutables
SZ 16
STAT CPU TT R N 2 p1
350
Processus et excutables
(Windows : : processus)
Processus et excutables
(Windows : : processus)
352
Processus et excutables
(Windows : : processus)
353
Processus et excutables
(Windows : : processus)
354
Processus et excutables
(Windows : : processus)
355
Processus et excutables
(Windows : : processus)
PsExec - execute processes remotely PsFile - shows les opened remotely PsGetSid - display the SID of a computer or a user PsKill - kill processes by name or process ID PsInfo - list information about a system PsList - list detailed information about processes PsLoggedOn - see whos logged on locally and via resource sharing PsLogList - dump event log records PsService - view and control services PsShutdown - shuts down and optionally reboots a computer PsSuspend - suspends processes PsUptime - shows you how long a system has been running since its last reboot
356
Processus et excutables
commande parametres
Par exemple :
% time gzip -v archive.tar archive.tar: real user sys 0m0.485s 0m0.390s 0m0.070s
357
Processus et excutables
Attention, subtilit : il existe un builtin du shell appel time il existe une commande time : /bin/time
% echo $SHELL /bin/bash % type time time is a shell keyword % time gzip -v archive.tar archive.tar: real user sys 0m0.485s 0m0.390s 0m0.070s
% /bin/time gzip -v archive.tar archive.tar: 26.8% -- replaced with w.tar.gz real user sys 0.4 0.3 0.0
358
Processus et excutables
uptime :
up
4:44,
4 users,
le temps de fonctionnement du systme le nombre dutilisateurs connects la charge du systme : 3 nombres reprsentant :
la moyenne de processus actifs durant la minute prcdente la moyenne de processus actifs durant les 5 dernires minutes la moyenne de processus actifs durant les 15 dernires minutes
359
Processus et excutables
Difcult de dnir une valeur normale : de nombreux processus en attente dune entre sortie donnent un fort indice de charge alors que le systme est en parfaite mesure de rpondre efcacement un seul processus sollicitant fortement la mmoire virtuelle de la machine en swappant sans cesse peut lui seul empcher la machine de rpondre alors que lindice de charge est bas on traite indiffremment les processus renics et ceux qui ne le sont pas On prendra comme valeur normale une valeur de 3.
On prfrera les renseignements renvoys par ps pour se faire une ide de la charge rlle du systme.
360
Processus et excutables
361
Processus et excutables
362
Processus et excutables
Processus et excutables
STIME TTY
0 08:32:31 pts/7 0
bin
5416 Apr
2002 /usr/bin/preap
% preap 19764 19764: exited with status 0 % ps -edf | grep 1976 UID PID PPID C STIME TTY ... besancon 19763 13971 0 08:32:31 pts/7
364
Processus et excutables
% ls -lgF a b -rwxr-xr-x 1 -rwxr-xr-x 1 % chmod u+s a % chmod 4711 b % ls -lgF a b -rwsr-xr-x 1 -rws--x--x 1
besancon besancon
software software
besancon besancon
software software
365
Processus et excutables
Les chiers contenant les informations sur les comptes utilisateurs sont :
946 Sep 21 22:36 /etc/passwd 488 Jun 21 22:43 /etc/shadow
Notez leurs droits ! Pourtant un simple utilisateur change son mot de passe et modie donc ces chiers ! A PRIORI, IMPOSSIBLE ! ! ! et pourtant si...
passswd :
21964 Apr 7 2002 /bin/passwd
366
Processus et excutables
Classiquement :
% gcc exemple.c -o exemple.exe % ls -l exemple.exe -rwxr-xr-x 1 besancon adm % chmod u+s exemple.exe % ls -l exemple.exe -rwsr-xr-x 1 besancon adm
367
Processus et excutables
Moins classiquement :
% touch exemple.txt % ls -l exemple.txt -rw-r--r-1 besancon adm 0 Jan 24 20:21 exemple.txt % chmod u+s exemple.txt chmod: WARNING: exemple.txt: Execute permission required for set-ID on execution % ls -l exemple.txt -rw-r--r-1 besancon adm 0 Jan 24 20:21 exemple.txt % chmod 4644 exemple.txt % ls -l exemple.txt -rwSr--r-1 besancon adm 0 Jan 24 20:21 exemple.txt
Processus et excutables
% ls -lgF a b -rwxr-xr-x 1 -rwxr-xr-x 1 % chmod g+s a % chmod 2711 b % ls -lgF a b -rwxr-sr-x 1 -rwx--s--x 1
besancon besancon
software software
besancon besancon
software software
369
Processus et excutables
Notez leurs droits ! Pourtant un simple utilisateur peut crire sur la console via la commande
mesg y) !
A PRIORI, IMPOSSIBLE ! ! ! et pourtant si...
write :
11484 Apr 7 2002 /usr/bin/write
370
Processus et excutables
Classiquement :
% gcc exemple.c -o exemple.exe % ls -l exemple.exe -rwxr-xr-x 1 besancon adm % chmod g+s exemple.exe % ls -l exemple.exe -rwxr-sr-x 1 besancon adm
371
Processus et excutables
Moins classiquement :
% touch exemple.txt % ls -l exemple.txt -rw-r--r-1 besancon adm 0 Jan 24 20:21 exemple.txt % chmod g+s exemple.txt chmod: WARNING: exemple.txt: Execute permission required for set-ID on execution % ls -l exemple.txt -rw-r--r-1 besancon adm 0 Jan 24 20:21 exemple.txt % chmod 2644 exemple.txt % ls -l exemple.txt -rw-r-lr-1 besancon adm 0 Jan 24 20:21 exemple.txt
Processus et excutables
Directory /proc
/proc
system process
Il contient une reprsentation sous forme de chiers virtuels et directories virtuels dinformations de la machine Unix.
pour le programmeur systme qui utilisera les appels standard (et non pas des appels spciques
comme la libkvm ou des ioctl() spciques) Implmentation de /proc propre chaque Unix.
Utilit ?
Reprsentation virtuelle de : informations sur les processus informations sur le hardware informations sur le noyau
Formation permanente ARS 7.0 373
Processus et excutables
Directory /proc
sysadmin sysadmin sysadmin sysadmin sysadmin sysadmin sysadmin sysadmin sysadmin sysadmin sysadmin
0 64 0 64 0 0 0 64 0 0 0
Sep Sep Sep Sep Sep Sep Sep Sep Sep Sep Sep
22 22 22 22 22 22 22 22 22 22 22
14:30 15:45 15:45 15:45 15:45 15:45 15:45 15:45 14:29 15:45 15:45
cmdline cwd -> [0001]:1523515394 environ exe -> [0801]:10251 fd maps mem root -> [0801]:2 stat statm status
374
Processus et excutables
Directory /proc
% cat pci PCI devices found: Bus 0, device 0, function 0: Host bridge: VIA Technologies, Inc. VT82C693A/694x [Apollo PRO133x] (rev 196). Prefetchable 32 bit memory at 0xd0000000 [0xd3ffffff]. Bus 0, device 1, function 0: PCI bridge: VIA Technologies, Inc. VT82C598/694x [Apollo MVP3/Pro133x AGP] (rev 0). Master Capable. No bursts. Min Gnt=12. ...
375
Processus et excutables
Directory /proc
% cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 8 model name : Pentium III (Coppermine) stepping : 10 cpu MHz : 1002.214 cache size : 256 KB Physical processor ID : 0 Number of siblings : 1 fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 2 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse bogomips : 1989.22 ...
376
Processus et excutables
Directory /proc
% cat /proc/stat cpu 1276780 2094 1821586 158965456 cpu0 681135 1171 903015 79447636 cpu1 595645 923 918571 79517818 page 19636553 18178406 swap 3965 4959 intr 460335474 414888745 32 0 4 4 3635073 6 0 1 0 35855460 1382047 897324 0 11 3676767 0 0 0 0 0 0 0 0 0 disk_io: (3,0):(3,3,24,0,0) (22,2):(695266,373120,8363128,322146,6352160) (22,3):(2514420,999712,3090945 ctxt 233821067 btime 1066985101 processes 201147
377
Processus et excutables
Directory /proc
378
Processus et excutables
Directory /proc
379
Processus et excutables
380
Processus et excutables
0xFFF00000 (high address) perprocess kernel stack
red zone
user area
ps string structure
signal code
environnment strings
env pointers
argv pointers
argc
user stack
heap
bss
symbol table
initialized data
initialized data
text
text
381
Processus et excutables
Crer de nouveaux processus passe par la fonction C fork() Crer un nouveau processus, cest dupliquer toutes ces structures mmoire.
0xFFF00000 (high address) perprocess kernel stack perprocess kernel stack perprocess kernel stack
red zone
red zone
red zone
user area
user area
user area
ps string structure
ps string structure
ps string structure
signal code
signal code
signal code
environnment strings
environnment strings
environnment strings
argv strings
argv strings
argv strings
env pointers
fork()
env pointers
argv pointers
argv pointers
env pointers
argv pointers
argc
argc
argc
user stack
user stack
user stack
heap
heap
heap
bss
bss
bss
initialized data
initialized data
initialized data
text
text
text
Processus et excutables
avant le fork()
aprs le fork()
... ... if ( fork() ) { ... /* parent */ ... /* code */ } else { ... /* child */ ... /* code */ } ... ...
... ... if ( fork() ) { ... /* parent */ ... /* code */ } else { ... /* child */ ... /* code */ } ... ...
... ... if ( fork() ) { ... /* parent */ ... /* code */ } else { ... /* child */ ... /* code */ } ... ...
383
Processus et excutables
avant le fork()
aprs le fork()
... ... if ( fork() ) { ... /* parent */ ... /* code */ } else { exec(...) /* child */ ... /* code */ } ... ...
... ... if ( fork() ) { ... /* parent */ ... /* code */ } else { exec(...) /* child */ ... /* code */ } ... ...
aprs le exec()
... ... if ( fork() ) { ... /* parent */ ... /* code */ } else { exec(...) /* child */ ... /* code */ } ... ...
exec()
le fils reprend ici
384
Processus et excutables
DATA
DATA
STACK
STACK
STACK
STACK
Un processus traditionnel
Un processus multithread
385
Processus et excutables
Les threads sont un hritage du systme MACH qui y empruntent la terminologie : task, thread
Un processus Unix
Standards Posix : P1003.1b nal draft 14 (realtime) et P1003.1c nal draft 10 (multithreading)
386
Processus et excutables
Avantages des threads : cration light des threads (60 % plus rapide de crer un thread quun processus) possibilit de crer des applications concurrentes sur des machines mono ou multi processeurs en tant compltement transparentes pour lutilisateur possibilit de faire des applications non bloquantes (le plus souvent en termes dI/O)
exemple : serveur web Apache 2.x pour traiter plus de connexions en parallle cf http://httpd.apache.org
Inconvnients des threads : penser en profondeur le code programmer : attention aux race conditions (les threads sont ordonnancs et excuts au hasard par lOS) attention la non rentrance du code (variables statiques ou globales a priori bannies)
utilisation de mutex ou de POSIX condition variable pour synchroniser les threads entre eux, avec risque de deadlocks malgr tout
Formation permanente ARS 7.0 387
Processus et excutables
% ps -e -o pid,user,lwp,nlwp,comm PID USER LWP NLWP COMMAND ... 361 root 1 8 /usr/sbin/nscd 361 root 2 8 /usr/sbin/nscd 361 root 3 8 /usr/sbin/nscd 361 root 4 8 /usr/sbin/nscd 361 root 5 8 /usr/sbin/nscd 361 root 6 8 /usr/sbin/nscd 361 root 7 8 /usr/sbin/nscd 361 root 8 8 /usr/sbin/nscd ...
388
Processus et excutables
-m :
/ / / /
% ps ax | grep mkt 17049 pts/32 S 17062 pts/32 S % ps axm | grep mkt 17049 pts/32 S 17050 pts/32 S 17051 pts/32 S 17052 pts/32 S 17053 pts/32 S 17054 pts/32 S
389
Processus et excutables
Si votre systme na pas de thread intgrs, se reporter aux GNU Portable Threads ou
Il y a des threads non Posix. Par exemple les threads Solaris, cf -lthread.
Pour un manuel de programmation, se reporter par exemple au manuel SUN intitul Multithread Programming Guide dURL ftp://192.18.99.138/802-5938/802-5938.pdf
390
Processus et excutables
heap
bss
initialized data
text
391
Processus et excutables
Le mme exemple de compilation mais en ne masquant plus rien (exemple sur SunOS) :
% cc -v toto.c /lib/cpp -undef -Dunix -Dsun -Dsparc toto.c >/tmp/cpp.13192.0.i /lib/ccom - </tmp/cpp.13192.0.i >/tmp/ccom.13192.1.s rm /tmp/cpp.13192.0.i /bin/as -o toto.o -Q /tmp/ccom.13192.1.s rm /tmp/ccom.13192.1.s /bin/ld -dc -dp -e start -X -o a.out /usr/lib/crt0.o toto.o -lc rm toto.o % ls -lF a.out -rwxr-xr-x 1 besancon software 24576 Sep 28 23:26 a.out*
392
Processus et excutables
cpp
as
393
Processus et excutables
Ne font pas partie du langage C : les directives du prprocesseur : #include, #ifdef, etc. les fonctions ! : printf(), scanf(), etc.
394
Processus et excutables
Ldition de liens consiste en la complmentation du code utilisateur par le code prcompil des fonctions systme utilises.
main 0x0 main() { int x; ... printf(...); } X
emploi de bibliothques.
libc . . .
0x0
0x0
printf(...) { ... } . . .
=
0x2100 0x8000
395
Processus et excutables
396
Processus et excutables
Par exemple :
/usr/lib/librpcsvc.a /usr/lib/libm.a
Attention : cela dpend en fait du type ddition de liens : dition de liens statique dition de liens dynamique
397
Processus et excutables
32768 Oct
8 21:42 a.out
emploi de /usr/lib/librpcsvc.a
398
Processus et excutables
% gcc -static toto.c % file a.out a.out: FreeBSD/i386 compact demand paged executable not stripped
399
Processus et excutables
ou plus gnralement
% ar [option] bibliotheque module1.o module2.o ...
400
Processus et excutables
# touch /usr/lib/libm.a % cc -Bstatic foo.c -lm ld: /lib/libm.a: warning: table of contents for archive is out \ of date; rerun ranlib(1)
Parfois, ldition de liens choue uniquement par absence dun ranlib non fait.
La solution :
# ranlib /usr/lib/libm.a
401
Processus et excutables
FreeBSD/i386 compact demand paged executable FreeBSD/i386 compact demand paged executable FreeBSD/i386 compact demand paged executable FreeBSD/i386 compact demand paged executable
Raison : on fait appel ces binaires un moment dans la vie de la station Unix o le mcanisme des bibliothques partages nest pas encore activ.
Formation permanente ARS 7.0 402
Processus et excutables
24576 Oct
8 21:42 a.out*
emploi de
/usr/lib/libc.so.2.0 /usr/lib/librpcsvc.so.3.1
Formation permanente ARS 7.0 403
Processus et excutables
% gcc toto.c % file a.out a.out: FreeBSD/i386 compact demand paged dynamically linked executable \ not stripped
404
Processus et excutables
% gcc toto.c % ldd a.out a.out: -lc.3 => /usr/lib/libc.so.3.1 (0x2001e000) % ldd /usr/X11R6/bin/xterm /usr/X11R6/bin/xterm: -lXaw.6 => /usr/X11R6/lib/libXaw.so.6.1 (0x2003e000) -lXmu.6 => /usr/X11R6/lib/libXmu.so.6.0 (0x20071000) -lXt.6 => /usr/X11R6/lib/libXt.so.6.0 (0x20080000) -lX11.6 => /usr/X11R6/lib/libX11.so.6.1 (0x200bc000) -lSM.6 => /usr/X11R6/lib/libSM.so.6.0 (0x2014c000) -lICE.6 => /usr/X11R6/lib/libICE.so.6.3 (0x20154000) -lXext.6 => /usr/X11R6/lib/libXext.so.6.3 (0x20165000) -ltermcap.2 => /usr/lib/libtermcap.so.2.1 (0x2016e000) -lc.3 => /usr/lib/libc.so.3.1 (0x20172000)
Formation permanente ARS 7.0 405
Processus et excutables
Bien sr :
% ldd /sbin/fsck ldd: /sbin/fsck: not a dynamic executable
406
Processus et excutables
% ./a.out /usr/libexec/ld.so: warning: /usr/lib/libc.so.3.0: minor version 0 \ older than expected 1, using it anyway
407
Processus et excutables
(Windows : : listdlls)
ListDLLs V2.23 - DLL lister for Win9x/NT Copyright (C) 1997-2000 Mark Russinovich http://www.sysinternals.com -----------------------------------------------------------------------------System pid: 4 Command line: <no command line> -----------------------------------------------------------------------------smss.exe pid: 1304 Command line: \SystemRoot\System32\smss.exe Base 0x48580000 0x77f50000 ... Size 0xe000 0xa7000 Version 5.01.2600.1217 Path \SystemRoot\System32\smss.exe C:\WINDOWS\System32\ntdll.dll
408
Processus et excutables
(Windows : : listdlls)
... -----------------------------------------------------------------------------cmd.exe pid: 780 Command line: "C:\WINDOWS\System32\cmd.exe" Base Size Version Path 0x4ad00000 0x5e000 5.01.2600.0000 C:\WINDOWS\System32\cmd.exe 0x77f50000 0xa7000 5.01.2600.1217 C:\WINDOWS\System32\ntdll.dll 0x77e60000 0xe6000 5.01.2600.1106 C:\WINDOWS\system32\kernel32.dll 0x77c10000 0x53000 7.00.2600.1106 C:\WINDOWS\system32\msvcrt.dll 0x77d40000 0x8c000 5.01.2600.1255 C:\WINDOWS\system32\USER32.dll 0x7e090000 0x41000 5.01.2600.1346 C:\WINDOWS\system32\GDI32.dll 0x77dd0000 0x8d000 5.01.2600.1106 C:\WINDOWS\system32\ADVAPI32.dll 0x78000000 0x87000 5.01.2600.1361 C:\WINDOWS\system32\RPCRT4.dll 0x75f40000 0x1f000 5.01.2600.1106 C:\WINDOWS\system32\Apphelp.dll -----------------------------------------------------------------------------...
409
Processus et excutables
% ./a.out ld.so failed: Cant find shared library "libpico.so.1.3" % ldd a.out a.out: /usr/libexec/ld.so: warning: /usr/lib/libc.so.3.0: minor version 0 \ older than expected 1, using it anyway -lpico.1 => not found (0x0) -lc.3 => /usr/lib/libc.so.3.0 (0x1001d000)
410
Processus et excutables
Mthode dajout de bibliothques partages : 1. Copier la bibliothque partage dans un rpertoire systme prvu pour cela 2. Faire prendre connaissance au systme (en fait au programme ld.so) de la prsence dune nouvelle bibliothque partage.
411
Processus et excutables
AE
2. Essayer dutiliser les binaires static pour rparer 3. Redmarrer sur CDROM 4. Avoir pens exporter par NFS les rpertoires de bibliothques partages de faon recopier les bibliothques manquantes par NFS. 5. Avoir compil en static les outils ncessaires rparer. Cest possible en utilisant des sources dUnix du domaine public. Dans tous les cas, cest difcile et pas gagn davance. . .
412
Processus et excutables
Dynamic Loading
Dynamic loading : lapplication complte elle-mme son code binaire lors de son excution par le code binaire de modules.
Avantages du dynamic loading : extensions possibles dune application possibilit de publier une API pour crire des modules sans pour autant dvoiler le code source de lapplication
413
Processus et excutables
Dynamic Loading
Modules dajout de procdures dauthentication dans des programmes systme (programmes du genre su , login , telnetd , etc.) Cf http://www.kernel.org/pub/linux/libs/pam/ Cf http://www.solaris.com/solaris/pam/ Modules POSTGRESQL Modules dnissant de nouvelles fonctions, de nouveaux oprateurs, de nouveaux types SQL, etc. Cf http://gborg.postgresql.org/ etc.
Formation permanente ARS 7.0 414
Processus et excutables
Dynamic Loading
main() { void *module_handle; int module_mode = RTLD_NOW | RTLD_GLOBAL; void (*sym_handle)(); int dlinfo ; printf("Nous sommes dans le fichier %s\n", __FILE__); printf("Nous sommes le processus %d\n", getpid()); printf("sleep(20)\n"); sleep(20); printf("Chargement du module...\n"); module_handle = dlopen("./module.so.1", module_mode);
415
Processus et excutables
if ( module_handle ) { printf("Module charg en = 0x%x\n", module_handle); /* Recuperation de ladresse du symbole */ sym_handle = dlsym(module_handle, "fonction"); printf("Symbole charg en = 0x%x\n", sym_handle); /* Appel du symbole */ (void)(*sym_handle)(); /* On en a fini avec le module dynamique */ printf("Dchargement du module...\n"); dlclose(module_handle); printf("sleep(20)\n"); sleep(20); exit(0); } else { /* Module non charge */ printf("Module non charg.\n"); exit(1); } }
Dynamic Loading
416
Processus et excutables
Dynamic Loading
417
Processus et excutables
Dynamic Loading
418
Processus et excutables
Dynamic Loading
Plus exactement :
% ./prog % pldd 3021 Nous sommes dans le fichier prog.c 3021: ./prog Nous sommes le processus 3021 /usr/lib/libdl.so.1 sleep(20) /usr/lib/libc.so.1 Chargement du module... /usr/platform/sun4u/lib/libc_psr.so.1 Module charg en = 0xff3a1dcc Symbole charg en = 0xff2502d0 Nous sommes dans le fichier module.c dans fonction()+6 Nous sommes toujours le processus 3021 % pldd 3021 sleep(20) 3021: ./prog Fin dexcution de fonction() /usr/lib/libdl.so.1 Dchargement du module... /usr/lib/libc.so.1 sleep(20) /usr/platform/sun4u/lib/libc_psr.so.1 /var/tmp/dl/module.so.1 /usr/lib/libld.so.2 /usr/lib/libelf.so.1 % pldd 3021 3021: ./prog /usr/lib/libdl.so.1 /usr/lib/libc.so.1 /usr/platform/sun4u/lib/libc_psr.so.1 /usr/lib/libld.so.2 /usr/lib/libelf.so.1
419
Processus et excutables
420
Processus et excutables
421
Processus et excutables
% gcc foo.c -lm % file a.out a.out: sparc demand % ls -l a.out -rwxr-xr-x 1 besancon % strip a.out % file a.out a.out: sparc demand % ls -l a.out -rwxr-xr-x 1 besancon
paged dynamically linked executable not stripped software 32768 Oct 8 22:21 a.out
422
Processus et excutables
Bien sr :
% file a.out a.out: sparc demand paged dynamically linked executable not stripped % strip a.out % strip a.out strip: a.out already stripped
423
Processus et excutables
424
Processus et excutables
Intrts de la commande strings : elle permet de trouver certaines informations dans un excutable sans avoir recours aux sources de lexcutable elle sapplique tout chier
La commande sera particulirement utilise sur des programmes rcuprs sur Internet, sur des applications suspectes. Exemple sur un programme suspect, en fait un mouchard de mots de passe dpos par un pirate informatique :
# /usr/ucb/gcore 26704 /usr/ucb/gcore: core.26704 dumped # strings core.26704 ... log.log ...
Processus et excutables
% cat buggy.c #include <string.h> main() { char *p = NULL; strcpy(p, "boum !"); } % cc buggy.c % ./a.out Segmentation fault (core dumped)
426
Processus et excutables
A noter que selon les systmes Unix, le chier core prend des noms diffrents :
Hypothse : le programme en question sappelle prog Unix SOLARIS FreeBSD LINUX Nom de limage
427
Processus et excutables
1024-blocks Used Available Capacity Mounted on 1791382 1519809 92435 94% /users/adm
% gcc big-buggy.c % ./a.out 10 Allocation de 10 Mo... So far so good :-) Bye bye... Segmentation fault (core dumped) % ls -ls core 10336 -rw-r--r-% df . Filesystem /dev/sd2g
8 23:49 core
1024-blocks Used Available Capacity Mounted on 1791382 1530081 82163 95% /users/adm
On constate que
La taille du chier ne correspond pas ce qui est utilis en ralit. Raison : les trous de lespace mmoire nallouent pas de bloc disque. On parle de chier sparse.
Formation permanente ARS 7.0 428
Processus et excutables
/* * Attention ce programme est quick & dirty car on ne verifie * aucune valeur de retour des fonctions. */ fd = open("/tmp/sparse", O_WRONLY | O_CREAT, 0644); offset = 16 * 1024 * 1024 ; lseek(fd, offset, SEEK_SET); write(fd, buf, strlen(buf)); close(fd); }
429
Processus et excutables
Aprs avoir fait tourner le programme prcdent, on voit que les blocs intermdiaires ne sont pas allous :
bin
% cp /tmp/sparse /tmp/sparse2 % ls -ls /tmp/sparse /tmp/sparse2 16 -rw-r--r-- 1 besancon bin 16400 -rw-r--r-- 1 besancon bin
430
Processus et excutables
% echo $SHELL /bin/bash % ulimit -c 128 % ulimit -a core file size (blocks) data seg size (kbytes) file size (blocks) open files pipe size (512 bytes) stack size (kbytes) cpu time (seconds) max user processes virtual memory (kbytes)
Formation permanente ARS 7.0
Processus et excutables
% echo $SHELL /bin/csh % limit coredumpsize 128 % limit cputime unlimited filesize unlimited datasize unlimited stacksize 8192 kbytes coredumpsize 128 kbytes descriptors 256 memorysize unlimited
432
Processus et excutables
trace programme truss sur SOLARIS programme ktrace et kdump sur FreeBSD
programme autres ? Disponibilit de la commande sur la quasi totalit des systmes soit de base soit via
http://www.liacs.nl/~wichert/strace/
433
Processus et excutables
434
Processus et excutables
Processus et excutables
Pour le programme chroot, les chiers visibles se limitent ceux contenus dans la cage du chrootage.
Principaux programmes chroots : des programmes rseau exposs Internet vers lesquels viennent des requtes hostiles.
Dans le cadre de chroot, on distingue deux catgories de processus qui rendent les choses plus ou moins complexes congurer : processus ns hors de la cage puis vivant et mourant dans la cage processus ns, vivant et mourant dans la cage.
436
Processus et excutables
Par exemple le logiciel BIND (cf http://www.isc.org/products/BIND/) Le principe gnral de la programmation en pseudo langage de ce type de processus :
5. abandon des privilges systme via le passage sous lidentit dun utilisateur ddi (pour BIND, il sagit de lutilisateur bind du groupe bind )
Le binaire lanc se limite accder des chiers de donnes (en lecture ou en criture) dans la cage lors de son fonctionnement en mode rgime de croisire (cest--dire que lon passe sous silence la phase dinitialisation de lapplication peut-tre avec des chiers hors de la cage mais cette tape est trs limite dans le temps).
Formation permanente ARS 7.0 437
Processus et excutables
Par exemple un serveur FTPD qui lancerait un binaire ls pour rpondre la commande FTP
Ce programme ls nait, vit et meurt dans la cage. La difcult : les librairies dynamiques Rappel :
Aspects de scurit
Processus et excutables
CHROOT na pas t conu pour de la scurit ! En thorie, un processus chroot ayant les privilges systme peut faire :
Le problme de CHROOT : il y a partage de la dnition des devices entre tous les processus,
CHROOT na pas t conu pour de la scurit. Le renforcement de la scurit via CHROOT est
un pur effet de bord de son fonctionnement. Autres solutions apportant de la scurit : JAIL sur FREEBSD ZONE sur SOLARIS 10
439
Processus et excutables
Un processus chroot peut obtenir la liste de tous les processus de la machine. Donc problme en cas de processus chroot compromis tournant au nom de root car il peut connaitre les processus hors cages.
Un processus chroot peut obtenir la liste de tous les processus de la machine et leur envoyer des signaux. Donc problme en cas de processus chroot compromis tournant au nom de root car il peut tuer des processus hors cage.
440
Horloges Unix
Pour Unix, le dbut du temps est le 1 janvier 1970. La n du temps : le mardi 19 janvier 2038 4 h 14 min 7s (heure GMT) (cest--dire 2147483647 secondes
0x7fffffff)
Lhorloge sert dater les chiers, lancer des applications des moments prcis voulus (cf cron), dater des vnements, etc.
Problmes classiques : mise lheure dune horloge, consultation dune horloge, an 2000, etc.
441
Horloges Unix
Exemple de problme :
% date Thu Jan 29 11:18:49 CET 2004 % tar xvf z.t lspci.log tar: lspci.log: time stamp Jan 29 11:59 2004 is 2434 s in the future lspci-n.log tar: lspci-n.log: time stamp Jan 29 12:04 2004 is 2724 s in the future lspci-t.log tar: lspci-t.log: time stamp Jan 29 12:03 2004 is 2697 s in the future lspci-v.log tar: lspci-v.log: time stamp Jan 29 12:04 2004 is 2734 s in the future lspci-vv.log tar: lspci-vv.log: time stamp Jan 29 12:03 2004 is 2689 s in the future proc-pci.log tar: proc-pci.log: time stamp Jan 29 12:05 2004 is 2816 s in the future
442
Horloges Unix
[+format]
date +format utilise un format la printf avec des %. Cf la page de manuel de la fonction strftime.
Les bigrammes les plus utiles :
%H %M %S %T %m %d %y %Y
heure (00..23) minute (00..59) seconde (00..61) temps (hh :mm :ss) mois, (01..12) jour, (01..31) derniers chiffres de lanne (00..99) anne (1970. . .)
443
Horloges Unix
% date +%w 4
Avoir le numro de la semaine :
% date +%W 42
Pour des informations mathmatiques sur les dates (annes bissextiles, calcul du jour de la semaine etc., on pourra se reporter :
ftp://ftp.lip6.fr/pub/doc/faqs/sci-math-faq/dayWeek.gz
Formation permanente ARS 7.0 444
Horloges Unix
ftp://ftp.lip6.fr/pub/gnu/sh-utils/sh-utils-2.0.tar.gz
On peut grce cette commande calculer des choses impossibles calculer autrement :
% date Wed Aug
% date +%Y/%m/%d 1998/08/05 % date +%Y/%m/%d 1998/08/15 % date +%Y/%m/%d 1998/07/26 % date +%Y/%m/%d 1999/10/08 % date +%Y/%m/%d 1997/06/02 % date +%Y/%m/%d 1998/08/19
--date "10 days" --date "-10 days" --date "1 years 2 months 3 days" --date "-1 years -2 months -3 days" --date "1 fortnight"
445
Horloges Unix
Horloges Unix
Pour la France on prend MET-1DST (Middle European Time Daylight Saving Time) La variable denvironnement TZ permet de changer de fuseau horaire lors de lafchage de date.
Formation permanente ARS 7.0 447
Horloges Unix
La synchronisation se fait en considrant lheure de plusieurs machines de rfrences (quipes par exemple dhorloges atomiques) et en tenant compte des dlais de transmission via le rseau.
http://www.cru.fr/NTP/serveurs_francais.html
Formation permanente ARS 7.0 448
Horloges Unix
En pratique : 1. on choisit des serveurs de temps 2. on dsigne une machine du service comme serveur dheure pour le service 3. on y installe le package NTP ce qui se traduit par lancer le dmon xntpd 4. sur les machines du service, faire "ntpdate
Garde fou : on ne met pas la machine lheure si la diffrence dheures est trop grande :
Sep 11 02:06:47 example.com xntpd[93]: system event 4 status c621 Sep 11 02:06:47 example.com xntpd[93]: time error -7390.467777 is way too large (set clock manually) Sep 11 02:06:47 example.com xntpd[93]: system event 2 status c634
449
Horloges Unix
(Windows : : NTP)
450
Horloges Unix
(Windows : : NTP)
451
Horloges Unix
commande parametres
% time gzip -v archive.tar archive.tar: real user sys 0m0.485s 0m0.390s 0m0.070s
452
Horloges Unix
Attention, subtilit : il existe un builtin du shell appel time il existe une commande time : /bin/time
% echo $SHELL /bin/bash % type time time is a shell keyword % time gzip -v archive.tar archive.tar: real user sys 0m0.485s 0m0.390s 0m0.070s
% /bin/time gzip -v archive.tar archive.tar: 26.8% -- replaced with w.tar.gz real user sys 0.4 0.3 0.0
453
Le dmon
Sur Linux :
% ls -l /etc/rc.d/init.d/crond -rwxr-xr-x 1 root root 1031 Feb 3 2000 /etc/rc.d/init.d/crond
Sur Solaris :
% ls -l /etc/init.d/crond -rwxr--r-- 4 root sys 513 Jul 16 1997 /etc/init.d/cron
454
Fichiers crontab
champ 1 : minutes, de 00 59. champ 2 : heures, de 00 23. champ 3 : jour du mois, de 1 31. champ 4 : mois, de 1 12. champ 5 : jour de la semaine, de 0 (dimanche) 6 (samedi). champ 6 : commande excuter.
Le caractre Par exemple :
15 * */2 * 00 21 00 21 00 21 * * * * * * * * * * * * 1 3 5
* sert de caractre joker pour nimporte quel des champs 1 5. Le caractre # introduit un commentaire.
Fichiers crontab
Lemplacement des chiers crontab dpend des systmes : Systme AIX HP-UX FreeBSD Linux Solaris Program
456
Les commandes programms sexcutent sans terminal associ. Il ny a donc pas de stdin ou
stdout associs. Il faut raliser soi-mme les redirections requises car sinon, tout ce qui est crit sur stdout ou stderr est envoy par mail au propritaire des chiers crontab.
458
crontab -e
Cela lance lditeur de texte indiqu par la variable denvironnement dfaut.
2.
459
/etc/cron.allow /etc/cron.deny
Solaris
/etc/cron.d/cron.allow /etc/cron.d/cron.deny
Ces 2 chiers ont la mme syntaxe : ils contiennent des noms de login.
cron.allow Prsent Prsent cron.deny Prsent Prsent Utilisateurs autoriss Ceux explicitement dans cron.allow Ceux explicitement dans cron.allow Tous sauf ceux dans cron.deny Uniquement root
(Windows : : cron)
461
(Windows : : cron)
462
(Windows : : cron)
Sinon plusieurs utilitaires la Unix. Utilitaire visual-cron, http://visual-cron.com Avis : un peu encore windows-like pour ladministrateur uniquement sauf erreur de ma part manque action au boot, au shutdown (mais comme sous Unix)
463
(Windows : : cron)
464
(Windows : : cron)
Utilitaire pycron, http://www.kalab.com/freeware/pycron/pycron.htm Avis : pour ladministrateur uniquement sauf erreur de ma part manque action au boot, au shutdown (mais comme sous Unix)
465
(Windows : : cron)
466
25.1 Principes
SYSLOG est le mcanisme standard de distribution des messages envoys par le noyau et les programmes (systmes ou autres) : Il fonctionne au dessus de UDP (port 514), donc en mode non connect. Cf RFC3164. Il agit comme un routeur des messages. Il nutilise aucune authentication des clients SYSLOG. Le programme associ sappelle
syslogd
467
example.org pppd: Exit. example.org example.org example.org example.org example.org example.org example.org usba: /pci@1f,0/usb@c,3 (ohci0): getting device status failed usba: USB-device: storage@3, scsa2usb0 at bus address 5 usba: M-Systems DiskOnKey 0415A20E29003852 genunix: scsa2usb0 is /pci@1f,0/usb@c,3/storage@3 genunix: /pci@1f,0/usb@c,3/storage@3 (scsa2usb0) online scsi: sd16 at scsa2usb0: target 0 lun 0 genunix: sd16 is /pci@1f,0/usb@c,3/storage@3/disk@0,0
468
mark, news, ntp, syslog, user, uucp, local0 local7 * est un caractre joker.
du nom du niveau de la priorit du message : cest le level Principaux noms rencontrs : emerg, alert, crit, err, warning, notice, info,
Par exemple :
#include <syslog.h> main(int argc, char *argv[]) { openlog("ftpd", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "Connection from host %s", "333"); syslog(LOG_INFO|LOG_LOCAL2, "error: %m"); closelog(); }
470
% logger -p local3.notice Essai de la commande logger % grep Essai /var/log/messages Nov 16 14:56:18 example.com ftpd[1098]: Essai en langage C Nov 16 14:58:03 example.com besancon: Essai de la commande logger
471
syslogd. syslogd dcide quoi faire des messages sur la base de son chier de conguration, /etc/syslog.conf.
Syntaxe du chier /etc/syslog.conf (se reporter man
syslog.conf) :
472
Par "action", on dsigne les possibilits de distribution des messages : distribution des messages dans des chiers Indiquer pour cela un nom de chier via son path absolu (commenant donc par un /) ;
aiguillage des messages vers le dmon dune autre machine Indiquer pour cela un nom de machine ou son adresse IP, prcd de @ ;
afchage des messages sur un terminal particulier Indiquer pour cela le path absolu du terminal ;
afchage des messages sur les terminaux de certains utilisateurs numrs Indiquer pour cela une liste des logins des utilisateurs (spars par une virgule) ; par exemple
473
474
ou version Solaris :
*.emerg *.alert *.crit *.err *.warning *.notice *.info *.debug @sysloghost.example.com @sysloghost.example.com @sysloghost.example.com @sysloghost.example.com @sysloghost.example.com @sysloghost.example.com @sysloghost.example.com @sysloghost.example.com
Il vaut mieux avoir trop de messages que pas du tout ou pas ceux qui sont intressants.
475
/var/log/syslog
ou version Solaris :
*.emerg *.alert *.crit *.err *.warning *.notice *.info *.debug /var/log/syslog /var/log/syslog /var/log/syslog /var/log/syslog /var/log/syslog /var/log/syslog /var/log/syslog /var/log/syslog
476
Reconguration, SIGHUP
Si lon modie le chier /etc/syslog.conf, la modication est prise en compte en envoyant le signal SIGHUP au processus syslogd :
# ps -edf | grep syslogd root 339 1 0 # kill -HUP 339 Aug 04 ? 0:18 /usr/sbin/syslogd
Le signal SIGTERM arrte le processus ce qui se traduit par lmission du message SYSLOG :
Aug 19 15:02:54 example.com syslogd: going down on signal 15
477
mthode plus sophistique via certains programmes ddis cela ; liste non exhautive :
http://online.securityfocus.com/tools/118
478
479
http://coombs.anu.edu.au/~avalon/nsyslog.html
http://www.balabit.hu/products/syslog-ng/
480
(Windows : : SYSLOG)
481
BackLog
(Windows : : SYSLOG)
On voit bien sur Unix : Nov 11 21:53:08 dell.example.org Application 14 Tue Nov 11 21:53:06 2003 \ 23 Norton AntiVirus N/A N/A Information VAGABOND \ Protection temps rel Symantec AntiVirus charge. Gratuit. . . Cf
http://www.intersectalliance.com/projects/BackLogNT/setup.exe
Formation permanente ARS 7.0 482
Avenir de SYSLOG
http://www.corest.com/products/corewisdom/CW01.php
483
Plusieurs moteurs de bases de donnes disponibles : Oracle Microsoft SQL Server Microsoft MSDE (version light et gratuite de SQL Server) IBM DB2 Sybase MYSQL POSTGRESQL ORACLE est la rfrence en bases de donnes.
Version de ORACLE disponible au moment de lcriture de ce document : 10g Site ofciel : http://www.oracle.com
484
A noter quOracle diffuse maintenant des versions gratuites 100% fonctionnelles pour LINUX, pour SOLARIS, pour WINDOWS.
A noter le livre Oracle 9i sous Linux par Gilles Briard, diteur Eyrolles, prix 50 euros, livr avec la distribution Oracle 9i complte pour Linux. (je nai pas lu le livre)
Mettre a jour...
485
Plusieurs moteurs de bases de donnes disponibles : Oracle Microsoft SQL Server Microsoft MSDE (version light et gratuite de SQL Server) IBM DB2 Sybase MYSQL POSTGRESQL Version de MYSQL disponible au moment de lcriture de ce document : 4.1.7 (2004-10-30) Site ofciel : http://www.mysql.com Changement de la licence de MYSQL dans la version 4. Mal reu par la communaut des dveloppeurs
487
Arborescence MYSQL
bin : binaires de lapplication sous-rpertoire include/mysql : headers de programmation C sous-rpertoire info : chiers de documentation sous-rpertoire lib/mysql : librairies partages sous-rpertoire libexec : binaires systme de lapplication sous-rpertoire share/mysql : chiers des textes des erreurs sous-rpertoire sql-bench : chiers de tests sous-rpertoire var : chiers de donnes et de log
A noter le chier var/my.cnf qui dnit la conguration de MYSQL. Linstallation de MYSQL doit se complter de la cration des bases initiales de MYSQL.
488
489
To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands: /usr/local/mysql/bin/mysqladmin -u root password new-password /usr/local/mysql/bin/mysqladmin -u root -h furax.unixiens.org password new-password See the manual for more instructions. You can start the MySQL daemon with: cd /usr/local/mysql ; /usr/local/mysql/bin/mysqld_safe & You can test the MySQL daemon with the benchmarks in the sql-bench directory: cd sql-bench ; perl run-all-tests Please report any problems with the /usr/local/mysql/bin/mysqlbug script! The latest information about MySQL is available on the web at http://www.mysql.com Support MySQL by buying support/licenses at https://order.mysql.com
Formation permanente ARS 7.0 490
ATTENTION : Finaliser linstallation par la mise en place dun mot de passe pour le compte SQL de nom root :
% /usr/local/mysql/bin/mysqladmin -u root password XXXXXXXX
491
lancement/arrt de MYSQL
492
493
mysql> drop database ars ; Query OK, 0 rows affected (0.02 sec) mysql> show databases ; +----------+ | Database | +----------+ | mysql | | test | +----------+ 2 rows in set (0.01 sec)
494
[options] base
495
496
497
% mysql -u root -pXXXXXXXX mysql ... mysql> select User from user order by User asc ; +------+ | User | +------+ | | | | | root | | root | +------+ 4 rows in set (0.03 sec)
498
La notion dutilisateurs SQL est utilise dans le contrle des requtes SQL :
GRANT privilge[,privilge...] ON {table | * | *.* | base.*} TO utilisateur [IDENTIFIED BY [PASSWORD] PASSWORD] [, utilisateur [IDENTIFIED BY [PASSWORD] PASSWORD]] ...
o : les privilges sont parmi les mots clef SELECT , INSERT , UPDATE , DELETE , RULE , ALL
utilisateur dsignera un utilisateur bien prcis qui obtient les privilges indiqus
499
% mysql -u root -pXXXXXXXX mysql ... mysql> grant all on ars.* to besancon@localhost identified by XXXXXXXX ; Query OK, 0 rows affected (0.02 sec)
500
A completer...
501
Sauvegarde : mysqldump
Pour sauver toutes les bases, utiliser la commande mysqldump Syntaxe : mysqldumpall
--all-databases .
-u root -p [options]
Attention : joindre la sauvegarde le chier my.cnf qui nest pas sauvegard par loutil SQL
mysqldump.
Formation permanente ARS 7.0 502
Sauvegarde : mysqldump
% head /tmp/base.sql -- MySQL dump 10.8 --- Host: localhost Database: ars -- ------------------------------------------------------- Server version 4.1.7-log ... DROP TABLE IF EXISTS t1; CREATE TABLE t1 ( ...
503
Sauvegarde : mysqldump
% head /tmp/base.sql -- MySQL dump 10.8 --- Host: localhost Database: -- ------------------------------------------------------- Server version 4.1.7-log ... CREATE DATABASE /*!32312 IF NOT EXISTS*/ ars; USE ars; ...
504
Sil sagit de recharger la sauvegarde de la totalit des bases, faire sous lidentit de lutilisateur mysql :
505
Figure manquante...
506
Plusieurs moteurs de bases de donnes disponibles : Oracle Microsoft SQL Server Microsoft MSDE (version light et gratuite de SQL Server) IBM DB2 Sybase MYSQL POSTGRESQL Version de PGSQL disponible au moment de lcriture de ce document : 7.4.6 (2004-10-29) Site ofciel : http://www.postgresql.org
Formation permanente ARS 7.0 507
A completer...
508
509
Arborescence PGSQL
bin : rpertoire des binaires de lapplication sous-rpertoire data : rpertoire des chiers de conguration au premier niveau ; ce rpertoire devra tre la proprit de lutilisateur pgsql . sous-rpertoire data/base : rpertoire des chiers de stockage de la base de donnes sous-rpertoire doc : rpertoire de documentation (format HTML) sous-rpertoire include : rpertoire des headers de programmation C sous-rpertoire lib : rpertoire des librairies partages des binaires PGSQL sous-rpertoire man : rpertoire des pages de manuel sous-rpertoire share : rpertoire de chiers dexemples
A noter le chier data/pga_hba.conf qui dnit les accs autoriss. Linstallation de PGSQL doit se complter de la cration des bases initiales de PGSQL.
510
-D rpertoire-de-donnes
Par dfaut, on prend le rpertoire data dans larborescence PGSQL (par dfaut donc /usr/local/pgsql/data ). La cration des bases initiales se fera sous lidentit de lutilisateur pgsql .
511
postmaster : accepte les requtes de connexion postgres : excute les requtes SQL et renvoie les rsultats
Un script de lancement et darrt est fourni avec PGSQL : pg_ctl
Attention : les processus doivent tre lancs au nom de lutilisateur pgsql . Syntaxes : dmarrage de PGSQL : pg_ctl
start :
stopt :
# su pgsql -c "pg_ctl -D /chemin/vers/pgsql/data stop" waiting for postmaster to shut down......done postmaster successfully shut down
redmarrage de PGSQL : pg_ctl
Formation permanente ARS 7.0
restart
512
[options] base
La cration de toute nouvelle base se fait par duplication de la base initiale de nom template1 .
Exemple
% createdb -e test CREATE DATABASE base; CREATE DATABASE <--- commande interne lance <--- affichage du rsultat de cette commande
Loption -e sert afcher les commandes internes SQL en fait ralises par le programme.
Formation permanente ARS 7.0 513
[options] base
Exemple
% dropdb -e test DROP DATABASE base; DROP DATABASE <--- commande interne lance <--- affichage du rsultat de cette commande
Loption -e sert afcher les commandes internes SQL en fait ralises par le programme.
Formation permanente ARS 7.0 514
base
template1=# \q
515
% psql template1 ... template1=# \l List of databases Name | Owner | Encoding -----------+----------+----------template0 | pgsql | SQL_ASCII template1 | pgsql | SQL_ASCII (2 rows)
template1=# select * from pg_database ; datname | datdba | encoding | datistemplate | datallowconn | datlastsysoid | datvacuumxid | datfrozen -----------+--------+----------+---------------+--------------+---------------+--------------+---------template1 | 1 | 0 | t | t | 17140 | 464 | template0 | 1 | 0 | t | f | 17140 | 464 | (2 rows)
516
List of relations Schema | Name | Type | Owner ------------+--------------------------+---------+------... pg_catalog | pg_database | table | pgsql ... pg_catalog | pg_user | view | pgsql ... (54 rows)
% psql template1 ... template1=# select * from pg_user ; usename | usesysid | usecreatedb | usesuper | usecatupd | passwd | valuntil | useconfig ----------+----------+-------------+----------+-----------+----------+----------+----------pgsql | 1 | t | t | t | ******** | | apache | 1002 | f | f | f | ******** | | besancon | 1003 | t | t | t | ******** | | (3 rows)
Formation permanente ARS 7.0 517
template1=# create database exemple ; CREATE DATABASE template1=# \l List of databases Name | Owner | Encoding -----------+----------+----------exemple | besancon | SQL_ASCII template0 | pgsql | SQL_ASCII template1 | pgsql | SQL_ASCII (3 rows)
518
template1=# drop database exemple ; DROP DATABASE template1=# \l List of databases Name | Owner | Encoding -----------+----------+----------template0 | pgsql | SQL_ASCII template1 | pgsql | SQL_ASCII (2 rows)
519
La notion dutilisateurs SQL est utilise dans le contrle des requtes SQL :
PUBLIC indiquera que tous les utilisateurs SQL peuvent obtenir les privilges indiqus utilisateur dsignera un utilisateur bien prcis qui obtient les privilges indiqus
520
Exemple
% psql base ... base=# \d List of relations Schema | Name | Type | Owner --------+---------+-------+---------public | exemple | table | besancon (1 row) t=# \z Access privileges for database "base" Schema | Table | Access privileges --------+---------+------------------public | exemple | (1 row) t=# grant all on exemple to public ; GRANT t=# \z Access privileges for database "base" Schema | Table | Access privileges --------+---------+-----------------------------------------------------public | exemple | {besancon=a*r*w*d*R*x*t*/besancon,=arwdRxt/besancon} (1 row) ...
Formation permanente ARS 7.0 521
Syntaxe : createuser
[options] [utilisateur-SQL] -A -D
Cration de nouveaux utilisateurs ou pas Cration de nouvelles databases ou pas
-a -d
522
# createuser Enter name of user to add: ars Shall the new user be allowed to create databases? (y/n) n Shall the new user be allowed to create more new users? (y/n) n CREATE USER
Exemple 3 : cration non interactive et avec afchage des instructions SQL internes
# createuser -D -A -e ars createuser -D -A -e ars SET autocommit TO on;CREATE USER "ars" NOCREATEDB NOCREATEUSER CREATE USER
523
Syntaxe : dropuser
[options] [utilisateur-SQL]
524
Exemple 3 : suppression interactive avec garde fou et avec afchage des instructions SQL
internes
# dropuser -e -i ars User "ars" will be permanently removed. Are you sure? (y/n) y DROP USER ars; DROP USER
525
526
METHOD [OPTION] IP-ADDRESS IP-MASK IP-ADDRESS IP-MASK IP-ADDRESS IP-MASK IP-ADDRESS/CIDR-MASK IP-ADDRESS/CIDR-MASK IP-ADDRESS/CIDR-MASK
The rst eld is the connection type : "local" is a Unix-domain socket, "host" is either a plain or SSL-encrypted TCP/IP socket, "hostssl" is an SSL-encrypted TCP/IP socket, and "hostnossl" is a plain TCP/IP socket.
Formation permanente ARS 7.0 527
DATABASE can be "all", "sameuser", "samegroup", a database name (or a comma-separated list thereof), or a le name prexed with "@". USER can be "all", an actual user name or a group name prexed with "+" or a list containing either. IP-ADDRESS and IP-MASK specify the set of hosts the record matches. CIDR-MASK is an integer between 0 and 32 (IPv6) or 128(IPv6) inclusive, that species the number of signicant bits in the mask, so an IPv4 CIDR-MASK of 8 is equivalent to an IP-MASK of
528
Pour sauver une base, utiliser la commande pg_dump sous lidentit de lutilisateur pgsql . Syntaxe : pg_dump
[options] base
Pour sauver toutes les bases, utiliser la commande pg_dumpall sous lidentit de lutilisateur pgsql . Syntaxe : pg_dumpall
[options]
Attention : joindre la sauvegarde le chier pg_hba.conf qui contrle les accs et qui nest pas sauvegard par les 2 outil SQL pg_dump et pg_dumpall.
Formation permanente ARS 7.0 529
530
% ls -l /tmp/bases.sql -rw-r--r-1 besancon adm 15064263 Oct 23 12:18 /tmp/bases.sql % head /tmp/base.sql --- PostgreSQL database cluster dump -\connect "template1" --- Users -DELETE FROM pg_shadow WHERE usesysid <> (SELECT datdba FROM pg_database WHERE datname = template0) CREATE USER apache WITH SYSID 1002 NOCREATEDB NOCREATEUSER; CREATE USER besancon WITH SYSID 1003 CREATEDB CREATEUSER; ...
531
Sil sagit de recharger la sauvegarde de la totalit des bases, faire sous lidentit de lutilisateur pgsql :
532
Figure manquante...
533
Langage SQL
SQL
SQL permet : la dnition et la modication du schma de la base de donnes la manipulation des donnes linterrogation des donnes le contrle des accs la base
534
Langage SQL
Numav
14 345
Capacite
25 75
Type
A400 B200
Entrepot
Garches Maubeuge
Table PILOTE
Matricule
1 2
Nom
Figue Lavande
Ville
Cannes Touquet
Age
45 24
Salaire
28004 11758
Table PASSAGER
Numtab
1 2
Nomab
Nifance Tearice
535
Langage SQL
Table VOL
Numvol
AL12 AF8
Heure_depart
08-18 11-20
Heure_arrivee
09-12 23-54
Ville_depart
Paris Vaux
Ville_arrivee
Lilles Rio
Table DEPART
Numvol
AL12 AL12
Date_dep
31-DEC-95 19-DEC-95
Numav
14 342
Matricule
1 2
Table RESERVATION
Numab
1 2
Numvol
AL12 AL12
Date_sep
31-DEC-95 31-DEC-95
536
Langage SQL
537
Cration dindex
CREATE UNIQUE INDEX IPL# ON Pilote(pl#);
Langage SQL
538
Langage SQL
539
Langage SQL
ROLLBACK ;
Linstruction rollback dfait toutes les modications effectues sur la base depuis le dbut de la transaction.
540
Langage SQL
Projection, Restriction
Principe
SELECT AVION.numav FROM AVION WHERE AVION.capacite > 200 ;
Projection seule :
SELECT AVION.numav FROM AVION ;
Restriction seule :
SELECT AVION.* FROM AVION WHERE AVION.capacite > 200 ;
Exercice 1 : Quel est lge du pilote de matricule 15 ? Exercice 2 : Quels sont les pilotes de cette compagnie arienne ? (leur matricule, leur nom, leur ville, leur ge et leur salaire)
Formation permanente ARS 7.0 541
Tri
Langage SQL
Projection, Restriction
Omission du prxe
SELECT numav FROM AVION WHERE capacite > 200 ;
542
Emploi de variables
SELECT A.numav FROM AVION A WHERE A.capacite > 200 ;
Langage SQL
Projection, Restriction
Exercice 3 : Quels sont les types davions entreposs Tarascon, avec leur capacit, par ordre de capacits croissantes ?
=, !=, >, <, >=, <= OR, AND, LIKE, NOT NULL, IN, NOT, BETWEEN X AND Y
543
Langage SQL
Projection, Restriction
SELECT numav FROM AVION WHERE capacite > 200 AND ( (ENTREPOT = Saint nom la Breteche) OR (ENTREPOT = Mantes la jolie) ) AND numav != 300 ; SELECT numav FROM AVION WHERE entrepot in (Saint nom la Breteche, Mantes la jolie) AND capacite BETWEEN 200 AND 210 AND TYPE LIKE B_EING%;
Exercice 4 : Quelles sont les villes ayant un nom commencant par L et o un pilote de moins de 20 ans gagne plus de 20000 F ? Exercice 5 : Quels sont les numros davions, avec leut entrept, ne rsidant pas Marolles-en-Hurepoix, ayant une capacit suprieure 200 ? (donns par ordre de numros dcroissants)
544
Les fonctions
Quelques fonctions disponibles : fonction lower(a) fonction soundex(a) fonction abs(a)
SELECT numav FROM AVION WHERE LOWER(ENTREPOT) = le vesiney; SELECT MATRICULE, NOM FROM PILOTE WHERE SOUNDEX(NOM) = SOUNDEX(SINTEXUPERI) ; SELECT UPPER(NOM) FROM PILOTE WHERE ADRESSE = Cordillre des Andes ;
Langage SQL
Projection, Restriction
545
Langage SQL
Projection, Restriction
Exercice 6 : Quelles sont les villes do part un vol pour Ajaccio ? (donner les rsultats en majuscule)
546
Les agrgats
Quelques agrgats disponibles :
Langage SQL
Projection, Restriction
Exemple : Quel est le nombre davions ayant une capacit suprieure 200 ?
SELECT COUNT(NUMAV) FROM AVION WHERE CAPACITE > 200 ; SELECT COUNT(DISTINCT NUMAV) FROM AVION WHERE CAPACITE > 200 ;
547
Langage SQL
Projection, Restriction
Exercice 7 : Quel est le nombre davions en service (ie dans la relation DEPART), le 19 dcembre 1995 ? Exercice 8 : Quelle est la capacit moyenne des avions entreposs Pogo Togo ?
548
Langage SQL
Prdicat dexistence
SELECT FROM WHERE EXISTS ( SELECT FROM WHERE ) ;
Exemple : Quels sont les pilotes qui habitent dans une ville o nest bas aucun avion ?
SELECT PILOTE.NOM FROM PILOTE WHERE NOT EXISTS ( SELECT AVION.* FROM AVION WHERE AVION.ENTREPOT = PILOTE.VILLE ) ;
549
Requte lintrieur du IN
capacit suprieure 250 ?
SELECT PILOTE.NOM FROM PILOTE WHERE VILLE IN ( SELECT ENTREPOT FROM AVION WHERE CAPACITE > 250 ) ;
Langage SQL
Exemple : Quels sont les noms des pilotes qui habitent dans une ville o sont localiss des avions de
Exercice 9 : Exprimer la requte suivante avec un EXISTS : Quels sont les noms des pilotes qui habitent dans une ville o sont localiss des avions de capacit suprieure 250 ? Exercice 10 : Exprimer la requte suivante avec un IN : Quels sont les noms des passagers ayant rserv pour le 1er avril 1996 ?
Formation permanente ARS 7.0 550
Langage SQL
La jointure
29.7 La jointure
2 mthodes principales : prdicative requtes imbriques Exemple : Quels sont les noms des pilotes qui assurent un vol le vendredi 13 octobre 1996 ? Prdicative :
SELECT PILOTE.NOM FROM PILOTE, DEPART WHERE PILOTE.MATRICULE = DEPART.MATRICULE AND DEPART.DAPE_SEP = 13-10-95;
Imbrication :
SELECT NOM FROM PILOTE WHERE MATRICULE IN ( SELECT DEPART.MATRICULE FROM MATRICULE WHERE DATE_SEP = 13-10-95 ) ;
Formation permanente ARS 7.0 551
Langage SQL
La jointure
Exercice 11 : Quels sont les noms des pilotes qui assurent un vol le vendredi 13 octobre 1995, sur un avion de capacit suprieure 250 ? de manire prdicative laide de requtes imbriques Exercice 12 : Quelles sont les paires de pilotes (matricules) habitant dans la mme ville ? Exercice 13 : Quels sont les noms des pilotes qui conduisent lavion de numro 666 ? Exercice 14 : Quels sont les noms des pilotes qui habitent dans la ville o est entrepos lavion 666 ?
Formation permanente ARS 7.0 552
Langage SQL
Lunion
29.8 Lunion
Quels sont les pilotes qui conduisent lavion de numro 666 OU qui habitent dans la ville o est entrepos lavion 666 ?
SELECT NOM FROM PILOTE, DEPART WHERE PILOTE.MATRICULE = DEPART.MATRICULE AND DEPART.NUMAV = 666 UNION SELECT NOM FROM PILOTE, AVION WHERE PILOTE.VILLE = AVION.ENTREPOT AND AVION.NUMAV = 666 ;
553
Langage SQL
Lintersection
29.9 Lintersection
Quels sont les pilotes qui conduisent lavion de numro 666 ET qui habitent dans la ville o est entrepos lavion 666 ?
SELECT NOM FROM PILOTE, DEPART WHERE PILOTE.MATRICULE = DEPART.MATRICULE AND DEPART.NUMAV = 666 INTERSECT SELECT NOM FROM PILOTE, AVION WHERE PILOTE.VILLE = AVION.ENTREPOT AND AVION.NUMAV = 666 ;
554
Langage SQL
La diffrence
29.10 La diffrence
Quels sont les pilotes qui conduisent lavion de numro 666 SAUF ceux qui habitent dans la ville o est entrepos lavion 666 ?
SELECT NOM FROM PILOTE, DEPART WHERE PILOTE.MATRICULE = DEPART.MATRICULE AND DEPART.NUMAV = 666 MINUS SELECT NOM FROM PILOTE, AVION WHERE PILOTE.VILLE = AVION.ENTREPOT AND AVION.NUMAV = 666 ;
555
Langage SQL
La division
29.11 La division
Quels sont les pilotes qui conduisent tous les avions ? Quels sont les pilotes tels que, quel que soit lavion, ils le conduisent ? Quels sont les pilotes tels que, quel que soit lavion, il existe un dpart assur par ce pilote sur cet avion ? Quels sont les pilotes tels quil nexiste pas davion tel quil nexiste pas dpart de ce pilote sur cet avion ?
SELECT MATRICULE FROM PILOTE WHERE NOT EXISTS ( SELECT * FROM AVION WHERE NOT EXISTS ( SELECT * FROM DEPART WHERE DEPART.MATRICULE = PILOTE.MATRICULE AND DEPART.NUMAV = AVION.NUMAV ) ) ;
556
Langage SQL
La division
Exercice 15 : Quels sont les passagers qui ont rserv sur tous les vols ? Exercice 16 : Quel est le nombre de pilotes qui conduisent des avions en service ? (ie dans la relation DEPART)
557
Langage SQL
Group by
29.12 Group by
Loprateur GROUP BY partitionne la table. Exemple : Quel est le nombre de pilotes qui conduisent des avions en service, par avion ?
SELECT NUMAV, COUNT(DISTINCT DEPART.MATRICULE) FROM DEPART GROUP BY NUMAV ;
Exercice 17 : Quelle est la capacit moyenne des avions, par entrept et part type ?
558
Langage SQL
Group by . . . HAVING
Exercice 18 : Quelles sont les villes o sont entreposs plus de 2 avions de type ICBM ?
559
Langage SQL
Conclusion
29.14 Conclusion
SQL est un langage dinterrogation trs lisible, par tous les utilisateurs. SQL est un langage dans lequel il est relativement facile dcrire, pour un programmeur, condition de bien visualiser lordre dapplication des instructions : 1. From 2. Where 3. Group By 4. Having 5. Select 6. Order By
560
Langage SQL
Exercice 1
Quel est lge du pilote de matricule 15 ?
SELECT PILOTE.AGE FROM PILOTE WHERE MATRICULE = 15 ;
Exercice 2
Quels sont les pilotes de cette compagnie arienne (leur matricule, leur nom leur ville, leur ge et leur salaire)
SELECT * FROM PILOTE ;
561
Exercice 3
Langage SQL
Quels sont les types davions entreposs Tarascon, avec leur capacit, par ordre de capacit croissantes ?
SELECT DISTINCT TYPE, CAPACITE FROM AVION WHERE ENTREPOT = Tarascon ORDER BY CAPACITE ASC ;
Exercice 4
Quelles sont les villes ayant un nom commenant par L et o un pilote de moins de 20 ans gagne plus de 200000 F ?
SELECT VILLE FROM PILOTE WHERE AGE < 20 AND SALAIRE > 200000 AND VILLE LIKE L%;
562
Exercice 5
Langage SQL
Quels sont les numros davions, avec leur entrept, ne rsidant pas Marolles-en-Hurepoix, ayant une capacit suprieure 200 ? (donns par ordre de numros dcroissants)
SELECT NUMAV, ENTREPOT FROM AVION WHERE ENTREPOT != Marolles-en-Hurepoix AND CAPACITE > 200 ORDER BY NUMAV DESC ;
Exercice 6
Quelles sont les villes do part un vol pour Ajaccio ? (donner les rsultats en majuscules)
SELECT UPPER(VILLE_DEPART) FROM VOL WHERE VILLE_ARRIVEE = Ajaccio;
563
Exercice 7
Langage SQL
Quel est le nombre davions en service (ie dans la relation DEPART), le 19 dcembre 1995 ?
SELECT COUNT(DISTINCT NUMAV) FROM DEPART WHERE DATE_DEP = 19-12-95 ;
Exercice 8
Quelle est la capacit moyenne des avions entreposs Pogo Togo ?
SELECT AVG(ALL CAPACITE) FROM AVION WHERE AVION.ENTREPOT = Pogo Togo;
564
Exercice 9
Langage SQL
Exprimer la requte suivante avec un EXISTS : Quels sont les noms des pilotes qui habitent dans une ville o sont localiss des avions de capacit suprieure 250 ?
SELECT PILOTE.NOM FROM PILOTE WHERE EXISTS ( SELECT * FROM AVION WHERE CAPACITE > 250 AND AVION.ENTREPOT = PILOTE.VILLE ) ;
565
Exercice 10
SELECT PASSAGER.NOMAB FROM PASSAGER WHERE NUMAB IN ( SELECT RESERVATION.NUMAB FROM RESERVATION WHERE RESERVATION.DATE_DEP = 01-04-96 ) ;
Langage SQL
Quels sont les noms des passagers ayant rserv pour le 1er avril 1996 ? (avec un IN)
566
Exercice 11 a
capacit suprieure 250 ? De manire prdicative :
SELECT PILOTE.NOM FROM PILOTE, DEPART, AVION WHERE PILOTE.MATRICULE = DEPART.MATRICULE AND DEPART.DATE_DEP = 13-10-95 AND DEPART.NUMAV = AVION.NUMAV AND AVION.CAPACITE > 250 ;
Langage SQL
Quels sont les noms des pilotes qui assurent un vol le vendredi 13 octobre 1995, sur un avion de
567
Exercice 11 b
capacit suprieure 250 ? A laide de requtes imbriques :
SELECT NOM FROM PILOTE WHERE MATRICULE IN ( SELECT DEPART.MATRICULE FROM DEPART WHERE DATE_DEP = 13-10-95 AND NUMAV IN ( SELECT AVION.NUMAV FROM AVION WHERE CAPACITE > 250 ) ) ;
Langage SQL
Quels sont les noms des pilotes qui assurent un vol le vendredi 13 octobre 1995, sur un avion de
568
Exercice 12
Quelles sont les paires de pilotes (matricules) habitant dans la mme ville ?
SELECT P1.MATRICULE, P2.MATRICULE FROM PILOTE P1, PILOTE P2 WHERE P1.VILLE = P2.VILLE AND P1.MATRICULE > P2.MATRICULE ;
Langage SQL
Exercice 13
Quels sont les noms des pilotes qui conduisent lavion de numro 666 ?
SELECT NOM FROM PILOTE, DEPART WHERE PILOTE.MATRICULE = DEPART.MATRICULE AND DEPART.NUMAV = 666 ;
569
Exercice 14
SELECT NOM FROM PILOTE, AVION WHERE PILOTE.VILLE = AVION.ENTREPOT AND AVION.NUMAV = 666;
Langage SQL
Quels sont les noms des pilotes qui habitent dans la ville o est entrepos lavion 666 ?
Exercice 15
Quels sont les passagers qui ont rserv sur tous les vols ?
SELECT NUMAB FROM PASSAGER WHERE NOT EXISTS ( SELECT * FROM VOL WHERE NOT EXISTS ( SELECT * FROM RESERVATION WHERE RESERVATION.NUMAB = PASSAGER.NUMAB AND RESERVATION.NUMVOL = VOL.NUMVOL ) ) ;
570
Exercice 16
SELECT COUNT(DISTINCT DEPART.MATRICULE) FROM DEPART ;
Langage SQL
Quel est le nombre de pilotes qui conduisent des avions en service ? (ie dans la relation DEPART)
Exercice 17
Quelle est la capacit moyenne des avions, par entrept et par type ?
SELECT ENTREPOT, TYPE, AVG(CAPACITE) FROM AVION GROUP BY ENTREPOT, TYPE ;
571
Exercice 18
Quelles sont les villes o sont entreposs plus de 2 avions de type ICBM ?
SELECT ENTREPOT FROM AVION WHERE TYPE = ICBM GROUP BY ENTREPOT HAVING COUNT(*) > 2 ;
Langage SQL
572
Consolidation dOS
573
Consolidation dOS
VMWARE
30.1 VMWARE
http://www.vmware.com/
VMWARE ne tourne que sur plateforme base de processeur Intel ou compatible. Ce logiciel offre sur la machine hte, des machines virtuelles dans lesquelles peuvent tourner des OS comme Windows, Linux, FreeBSD. Il sagit donc de machine virtuelle et non pas de prise en main comme avec VNC.
574
Consolidation dOS
VMWARE
Architecture :
575
Consolidation dOS
VMWARE
576
Consolidation dOS
VMWARE
577
Consolidation dOS
VMWARE
578
Consolidation dOS
VMWARE
579
Consolidation dOS
VMWARE
580