Nullix 131 (LYX 2.1.5)

Pierre L. Douillet 17 septembre 2019

(a short tale of modern ages - 2)

Résumé Tant que l’on n’a jamais su que Alzheimer s’écrivait avec un "h", il n’y a aucun problème à ne pas s’en souvenir. Mais il n’y a rien de plus agaçant que de savoir que l’on a rencontré la réponse à un problème technique dans un bouquin de 999 pages (et c’était sur une page de gauche, mais peut-être aussi sur une page de droite)... Tandis qu’un document informatisé est facile à interroger, et en même temps plus difficile à égarer qu’une suite de notes papier. Les distributions visées sont SuSE − 6.1, SuSE − 6.2, SuSE − 6.3, SuSE − 6.4, SuSE − 7.0, SuSE − 7.2, SuSE − 7.3, SuSE − 8.0, SuSE − 8.1, SuSE − 9.3, SuSE − 10.2, SuSE − 11.0, SuSE − 11.3, SuSE − 11.4, SuSE − 13.1 et SuSE − 42.1. D’autres distributions existent. Par exemple RedHat, dont au moins une livraison formate spontanément tous les disques durs d’une machine, etc. Dans ce qui suit, les items numérotés décrivent les questions ayant trouvé une réponse (même désagréable) tandis que les items avec des boulets décrivent les questions restées en suspens. Par ailleurs, la taille de ce document augmentant au fil du temps, nous l’avons fractionné en quatre parties : (1) installation proprement dite, (2) configuration d’un système installé, (3) partie "appli- cative" des problèmes rencontrés, (4) collation des batchs utilisés pour la configuration du barnum.

Incl. 1 Floating algorithm, with a 30_mm_cat, a boxed equation and a 15%_cat

√ ρ = ax2 + bx + c

Fig. 1: Floating empty figure

Tab. 1: Floating empty table

1 Index

/etc/hosts, 63 S /etc/init.d/lpd, 49 sed, 60 /etc/profile, 45 subtitles, 117 suroot, 57 A SuSEfirewall2, 23 amarok, 120 azureus, 109 U uid, 27 C upsc, 30 cueape, 122 upsd, 27 cups, 47 upsmon, 27

E V encodage des vidéos, 116 vlc, 122

F X filepif, 32, 33 xine, 122

G Z gaupol, 118 zenmap, 15 gmplayer, 119 gnome-subtitles, 117

H HOST, 45, 61 HOSTNAME, 61

I icône, 32

K kaffeine, 122

L logger, 18

M magic, 33 mimelink, 33 mimepif, 32 mkpasswd, 86 mplayer, 119

N nmap, 15 NUT, 27

O Onduleurs, 27

P persistent-rules, 61 pictogramme, 32

R Redirect, 93 root konsole, 57 route.conf, 63

2 TABLE DES MATIÈRES TABLE DES MATIÈRES

Table des matières

Index 2

Table des matières 3

Liste des Figures 10

Liste des Tableaux 10

Liste des Inclusions 11

1 Sécurité 13 1.1 Le path de root et de su root...... 13 1.2 Login manager...... 13 1.2.1 Mode terminal...... 13 1.2.2 Mode graphique...... 14 1.3 Services ouverts par runlevel ou inetd...... 15 1.4 Enregistrement de messages dans les fichiers /var/log/*.log...... 17 1.4.1 Généralités...... 17 1.4.2 La méthode syslog...... 18 1.4.3 Gestion directe par les applications...... 19 1.5 Rotation des fichiers /var/log/*.log (SuSE − 42.1)...... 20 1.6 Rotation des fichiers /var/log/*.log (oldies)...... 21 1.7 Traitement des *.log...... 22 1.8 SuSEfirewall2...... 23 1.8.1 Nouvelles remarques...... 23 1.8.2 Anciennes remarques...... 23 1.9 Exploitation de firewall.log...... 24 1.10 Modules pam...... 24 1.11 Exemple de logs pam...... 24 1.12 Nouveaux utilisateurs...... 27

2 Onduleurs 27 2.1 Hardware...... 27 2.2 Management NUT...... 27 2.2.1 Fichiers de configuration (1)...... 27 2.2.2 Tester la communication (ser)...... 28 2.2.3 Tester la communication (usb)...... 28 2.2.4 Identifier un Onduleurs usb...... 28 2.2.5 documentation...... 29 2.2.6 fichiers de configuration (2)...... 29 2.2.7 Lancement du serveur...... 30 2.3 Résultats...... 30 2.4 Management Sun...... 31

3 Icônes, etc. 32 3.1 Introduction...... 32 3.1.1 Pictogrammes, filepifs, mimepifs...... 32 3.1.2 Salades catalanes...... 32 3.1.3 Localisation des pictogrammes et filepifs...... 33 3.1.4 Répertoires (SuSE − 11.3 et après)...... 33 3.1.5 Pour mémoire: répertoires SuSE − 10.2 ...... 33 3.2 Gestion des mimetypes...... 34 3.2.1 Les mimetypes (SuSE − 11.3 et après)...... 34 3.2.2 Pour mémoire: les mimetypes sous SuSE − 10.2 ...... 35 3.3 Gestion des filepifs (icônes)...... 35 3.3.1 Une expérimentation...... 38 3.3.2 Pour mémoire : fichiers *.directory...... 38 3.4 Arborescences...... 39 3.5 Lanceurs...... 39

3 TABLE DES MATIÈRES TABLE DES MATIÈRES

3.5.1 Pourquoi icewm plutôt que plasma ?...... 39 3.5.2 Lanceur icewm...... 39 3.5.3 Lanceur plasma (KdE_4)...... 40 3.5.4 Pour mémoire: lanceur kicker (KdE_2/KdE_3)...... 40 3.5.5 Pour mémoire : lanceur kpanel (KdE_1)...... 41 3.5.6 Templates...... 41 3.6 Synchronisation...... 41

4 Réglages du Bureau 41 4.1 HelpCenter...... 41 4.2 Claviers et polices...... 41 4.2.1 Collecter les informations...... 42 4.2.2 LANG et LC_xx...... 42 4.2.3 Association des multi-touches aux caractères...... 43 4.2.4 Pour mémoire (SuSE − 8.1)...... 44 4.2.5 Pour mémoire : claviers SaX...... 44 4.2.6 Problème de polices (SuSE − 7.2)...... 44 4.3 Profilage...... 45 4.3.1 Où placer les modifications ?...... 45 4.3.2 /etc/profile.local...... 45 4.3.3 Pour mémoire: une ancienne erreur...... 46 4.4 Réglages auto (batch mk_install)...... 46 4.5 Imprimer...... 46 4.5.1 Démon cups (depuis SuSE − 8.1)...... 47 4.5.2 Imprimante HP Officejet Pro 8600 N911a (mcolor)...... 47 4.5.3 Imprimante Samsung ML-2855ND (mountain)...... 47 4.5.4 Pour mémoire: imprimante HP845C (depuis SuSE − 7.3)...... 48 4.5.5 Pour mémoire: imprimante Samsung ML-7050N (mexico)...... 48 4.5.6 Pour mémoire : le démon lpd (jusqu’à la SuSE − 7.3)...... 49 4.5.7 Pour mémoire : imprimante HP5M (printcap, SuSE − 7.2)...... 50 4.5.8 Pour mémoire : imprimante HP840C...... 50 4.5.9 Copies multiples...... 51 4.6 systemsettings...... 52 4.6.1 Réglages ergonomiques minimaux...... 52 4.6.2 Localisation du menu de systemsettings...... 52 4.7 Pour mémoire: kcontrol...... 53 4.7.1 Localisation du menu de kcontrol...... 53 4.7.2 Réglages de FileBrowsing (dans KdeControlCenter)...... 54 4.7.3 Réglages de LookNFeel (dans KdeControlCenter)...... 54 4.7.4 Réglages de Personalization (dans KdeControlCenter)...... 55 4.7.5 Réglages de System (dans KdeControlCenter)...... 55 4.7.6 Gestion des langues...... 55 4.7.7 Problèmes non résolus...... 55 4.8 Le file manager...... 56 4.8.1 dolphin...... 56 4.8.2 konqueror...... 56 4.8.3 konqsidebartng...... 56 4.8.4 Pour mémoire : l’ancien file manager : kfm...... 56 4.9 Terminal konsole...... 57 4.9.1 Consoles locales...... 57 4.9.2 Consoles root...... 57 4.9.3 Consoles à distance...... 58 4.9.4 Pour mémoire : terminal kvt...... 58 4.10 Montage de fichiers : mount...... 58 4.11 Purger les inutilités...... 59

5 Scripts 60 5.1 Commandes shell...... 60 5.2 Filtrage sed...... 60

4 TABLE DES MATIÈRES TABLE DES MATIÈRES

6 Réseaux: quelques préalables 60 6.1 Nommer la machine...... 61 6.2 Récupérer les morceaux...... 61 6.2.1 Gestion ifup/ifdown...... 61 6.2.2 Gestion NetworkManager...... 61 6.3 Anciennes remarques...... 62 6.3.1 Récupérer les morceaux...... 62 6.3.2 Valider les modifications...... 62 6.4 Compilation et installation d’un driver...... 63 6.4.1 Carte wifi madiran SuSE − 13.1, SuSE − 42.1 ...... 63 6.4.2 Carte MCS9865 serial (SuSE − 11.3)...... 64 6.4.3 Carte pci: Realtek RTL-8169 Gigabit (SuSE − 8.1) ...... 64 6.5 Inventaire des cartes réseau...... 65 6.5.1 Pour madiran actuel:...... 65 6.5.2 Cas général...... 65 6.5.3 Motherboard P7P55D (mirabel)...... 65 6.5.4 Motherboard Attansic (maverick)...... 66 6.5.5 Cartes PCI gigabit Evo-ge8169v2...... 67 6.5.6 Carte pci: Realtek RTL-8169 Gigabit...... 67 6.5.7 Pour mémoire...... 67 6.5.8 Carte pci : Surecom EP-320X-R...... 67 6.5.9 Carte pci : DFE-530TX...... 67 6.5.10 Carte pci : ne3000...... 68 6.5.11 Carte pci : carte Intel 82557...... 68 6.5.12 Carte isa : ne2000...... 68

7 Réseaux et routage 68 7.1 Quelques utilitaires...... 68 7.2 Pour mémoire: Dial on call...... 68 7.2.1 Remarques à caractère philosophique...... 68 7.2.2 kppp (SuSE − 6.2)...... 69 7.2.3 pppoed24 (SuSE − 7.2)...... 69 7.2.4 pppoe (SuSE − 8.1)...... 70 7.3 Providers en dhcp (SuSE − 8.1)...... 70 7.3.1 Wanadoo câble...... 70 7.3.2 free (SuSE − 9.3)...... 71 7.3.3 neuf (SuSE − 10.2)...... 71 7.3.4 modulocable (SuSE − 11.3)...... 71 7.4 Wifi...... 72 7.4.1 Questions en suspens...... 72 7.4.2 Configuration du routeur iptime...... 72 7.4.3 Madiran (SuSE − 42.1)...... 72 7.4.4 Miranda2 (\SuSE − 42.1)...... 72 7.4.5 Network Manager...... 73 7.5 Serveur dnsmasq SuSE − 42.1 ...... 73 7.5.1 Lancement du service...... 73 7.5.2 La partie DNS, introduction...... 74 7.5.3 La partie DNS, configuration...... 74 7.5.4 La partie DHCP, introduction...... 74 7.5.5 La partie DHCP, configuration...... 75 7.6 Serveur d’adresses dhcpdbd (SuSE − 10.2)...... 75 7.6.1 Ne pas saboter la passerelle...... 75 7.6.2 Remarques d’installation (SuSE − 10.2)...... 75 7.6.3 Sécurité...... 76 7.6.4 Clients...... 76 7.6.5 Pour mémoire : anciennes versions...... 76 7.6.6 Traitement des logs du serveur dhcp...... 77 7.7 Serveur dns (SuSE − 10.2)...... 77 7.8 Login distant...... 77 7.8.1 ssh...... 77

5 TABLE DES MATIÈRES TABLE DES MATIÈRES

7.8.2 telnet (deprecated)...... 78 7.9 ntp : time accuracy...... 78 7.9.1 A propos des horloges...... 78 7.9.2 ntp (SuSE − 10.2)...... 78 7.9.3 Pour mémoire : ntp et SuSE − 8.1 ...... 79

8 Téléphonne 79 8.1 Korean Anycall Galaxy S [SHW-M110S]...... 79 8.1.1 Dual clock...... 79 8.1.2 Rooting...... 79 8.1.3 Root Status and Device Info...... 79 8.1.4 Kingo-rooting...... 80 8.1.5 Odin...... 80 8.2 Samsung J5...... 80 8.2.1 Connection USB...... 80

9 Appareils photos 80 9.1 Gestion des cartes mémoire...... 80 9.2 Création d’une page "voyage"...... 80

10 Serveur apache 81 10.1 Principes de base...... 81 10.2 Étapes de mise en route...... 82 10.3 Le batch de lancement...... 82 10.4 Fichiers de configuration...... 83 10.5 Mpm...... 84 10.6 Autorisations et mascarades...... 84 10.6.1 Mécanisme d’autorisation (SuSE − 42.1) ...... 84 10.6.2 Pour mémoire: l’ancien mécanisme d’autorisation...... 85 10.6.3 Protection des racines...... 85 10.6.4 Protection par mot de passe...... 86 10.6.5 Mascarades...... 86 10.6.6 Documentation...... 86 10.7 Réglage des exécutables cgi, pl, php...... 87 10.7.1 Réglage global...... 87 10.7.2 Ancienne version de cgi/perl...... 88 10.7.3 Réglages des fichiers des utilisateurs...... 88 10.7.4 php...... 89 10.8 Personnalisation des messages d’erreur (Apache style)...... 89 10.9 Webalizer SuSE − 42.1 ...... 89 10.9.1 Préparer les fichiers log...... 89 10.9.2 Webalizer proprement dit...... 89 10.10Webalizer (ancien)...... 90 10.11Counter-cgi...... 91 10.12Moteur de recherche htdig...... 92 10.12.1 htdig (SuSE − 10.2)...... 92 10.12.2 htdig (SuSE − 8.1)...... 92 10.12.3 htdig (SuSE − 7.2)...... 92 10.13Exploitation de httpd/error.log...... 93 10.13.1 Classer les erreurs par sortes...... 93 10.13.2 Erreurs de programmation...... 93 10.13.3 Fichiers manquants...... 93 10.13.4 Attaque contre winnt/system32/cmd.exe...... 94

11 Samba depuis Nullix 94 11.1 Validation de swat (Samba Web Admin Tool)...... 94 11.2 Utilisation de swat...... 94 11.3 Nullix vers win98 : smbclient...... 94

6 TABLE DES MATIÈRES TABLE DES MATIÈRES

12 Samba vers Nullix 95 12.1 Caveats...... 95 12.1.1 Configuration win98...... 95 12.2 Fichiers samba.log...... 96 12.2.1 Mise en oeuvre...... 96 12.2.2 Extrait d’un fichier log...... 96 12.3 Création d’un nouvel utilisateur...... 96 12.4 Groupe [global]...... 97 12.5 Groupe [homes]...... 98 12.6 Groupe [netlogon]...... 98 12.7 Groupe [cdrom]...... 98 12.8 Groupe [printers]...... 98 12.9 Commandes NET...... 99 12.9.1 Commandes NET USE...... 99 12.9.2 Commandes NET TIME...... 99 12.10Exemple de dialogue...... 100 12.11Autres remarques...... 100

13 php 100 13.1 wikipedia api...... 100 13.1.1 wikipediaapi...... 100 13.1.2 myrevi...... 101

14 phpMyAdmin 101 14.1 Lancer/Configurer mysql...... 102 14.1.1 Attention aux droits et privilèges...... 102 14.1.2 Premier lancement...... 102 14.1.3 Configuration de mysql...... 103 14.1.4 Pour mémoire (tentatives de bricolage de mysql)...... 103 14.2 Installation/Configuration de phpMyAdmin...... 103 14.2.1 Installation...... 103 14.2.2 Configuration...... 104 14.3 Propriétés étendues...... 104 14.4 La base de données maga...... 104 14.4.1 La table in_tabliss_scott...... 104 14.5 La base de données ETC-Kimberling...... 104 14.6 La base de données yeong (Yeonguijeong)...... 105 14.7 La base de données trager...... 105 14.8 thewiki...... 105

15 Transfert de fichiers 105 15.1 fish...... 105 15.2 Synchronisation : unison...... 105 15.2.1 Installation de la version du package...... 105 15.2.2 Compatibilité vers le passé...... 106 15.2.3 Compatibilité vers le futur...... 106 15.2.4 Utilisation...... 107 15.3 Clients ftp...... 107 15.3.1 Accès par un navigateur...... 107 15.3.2 ftp dans une console unix...... 107 15.3.3 Client gftp...... 107 15.3.4 Pour mémoire : Xftp...... 108 15.3.5 Pour mémoire : IglooFTP...... 108 15.3.6 Pour (mauvaise) mémoire : kbear...... 108 15.4 Serveurs ftp...... 108 15.4.1 Généralités...... 108 15.4.2 Serveur in.ftpd...... 109 15.4.3 Serveur vsftpd...... 109 15.5 Torrents...... 109 15.5.1 Quelques remarquesp...... 109

7 TABLE DES MATIÈRES TABLE DES MATIÈRES

15.5.2 azureus (installation)...... 109 15.5.3 azureus (configuration)...... 110 15.5.4 azureus (fonctionnement)...... 111 15.5.5 ktorrent...... 112 15.5.6 ...... 112 15.6 Capturer le cache de mozilla...... 112

16 Mail 112 16.1 Les formats...... 112 16.2 kmail...... 113 16.2.1 Installation...... 113 16.2.2 Configuration...... 113 16.2.3 Utilisation...... 113 16.3 spamassassin...... 114

17 Graphisme 114 17.1 Édition des pictogrammes...... 114 17.2 Gimp...... 114 17.3 Kover...... 114 17.3.1 Version actuelle...... 114 17.3.2 Pour mémoire : problèmes anciens...... 114

18 Musique, vidéo et TV series 115 18.1 A propos du matériel...... 115 18.1.1 Carte graphique...... 115 18.1.2 Son...... 115 18.1.3 Codecs...... 116 18.2 Encodage des vidéos...... 116 18.3 Montage de vidéos...... 116 18.3.1 Montage avec kdenlive...... 116 18.3.2 Rogner les pubs avec ffmpeg...... 117 18.4 Gestion des sous-titres...... 117 18.4.1 Problématique...... 117 18.4.2 Ecraser les pubs...... 117 18.4.3 gnome-subtitles...... 117 18.4.4 gaupol...... 118 18.4.5 aegisub...... 118 18.5 mplayer...... 119 18.5.1 installation...... 119 18.5.2 Batch de commande...... 119 18.6 audacity...... 120 18.7 amarok...... 120 18.7.1 Manips depuis un fichier *.mp4...... 120 18.7.2 SuSE − 42.1 (version 2.8.2)...... 120 18.7.3 Description rapide...... 120 18.7.4 La version 1.4.9...... 121 18.7.5 Problèmes d’installation...... 121 18.7.6 Base dans phpMyAdmin...... 121 18.8 cueape...... 122 18.9 xine...... 122 18.10kaffeine...... 122 18.11vlc...... 122

19 Son (très vieilles choses) 122 19.1 Le gang O$$...... 123 19.2 Expérimentation avec O$$...... 123 19.3 Tentative alsasound...... 124 19.4 kmidi...... 124

8 TABLE DES MATIÈRES TABLE DES MATIÈRES

20 Problèmes précédemment posés 125 20.1 Windows émulateur : wine...... 125

21 Plantages 125 21.1 Plantages klyx...... 125 21.2 Plantages généraux...... 125

9 LISTE DES FIGURES LISTE DES TABLEAUX

Liste des Figures

1 Floating empty figure...... 1 2 Sun’s ViewPower...... 31 3 Modèle de clavier...... 42

Liste des Tableaux

1 Floating empty table...... 1 2 Les services ouverts...... 15 3 docs_runlevel...... 16 4 Liste des *.log pour lesquels un traitement est écrit...... 22 5 Liste des modules pam...... 26 6 Localisation des pictogrammes de la SuSE − 10.2 ...... 34 7 Modificateurs clavier...... 43 8 Table des codes AltGr et AltGr-S...... 43 9 euro et currency, en différents endroits...... 44 10 Comment gérer clearlyu...... 45 11 Adresses spéciales...... 57 12 Exemple de configuration...... 59 13 Les scripts de démarrage...... 62 14 Inventaire général...... 66 15 Des pixels à géométrie variable...... 116 16 Configuration alsasound...... 124

10 LISTE DES INCLUSIONS LISTE DES INCLUSIONS

Liste des Inclusions

1 Floating algorithm, with a 30_mm_cat, a boxed equation and a 15%_cat...... 1 2 qyx_docs_runlevel...... 17 3 Le fichier sysconfig/syslog...... 18 4 Le fichier syslog-ng.conf...... 19 5 qyl_docs_logs (extraits)...... 21 6 packetian...... 25 7 mime_plain.xml...... 34 8 /bin/qxt_type_desktop...... 36 9 Lancement de kwrite...... 36 10 /bin/qxp_purge_desktop...... 37 11 Fichiers .directory ...... 38 12 qia_install_apply...... 47 13 qyr_docs_reseau...... 62 14 sysconfig_ntp...... 79 15 ntp_conf...... 79 16 mise en page des fichiers log...... 96 17 Configuration de vsftpd...... 109

11 LISTE DES INCLUSIONS LISTE DES INCLUSIONS

12 1 SÉCURITÉ

1 Sécurité

La sécurité consiste en premier lieu à avoir une vision globale de ce qui se passe. Et à ne pas créer de trous sous prétexte de régler un problème ailleurs. Primum non nocere.

1.1 Le path de root et de su root 1. Path de root. En fait il y a trois valeurs souhaitables pour $PATH. Lorsque root s’est réellement logué, lorsqu’un su root a eu lieu, et lorsque $ipse veut administrer par un su root, c’est à dire se trouver dans la situation 1 alors qu’il est dans la situation 2. 2. Se donner les moyens de ne pas confondre un programme interactif lancé par $ipse et le pro- gramme correspondant lancé par root. Un réglage des couleurs semble utile: (a) réglage de l’apparence des consoles suroot (cf Subsection 4.9.2). (b) réglage du prompt des consoles lorsque pathroot a été exécuté (c) réglage de l’apparence de kfmclient. 3. Pour des raisons de sécurité, il est important que le $PATH "su root" soit aussi réduit que possible. L’extension du $PATH doit donc résulter d’une action volontaire. Un batch, placé dans $ipse/bin, qui écrit un batch dans /root/bin. Ce deuxième batch, appelé pathroot, s’exécute par . /root/bin/pathroot et contient les commandes PATH=$ipse/bin:/opt/kde3/bin:/opt/kde/bin:/usr/lib//jre/bin USER=root KDEHOME=/root/.kde PS1="\\033[31m\\u@\\h:\\w\\033[30m > " export PATH USER PS1 KDEHOME La variable KDEHOME est indispensable pour pouvoir lancer un filemanager par une commande kfmclient openProfile filemanagement . (un point à la fin). 4. remarque : le fichier de configuration de kedit se trouve dans ~/.kde2//config/keditrc... mais su-root utilise /opt/kde2/share/config/keditrc, et pas le fichier /root/.kde2 ...

1.2 Login manager 1. Pour des raisons juridiques évidentes, les messages d’accueil doivent être inamicaux. En particu- lier, ils ne doivent pas contenir le mot "Welcome". Des messages par défaut comme Welcome to SuSE 9.3 (i586) - Kernel %r (%t) ou Welcome to openSUSE 11.3 sont donc inap- propriés. 2. De même, il n’est pas raisonnable de publier la liste des utilisateurs.

1.2.1 Mode terminal 1. Message d’accueil retenu Here is *name* \n Unauthorised access is prohibited 2. Le message d’accueil pour un login en mode terminal dépend du fichier /etc/issue pour un login local et du fichier /etc/issue.net pour un login distant (telnet). 3. Depuis (au moins SuSE − 10.2), on dispose des options suivantes pour personnaliser le dialogue: d date 2010-07-19 l tty m architecture (e.g. 86_64) n name o ??? r noyau s os (e.g. Linux) t time u ??? (3,4) v #1 SMP 2010-06-29 02:39:08 (compil ?) \n à la ligne

13 1.2 Login manager 1 SÉCURITÉ

1.2.2 Mode graphique

1. Sous la SuSE − 8.1, le login graphique dépendait du répertoire /opt/kdeX/share/config/kdm. Avec cette spécificité que le fichier kdmrc était réécrit par YaST à chaque occasion. Contournement : création d’une archive *.pld et ajout des lignes correspondantes dans le batch qzq_anti_suse. 2. Sous la SuSE − 9.3, le répertoire précédent existe encore, mais n’est là que pour archive. Les fichiers actifs se trouvent dans /etc/opt/kdeX/share/config/kdm : ce sont eux qu’il faut mo- difier. Si l’on utilise kcontrol pour cela, les commentaires descriptifs sont écrasés. 3. Avec la SuSE − 10.2 et la SuSE − 11.0, vous pouvez modifier les fichiers de configuration, mais ils ne sont pas pris en compte. 4. Sous la SuSE − 11.3, tout a encore changé de place. Le gestionnaire est systemsettings, et le fichier utilisé est /usr/share/kde4/config/kdm/kdmrc. Bien entendu, cela continue de ne pas fonctionner (vous pouvez modifier le kdmrc, mais cela n’est pas pris en compte... sauf pour la sec- tion "lister ou non les utilisateurs" et pour NumLock). On peut avoir NumLock par défaut lors du login graphique par systemsettings computer_admin/keyboard_mouse/keyboard/NumLock_on. 5. Sous la SuSE − 11.4, cela a encore changé. On peut modifier (un peu) le fichier de configuration par systemsettings system_admin/Login Screen. 6. Le fichier kdmrc contient les sections suivantes : [General] ... [Xdmcp] ... [Shutdown] ... [X-*-Core] AllowNullPasswd=false ; AllowRootLogin=true ; AllowShutdown=Root AuthNames= XDM-AUTHORIZATION-1,MIT-MAGIC-COOKIE-1 ; AutoReLogin=false ; ClientLogFile= .xsession-errors-%s ; ... [X-:*-Core] [X-:0-Core] [X-*-Greeter] BackgroundCfg=/etc/opt/kde3/share/config/kdm/backgroundrc ; ColorScheme= Keramik ; EchoMode=OneStar ; ForgingSeed=1104924527 ; GUIStyle=Keramik ; GreetS- tring=Here is %h, %m \n unautorised login prohibited ; GreeterPos=60,80 ; Language=en_US ; LogoArea=Clock ; MaxShowUID=65000 ; MinShowUID=500 ; SelectedUsers= ; UseBack- ground=true ; UseTheme=false ; UserCompletion=false ; UserList=false [X-:*-Greeter] [X-:0-Greeter] EnableChooser=false ; LogSource=/dev/xconsole ; ShowLog=true ; 7. Il faut AllowNullPasswd=false partout. De même pour UserList=false. 8. Il faut AllowShutdown=Root dans la section générale et AllowShutdown=All dans la section locale. 9. Jusqu’à la SuSE−7.3, l’apparence du login graphique était réglée par le fichier /opt/kde2/share/ config/kdmrc et proposait les sections suivantes : message d’invitation GreetString=SuSE Linux on HOSTNAME GreeterPosFixed=true GreeterPosX=100 GreeterPosY=100 LogoArea=KdmClock LogoPixmap=/opt/kde2/share/apps/kdm/pics/kdelogo.png login SessionTypes=kde,failsafe ShowPrevious=false ShowUsers=None EchoMode=OneStar (NoEcho) AutoLogin1st=false AutoLoginEnable=false shutdown Restart=/sbin/reboot Shutdown=/sbin/halt ShutdownButton=ConsoleOnly

14 1 SÉCURITÉ 1.3 Services ouverts par runlevel ou inetd

1.3 Services ouverts par runlevel ou inetd 1. Examiner quels sont les services offerts à l’extérieur par la commande nmap -sT localhost Il reste à fermer tout ce qui n’est pas volontairement ouvert. On peut aussi utiliser zenmap, frontal graphique. 2. La Tab. 2 donne la liste des services actuellement ouverts avec i=maverick (SuSE − 11.0), a=madras, n=monalisa, o=moonlight, u=malibu (SuSE − 11.3), b=mirabel (SuSE − 11.4)

name # R user server_path args i a n o u b ftp 21 tcp root /usr/sbin/tcpd vsftpd *** ssh 22 tcp sshd ****** telnet 23 tcp root /usr/sbin/tcpd in.telnetd ** smtp 25 tcp ??? ** time 37 tcp root internal time 37 udp root internal finger 79 tcp nobody /usr/sbin/tcpd in.fingerd -w http 80 tcp apache2 **** pop3 110 tcp root /usr/sbin/tcpd /usr/sbin/popper -s rpcbind 111 tcp ??? ****** 111 udp * ident 113 tcp nobody /usr/sbin/in.identd in.identd -w -e -t120 ntp 123 udp * netbios-ssn 139 tcp smbd ** login 513 tcp root /usr/sbin/tcpd in.rlogind shell 514 tcp root /usr/sbin/tcpd in.rshd -L cups 611 tcp * ipp 631 tcp ??? *** ipp 631 udp ** swat 901 tcp root /usr/sbin/swat swat ** upnp 1900 udp * mysql 3306 tcp ** X11 6000 tcp xdm ** zeroconf 5353 udp avahi ** http-rman 6711 tcp nobody /usr/sbin/tcpd /usr/sbin/http-rman talk udp root /usr/sbin/tcpd in.talkd ntalk udp root /usr/sbin/tcpd in.talkd rplay udp root /usr/sbin/tcpd rplayd en outre: 1025 blackjack, 1036, 18081, 18991, 20236, 28641, 36458, 41081, 41896, 44508

Tab. 2: Les services ouverts.

3. Certains services sont lancés par xinetd et contrôlés par les descriptifs contenus dans /etc/ xinetd.d/. Dans Tab. 2, ils sont listés avec les programmes associés (user, path, args). La commande for i in * ; do echo $i ; grep disable $i | tr "\t" " " | \ sed -e "s¶ [ ]*¶ ¶g" | grep "disable = "; done donne la liste de ces services avec la mention des services désactivés. 4. Dans la SuSE − 8.1, ces services dépendaient du fichier /etc/inetd.conf. 5. D’autres services, comme 80=httpd (apache), 111=sunrpc, 139=netbios-ssn (samba), 515=prin- ter, 1026=nterm, 6000=X11, sont lancés par le mécanisme runlevel. On en obtient la hiérarchie par le batch qyx_docs_runlevel, décrit Alg. 2. 6. Ce mécanisme fait intervenir les batchs figurant dans le répertoire /etc/init.d/. Un bilan en est donné Tab. 3 (avec le code 0=halt, S=pré-1, 1=single user, 2=local, 3=network, 5= graphi- cal+net, 4=???, 6=shutdown). Les batchs concernant le boot sont en tête, et le classement est

15 1.3 Services ouverts par runlevel ou inetd 1 SÉCURITÉ

boot.proc B_K21 B_S01 boot.shm B_K20 B_S02 boot.rootfsck B_K19 B_S03 boot.udev 2_K18 2_S04 3_K18 3_S04 5_K18 5_S04 B_K18 B_S04 boot.coldplug B_K17 B_S05 boot.device-mapper B_K16 B_S06 boot.md B_K16 B_S06 boot.localfs B_K15 B_S07 boot.cleanup B_K14 B_S08 boot.clock S_S08 B_K14 B_S08 boot.klog B_K14 B_S08 boot.loadmodules B_K14 B_S08 boot.scpm B_K14 B_S08 boot.crypto B_K13 B_S09 boot.idedma B_K12 B_S10 boot.localnet B_K12 B_S10 boot.re_perms B_K12 B_S10 boot.swap B_K12 B_S10 boot.ldconfig B_K11 B_S11 SuSEfirewall2_init B_K11 B_S11 boot.isapnp B_K10 B_S12 boot.sysctl B_K10 B_S12 boot.ipconfig B_K09 B_S13 earlysyslog 5_K21 5_S01 fbset 1_K21 1_S01 2_K21 2_S01 3_K21 3_S01 5_K21 5_S01 random 2_K21 2_S01 3_K21 3_S01 5_K21 5_S01 earlykbd 5_K20 5_S02 dbus 3_K19 3_S03 5_K19 5_S03 boot.udev 2_K18 2_S04 3_K18 3_S04 5_K18 5_S04 B_K18 B_S04 network 2_K17 2_S05 3_K17 3_S05 5_K17 5_S05 syslog 2_K16 2_S06 3_K16 3_S06 5_K16 5_S06 portmap 3_K14 3_S08 5_K14 5_S08 boot.clock S_S08 B_K14 B_S08 nfs 3_K12 3_S10 5_K12 5_S10 nfsboot 3_K12 3_S10 5_K12 5_S10 resmgr 2_K11 2_S11 3_K11 3_S11 5_K11 5_S11 alsasound 2_K10 2_S12 3_K10 3_S12 5_K10 5_S12 earlykdm 5_K10 5_S12 kbd S_S12 1_S12 2_S12 3_S12 5_S12 sshd 3_K10 3_S12 5_K10 5_S12 hwscan 2_K09 2_S13 3_K09 3_S13 5_K09 5_S13 powersaved 2_K09 2_S13 3_K09 3_S13 5_K09 5_S13 xdm 5_K09 5_S13 mdnsd 3_K07 3_S15 5_K07 5_S15 nscd 3_K07 3_S15 5_K07 5_S15 cups 2_K06 2_S16 3_K06 3_S16 5_K06 5_S16 postfix 3_K06 3_S16 5_K06 5_S16 cron 2_K04 2_S18 3_K04 3_S18 5_K04 5_S18 hal 3_K03 3_S19 5_K03 5_S19 smbfs 3_K03 3_S19 5_K03 5_S19 halt 0_S20 single S_S20 1_K02 1_S20 SuSEfirewall2_setup 3_K01 3_S21 5_K01 5_S21 4_K01 4_S21

Tab. 3: docs_runlevel

16 1 SÉCURITÉ 1.4 Enregistrement de messages dans les fichiers /var/log/*.log

Incl. 2 qyx_docs_runlevel cd /etc/init.d ; all=/tmp/all_init_d ; sed_file=/tmp/sed_file ; tmp=/tmp/tmp_file ; doc=/home/douillet/docs/sys/doc_run_level find . -mindepth 2 | sed -e "s¶$¶X¶ ; s¶reboot¶halt¶ " > $all sed_string=" s¶/boot.d/¶/rcB.d/¶ ; s¶^....¶¶ ; s¶.d/¶_¶ "

for j in ‘find . -type f -maxdepth 1 | sort‘ ; do i=‘echo $j | sed -e "s¶^..¶¶"‘ echo "‘echo "$i a" | head -c 20‘"‘grep $i\X $all \ | sort | sed -f $sed_file | sed -e "s¶$i\X¶¶" | tr "\n\r" " "‘ done > $tmp cat < $sed_file /1_K/! { s¶^[^ ]*[ ]*¶&_____ ¶ } /1_S/! { s¶^[^ ]*[ ]*..... ¶&_____ ¶ } ---- etc /5_S/! { s¶^[^ ]*[ ]*...... ¶&_____ ¶ } s/_____/ /g EOF sed -f $sed_file $tmp > $doc

chronologique (S=start, K=kill). On constate en particulier que la somme des numéros S et K est constante.. 7. Il conviendrait d’examiner

apmd - Advanced Power Management (APM) daemon fbset - show and modify frame buffer device settings junkbuster - The Internet Junkbuster Proxy named - Internet domain name server nscd - name service cache daemon

8. Sont normalement activés : apache, dhcpd, smbd, nmbd 9. Ont été désactivés :

dhcrelay - Dynamic Host Configuration Protocol Relay Agent /etc/pcmcia/config - PCMCIA card configuration database wvdial.dod - PPP dialer with built-in intelligence Modem_Manager (SuSE − 42.1)

1.4 Enregistrement de messages dans les fichiers /var/log/*.log

1.4.1 Généralités

1. Nous avons divisé nos remarques sur les fichiers *.log en trois parties : enregistrement, rotation, traitement. Ces fichiers constituent à la fois un outil de sécurité et un point de vulnérabilité (déni de service et coulage de ressources). Leur gestion doit être faite avec attention. 2. Chaque fois qu’un fichier *.log est créé, le problème de sa rotation doit être géré. De plus, il semble raisonnable que ces fichiers s’appellent tous *.log. 3. Une méthode générale d’enregistrement des fichiers *.log est fournie par syslog, mais de plus en plus d’applications gèrent leurs fichiers elles-mêmes.

17 1.4 Enregistrement de messages dans les fichiers /var/log/*.log 1 SÉCURITÉ

1.4.2 La méthode syslog 1. Dans le système , un message est caractérisé par une signature (facility) et une priorité (level). facility auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, (security= auth), syslog, user, uucp and local0 ... local7. level debug, info, notice, warning (warn= warning), err, (error= err), crit, alert, emerg, (panic= emerg). Les acronymes warn, error et panic ont été maudits par les instances maudissantes : ne pas les utiliser. 2. Un script peut émettre un message en direction de syslog par la commande logger. Exemples, issu de /etc/ppp/ip-up : logger -p auth.notice -t poll.tcpip logger -p auth.notice -t ip-up.local Ces commandes envoient des messages facility=auth, level=notice, avec le tag indiqué (qui sera répété à chaque ligne). 3. Le script lanceur /etc/init.d/syslog est paramétré par le fichier /etc/sysconfig/syslog (cf. Alg. 3). La commande principale est le choix du démon.

Incl. 3 Le fichier sysconfig/syslog SYSLOG_DAEMON="syslog-ng" SYSLOGD_PARAMS="" SYSLOG_NG_PARAMS="" KLOGD_PARAMS="-x"

KERNEL_LOGLEVEL=1 SYSLOGD_ADDITIONAL_SOCKET_DHCP="/var/lib/dhcp/dev/log" SYSLOGD_ADDITIONAL_SOCKET_NAMED="/var/lib/named/dev/log"

4. Depuis la SuSE − 9.3, le démon d’enregistrement est syslog-ng, contrôlé par le fichier /etc/ syslog-ng/syslog-ng.conf. Auparavant (SuSE − 8.1), le démon était syslog, contrôlé par le fichier /etc/syslog.conf. 5. Utiliser /etc/init.d/syslog restart pour relancer le démon après chaque modification. La nouvelle version tient compte des émetteurs de messages qui s’exécutent en mode chrooted (comme dhcpd ou named). En effet, ces démons émettent depuis /var/lib/xxx/dev/log au lieu d’émettre depuis /dev/log comme tout le monde. 6. Lorsqu’un message est émis vers syslog, la façon dont un couple signature-priorité se traduit par un routage vers un fichier ou un autre est sous le contrôle du fichier /etc/syslog-ng/syslog-ng. conf (Alg. 4). 7. Pour la SuSE − 9.3, le fichier de configuration est SuSE-compilé à partir de /etc/syslog-ng/ syslog-ng.conf.in et de /etc/sysconfig/syslog. Après avoir modifié ces deux fichiers source, il faut lancer SuSEconfig : SuSEconfig –verbose –module syslog-ng. Ce dispositif n’est plus actif sous SuSE − 10.2. 8. *** Voici les déclarations des différents fichiers *.log que nous utilisons /var/log/auth.log /var/log/boot.log /var/log/cron.log /var/log/firewall.log /var/log/kdm.log /var/log/local.log /var/log/mail.log /var/log/messages.log /var/log/news/*.log /var/log/SaX.log /var/log/warn.log /var/log/XFree86.*.log /var/log/Xorg.*.log /var/log/xinetd.log

18 1 SÉCURITÉ 1.4 Enregistrement de messages dans les fichiers /var/log/*.log

Incl. 4 Le fichier syslog-ng.conf options { long_hostnames(off); sync(0); perm(0640); stats(3600); }; source src { internal(); unix-dgram("/dev/log"); #udp(ip("0.0.0.0") port(514)); }; ... filter f_cron { facility(cron); }; filter f_local { facility(local0, local1, local2, ... local7); }; filter f_newserr { level(err) and facility(news); }; filter f_mailerr { level(err, crit) and facility(mail); }; filter f_acpid { match(’^\[acpid\]:’); }; filter f_netmgm { match(’^NetworkManager:’); }; filter f_iptables { facility(kern) and match("IN=") and match("OUT="); }; filter f_messages { not facility(news, mail) and not filter(f_iptables); }; filter f_warn { level(warn, err, crit) and not filter(f_iptables); }; filter f_alert { level(alert); }; filter f_console { level(warn) and facility(kern) and not filter(f_iptables) or level(err) and not facility(authpriv); }; ... destination console { file("/dev/tty10" group(tty) perm(0620)); }; destination xconsole { pipe("/dev/xconsole" group(tty) perm(0400)); }; destination newserr { file("/var/log/news/news.err" owner(news) group(news)); }; destination mailerr { file("/var/log/mail.err" fsync(yes)); }; destination firewall { file("/var/log/firewall"); }; destination warn { file("/var/log/warn" fsync(yes)); }; ... log { source(src); filter(f_console); destination(console); }; log { source(src); filter(f_console); destination(xconsole); }; log { source(src); filter(f_newserr); destination(newserr); }; log { source(src); filter(f_acpid); destination(acpid); flags(final); }; log { source(src); filter(f_netmgm); destination(netmgm); flags(final); }; log { source(src); filter(f_iptables); destination(firewall); };

1.4.3 Gestion directe par les applications 1. Un certain nombre de programmes décrivent leurs propres méthodes dans leurs propres fichiers de configuration. Cela se traduit souvent par des sous répertoires. 2. Il est efficace d’imposer cette utilisation de sous répertoires par toutes les applications utilisant une gestion directe. apache2 /etc/httpd/httpd.conf (SuSE − 9.3) ou /etc/sysconfig/apache2 (SuSE − 10.2) ErrorLog /var/log/httpd/error.log CustomLog /var/log/httpd/access.log combined SSLLog /var/log/httpd/ssl_engine.log TransferLog /var/log/httpd/access.log CustomLog /var/log/httpd/ssl_request.log en + :/var/log/httpd/rcapache.log en + :/var/log/httpd/ssl_scache.dir en + :/var/log/httpd/ssl_scache.pag cups (SuSE − 9.3) /etc/cups/cupsd.conf AccessLog /var/log/cups/access.log ErrorLog /var/log/cups/error.log PageLog /var/log/cups/page.log dhcp-start /etc/init.d/dhcp STARTPROC_LOGFILE=/var/log/dhcpd/rc.dhcpd.log

19 1.5 Rotation des fichiers /var/log/*.log (SuSE − 42.1) 1 SÉCURITÉ

dhcp /etc/dhcpd.conf log-facility local0 ==info==> /var/log/dhcpd/dhcpd.log ircd news ppp /etc/ppp/options log-facility local2 ==info==> /var/log/pppd.log quagga radius samba /etc/smb.conf log level=3 log file=/var/log/samba/%m.log /var/log/samba/xxx.log /var/log/samba/nmbd.log /var/log/samba/smbd.log scpm (SuSE − 9.3) /etc/scpm.conf LOGFILE=/var/log/scpm.log smpppd squid vsftp (SuSE − 9.3) /etc/vsftpd.conf logsyslog_enable=NO log_ftp_protocol=NO xferlog_enable=YES vsftpd_log_file=/var/log/vsftp/vsftpd.log xferlog_std_format=NO xferlog_file=/var/log/vsftp/xfer.log dual_log_enable=YES setproctitle_enable=YES YaST2

1.5 Rotation des fichiers /var/log/*.log (SuSE − 42.1) On consultera https://doc.ubuntu-fr.org/logrotate 1. Il faut s’assurer que tous ces fichiers *.log vont bien être découpés et compressés lorsqu’ils auront dépassé une certaine taille. Les taux de compression étant énormes, le gain de place est évident. Les messages étant très répétitifs, ce taux peut atteindre 1000. En outre, cela permet de découper les archives en morceaux datés et utilisables. 2. Aucun fichier du répertoire /var/log ne doit dépasser la taille prescrite, et en tout cas pas 4 Mo. Un tel dépassement est soit le signe d’un mauvais réglage, soit le signe d’un autre genre de problèmes. 3. A partir de la SuSE − 8.0, le mécanisme logrotate s’installe par défaut. Le fichier /etc/cron. daily/logrotate/ appelle chaque jour la commande /usr/sbin/logrotate, en utilisant le fi- chier de configuration /etc/logrotate.conf. Celui-ci contient quelques commandes "en facteur" pour tous les fichiers. Utiliser : daily rotate 365 maxage 365 create compress ; compresscmd /usr/bin/xz ; uncompresscmd /usr/bin/xzdec previously: compresscmd /usr/bin/bzip2 ; uncompresscmd /usr/bin/bunzip2 dateext

20 1 SÉCURITÉ 1.6 Rotation des fichiers /var/log/*.log (oldies)

include /etc/logrotate.d missingok notifempty 4. Ensuite de quoi, il est prévu que chaque application créant un fichier *.log dispose un mode d’emploi précis dans /etc/logrotate.d. Ceux-ci le font: apache2 yast cups n’est pas prévu = surprise mcelog yast ntp gestion lourdement modifiée 7→ ntpd wtmp yast xdm yast 5. Mais il ne le font pas tous. Il faut donc vérifier qu’un traitement est effectivement prévu pour chacun des fichiers *.log existants. Le batch qyl_docs_logs fait cela. Au passage, un fichier *.csv est compilé pour résumer tout cela (exécution par root si l’on ne veut pas rater de fichiers cachés).

Incl. 5 qyl_docs_logs (extraits) name;compress;copytruncate;dateext;missingok;nocreate;notifempty;sharedscripts;weekly; create;extension;maxage;rotate;size;postrotate

/var/log/apache2/access.log ;+; ;+;+; ;+;+; ;644RR ; ;365;99;+4096k;postrotate... /var/log/apache2/error.log ;+; ;+;+; ;+;+; ;644RR ; ;365;99;+1024k;postrotate... /var/log/dracut.log ; ; ; ;+; ;+; ; ;0600RR; ; ; ;30k ; /var/log/iscsiuio.log ; ; ; ;+; ;+;+;+; ; ; ;4 ; ;postrotate... /var/log/mcelog ;+;+;+;+; ;+; ; ; ; ;365;99;+2048k;postrotate... /var/log/ntp ;+;+;+;+; ;+; ; ; ; ;365;99;+2048k;postrotate... /var/log/pbl.log ;+; ;+;+; ;+; ; ;600RR ;.log;365;10;+4096k; /var/log/rsyncd.log ;+;+;+;+; ;+; ; ; ; ;365;99;+1024k; /var/log/samba/log.nmbd ;+;+;+;+; ;+; ; ; ; ;365;99;+1024k; /var/log/samba/log.smbd ;+;+;+;+; ;+; ; ; ; ;365;99;+1024k; /var/log/samba/log.winbindd ;+;+;+;+; ;+; ; ; ; ;365;99;+1024k; /var/log/snapper.log ;+; ;+;+;+;+; ; ; ; ; ; ; ; /var/log/wpa_supplicant.log ;+;+;+;+; ;+; ; ; ; ;365;99;+4096k; /var/log/wtmp ;+;+;+;+; ;+; ; ; ; ;365;99;+400k ; /var/log/xdm.errors ;+;+;+;+; ;+; ; ; ; ;365;99;+4096k; /var/log/zypper.log ;+; ;+;+;+;+; ; ; ; ; ; ; ; /var/log/zypp/history ;+; ;+;+;+;+; ; ; ; ; ; ; ; /var/log/zypp-refresh.log ;+; ;+;+;+;+; ; ; ; ; ; ; ; xxx ; ; ;+; ; ; ; ;+;create; ; ;4 ; ;

6. Après chaque modification "sensible", il faut lancer /etc/cron.daily/logrotate afin de vérifier qu’il n’y a pas d’erreur de syntaxe. Sans quoi, logrotate se bloque totalement, et tous les fichiers *.log grossissent hors contrôle. 7. Dans une énumération de fichiers à traiter, on passe à la ligne en passant à la ligne, et surtout pas avec un backslash à la fin (à la bash). Ceci serait compris comme un fichier qui s’appellerait "\r"... avec empoisonnement du fichier /var/lib/logrotate.status. 8. La signification précise de daily, weekly, monthly n’est pas claire. S’agit-il de tourner quoi qu’il arrive à la fin de la période, ou bien de tourner au plus une fois par période (et cela seulement si la taille est dépassée) ?

1.6 Rotation des fichiers /var/log/*.log (oldies) 1. Jusqu’à SuSE − 7.2, le mécanisme d’archivage se règle dans /etc/logfiles. Une tentative pour réutiliser ce mécanisme dans les distributions suivantes, imposait de reprendre l’ancien script /etc/cron.daily/aaa_base_rotate_logs et ... de tout gérer à la main. En particulier, donner une valeur non nulle à la variable MAX_DAYS_FOR_LOG_FILES (le fichier rc.config ayant disparu).

21 1.7 Traitement des *.log 1 SÉCURITÉ

2. Configurations individuelles fournies par SuSE − 10.2 (dans le répertoire /etc/logrotate.d/) et non utilisées pour l’instant (avec SuSE − 42.1): mysql yast : caveat /var/lib/mysql/mysqld.log net-snmp yastrsync yast scpm yast syslog séparer mail et news syslog-ng yast vsftpd yast xinetd yast zmd-backend yast zypper.lr modifié en YaST 3. Configurations individuelles écrites spécialement : YaST gère zypper.lr et déclare quelques autres fichiers pour compatibilité. audit auth-cron la gestion des scripts cron (non prévue par défaut) dhcpd-named mail séparé de syslog net-snmp news séparé de syslog ntpd sax-video ces fichiers sont écrasés par SaX à chaque utilisation. Utile pour compatibilité. speciaux boot et evms zmd-message non prévu par yast. On obtient des fichiers non comprimés et valables pour un seul jour d’activité.

1.7 Traitement des *.log 1. La Tab. 4 donne la liste des logs pour lesquels un traitement est écrit .

type de logs type d’outil lien SuSE − 8.1 SuSE − 9.3 dhcpd.log batch Subsection 7.6.6 * firewall.log batch Section 1.9 * httpd.log webalizer Section 10.9 * httpd-error.log batch Section 10.13 * samba.log batch Section 12.2 *

Tab. 4: Liste des *.log pour lesquels un traitement est écrit

2. Il semble utile de créer un nouvel utilisateur secur:secur de façon à ne pas être root lors de cette exploitation, et de ne pas être non plus l’utilisateur usuel (problème de taille et de sauvegardes). Et alors, de façon à pouvoir travailler aisément après une commande su secur, il est utile : (a) d’inclure les lignes suivantes dans /home/secur/.bashrc export PATH=$PATH:~/bin:/opt/kde3/bin export KDEHOME=~/.kde export MAIL=/var/mail/secur export GTK_RC_FILES=/etc/gtk/gtkrc:~/.gtkrc (b) de créer dans $ipse/bin une commande kfm contenant kfmclient openProfile midnightcommander 3. Fichiers boot. Il est intéressant de comparer le fichier runlevel avec les messages émis lors du boot et conservés dans /var/log/boot.msg. Avec la pagaille introduite dans le mécanisme rc.config, il faut retravailler ce fichier. Tel est le but du script (secur) qsb_boot, conduisant au fichier boot_joli.log. On constate que l’ordre des messages reçus est fort différent de l’ordre des runlevels.

22 1 SÉCURITÉ 1.8 SuSEfirewall2

1.8 SuSEfirewall2 1.8.1 Nouvelles remarques FW_DEV_EXT ="eth0", FW_DEV_INT ="eth1" : décrivent les interfaces. En principe, tout interface non décrit est extérieur. FW_ROUTE ="yes", FW_MASQUERADE="yes", FW_MASQ_DEV="zone:ext", FW_MASQ_NETS="0/0" positionne la machine comme le routeur de la zone FW_ALLOW_CLASS_ROUTING ="". Pourrait être "yes" ou "int" ou ··· FW_PROTECT_FROM_INT ="no". Le diable n’est pas à l’intérieur. FW_SERVICES_EXT_TCP ="ftp_ftp-data_ftps_ftps-data_ssh_http" , FW_SERVICES_EXT_UDP=" ", FW_SERVICES_EXT_IP="", FW_SERVICES_EXT _RPC="". Services _sur_le_firewall_ accessibles par le monde exté- rieur. FW_CONFIGURATIONS_EXT ="ntp_sshd_vuze" FW_CONFIGURATIONS_DMZ ="sshd", FW_CONFIGURATIONS_INT="sshd". Services _sur_le_firewall_ accessibles par le monde extérieur: fichiers de configuration à prendre en compte parmi les fichiers de /etc/sysconfig/SuSEfirewall2.d/services. FW_SERVICES_REJECT_EXT ="" ; Est subordonné à FW_SERVICES_{EXT,INT,DMZ}_{TCP,UDP,IP,RPC}: FW_SERVICES_ACCEPT_EXT ="" ; Est subordonné à FW_SERVICES_{EXT,INT,DMZ}_{TCP,UDP,IP,RPC}: FW_SERVICES_ACCEPT_RELATED_{EXT,INT,DMZ} ="" FW_ALLOW_INCOMING_HIGHPORTS_{TCP,UDP} ="". A quoi cela sert-il ? FW_SERVICES_DROP_{EXT,INT,DMZ} ="" FW_SERVICES_REJECT_{EXT,INT,DMZ} ="" FW_FORWARD_MASQ ="0/0,192.168.50.xx,tcp,592xx 0/0,192.168.50.xx,udp,592xx" . Transmet une requête (azureus) "sur le firewall" vers une machine interne FW_ALLOW_FW_BROADCAST_{EXT,DMZ,INT} ="no" FW_ALLOW_PING_{FW,EXT,INT,DMZ} ={"yes","no"$3}. Accepte les ping vers le fire- wall, ou vers l’une des trois zones. FW_LOG_ACCEPT_{ALL,CRIT} ={"no", "yes"} FW_LOG_DROP_{ALL,CRIT} ={"no","yes"}

1.8.2 Anciennes remarques 1. Ne fonctionnait pas sous SuSE − 7.3. 2. Sous SuSE − 8.1, le batch de lancement est /sbin/SuSEfirewall2. Ce fichier lit et interprète le fichier descripteur de règles /etc/sysconfig/SuSEfirewall2. Caveat : stop a pour résultat de laisser les portes ouvertes. Pour tout fermer, utiliser close... sauf pour une machine distante !!! 3. Les fichiers /etc/init.d/SuSEfirewall2{init, setup, final} exécutent des morceaux choi- sis du script principal (à différentes étapes du boot) et ne sont pas destinés à un usage humain. 4. La configuration consiste à décrire quels sont l’intérieur, l’extérieur et la dmz. Il règle le forwarding ainsi que le masquerading du réseau interne. 5. Le firewall doit être déclaré dans les runlevels init=2,3,5 ; setup,final=3,5.  Il faudrait examiner les ipchains engendrées (repartir du batch qyr, Alg. 13).  Comment ne pas enregistrer les martiens ???? les commandes echo 0 > /proc/sys/net/ipv4/conf/all/log_martians echo 0 > /proc/sys/net/ipv4/conf/eth1/log_martians sont annulées à chaque recharge du réseau.

23 1.9 Exploitation de firewall.log 1 SÉCURITÉ

1.9 Exploitation de firewall.log

*** revoir pour SuSE − 9.3 1. Il est important de ne pas noyer les messages critiques sous des montagnes d’inutilités. Par exemple, une connexion wanadoo engendre les montagnes de martian sources. Il faut en bloquer l’enregistrement, par une commande :

echo 0 > /proc/sys/net/ipv4/conf/*/log_martians

Il faut mettre à zéro les deux drapeaux all et ethx, car il y a un ou booléen entre les deux.  A ceci près que root est, par construction, le seul à pouvoir écrire dans ce genre de fichiers, et qu’un batch suid root ne suffit pas. Comment mettre cela dans un script ? (le problème étant que les drapeaux repassent à 1 à chaque déconnexion). 2. La partie intéressante de firewall.log est constituée des "Packet log" . Sous SuSE − 7.2, ils sont enregistrés au niveau info (tandis que les martiens le sont au niveau warn). Sous SuSE −8.1, les " Packet log" sont enregistrés au niveau warn, et les martiens au niveau ***. 3. L’exploitation se fait par mise en tête de l’adresse distante. On obtient alors un tri par émetteur puis par date. 4. Une traduction des numéros de protocole facilite la lisibilité. Une liste de protocoles est rappelée dans /etc/protocols. En particulier,

PROTO 1 6 17 icmp tcp udp

5. La traduction des numéros de services est indispensable, mais il y a des cas où elle est nuisible (exploration de ports en succession). Pour l’instant, on procède en deux temps : repérage des numéros de services, sélection des lignes de filtre puis filtrage. Il est indispensable de ne pas utiliser le filtre complet car il est très long et l’algorithme se traîne abusivement (un adressage direct serait utile). 6. Tout cela est implémenté dans la commande packetian (user digger) décrite Alg. 6.

1.10 Modules pam

La liste des modules disponibles est donnée par la Tab. 5 (les numéros renvoient vers le manuel pam-modules). Le traçage s’obtient en plaçant une ligne pam_warn dans le fichier /etc/pam.d/xxx concerné. Cela provoque un message étiqueté "auth.warn". Dans la configuration standard, cela se traduit par un message sur la console F10, et une ligne dans /var/log/warn. Nous avons choisi de regrouper ces messages dans un fichier spécial /var/log/auth. Dans tous les cas, être attentif à ce que ces logs ne soient lisibles que par root !!!

1.11 Exemple de logs pam

1. login : login sur console

PAM-warn[365]: service: login [on terminal: tty2] PAM-warn[365]: user: (uid=0) -> root [remote: ?nobody@?nowhere] login[365]: pam_unix session started for user root, service login login[365]: pam_unix session finished for user root, service login

2. passwd : changement de mot de passe

PAM-warn[400]: service: passwd [on terminal: ] PAM-warn[400]: user: (uid=0) -> root [remote: ?nobody@?nowhere] PAM-warn[400]: service: passwd [on terminal: ] PAM-warn[400]: user: (uid=0) -> root [remote: ?nobody@?nowhere]

3. xdm : login graphique

24 1 SÉCURITÉ 1.11 Exemple de logs pam

Incl. 6 packetian serv=/home/digger/docs/services dir="/home/digger/docs/packetians" ; mkdir -p $dir case $1 in ; -x) xflag=xflag ; shift ;; *) ;; esac if test $1 ; then nom=‘echo $1 | sed -e "s¶^.*/¶¶ ; s¶\.gz$¶¶ ; s¶\.log¶¶ "‘ if test ‘echo $1 | tail -c4 ‘ = ".gz" then gunzip -c $1 > $dir/tmp.log ; src=tmp.log else src=$1 ; echo "source = $src" fi else src=/var/log/firewall-info.log ; nom=firewall-info fi ; cd $dir cat << EOF > sed_file1

/site_web:80/ { /ACCEPT/ d } ; s/DENY/DENIED/ s/moonlight kernel: Packet log: // ; s/madras kernel: Packet log: // s/^...... [^ ]* [^ ]* [^ ]* [^ ]* [^ ]* /&distant/ s/distant[^ ]* /& local/ ; s/local[^:]*:/local:/ ; s/local[^ ]* /& / h ; G ; s/^[^d]*distant// s/:.*\\ / / ; s/distant[^:]*:/distant:/ s/input DENIED ppp0/FIRED9/ ; s/input ACCEPT ppp0/input9/ s/input DENIED eth0/FIRED0/ ; s/input ACCEPT eth0/input0/ s/input DENIED eth1/FIRED1/ ; s/input ACCEPT eth1/input1/ s/PROTO=1 /ICMP / ; s/PROTO=6 /tcp / ; s/PROTO=17 /udp / ; s/ local:0 / local:0 / EOF cat << EOF > sed_unkn h ; G ; s¶^¶ s/local:¶ ; s¶/\\ ¶ /=====¶ ; s¶/$¶ /¶ EOF grep "Packet log:" $src | sed -f sed_file1 | sed -f $serv/S_aaa_services | sort \ > tmp0.log grep -v "Packet log:" $src | grep -v "last message repeated" | gzip -c \ > autres_$nom.gz grep local tmp0.log | sed -e "s/^.*local// ; s¶ .*¶¶" | sort -u > tmp1 if test -s tmp1 then echo "/local/ { " > sed_filtre for i in ‘cat tmp1‘ do grep "$i " $serv/S_zzz_services >> sed_filtre ; done echo >> sed_filtre ; echo "}" >> sed_filtre sed -f sed_filtre tmp0.log > packet-$nom.log fi ; rm tmp* ; rm sed*

25 1.11 Exemple de logs pam 1 SÉCURITÉ

1 pam_access.so access 2 pam_chroot.so racine / changed * 3 pam_cracklib.so 4 pam_deny.so locking-out 5 pam_env.so set/unset 6 pam_filter.so 7 pam_ftp.so anonymous ftp access 8 pam_group.so 9 pam_krb4 kerberos * 10 pam_lastlog.so last login 11 pam_limits.so ressources 12 pam_listfile.so 13 pam_mail.so 14 pam_nologin.so 15 pam_permit.so promiscuous 16 pam_pwdb.so 17 pam_radius.so 18 pam_rhosts_auth.so 19 pam_rootok.so user root ok 20 pam_securetty.so pam_shells.so pam_stress.so pam_tally.so 21 pam_time.so pam_unix.so pam_unix_acct.so pam_unix_auth.so pam_unix_passwd.so pam_unix_session.so 22 pam_warn.so 23 wheel *

Tab. 5: Liste des modules pam.

26 2 ONDULEURS 1.12 Nouveaux utilisateurs

1.12 Nouveaux utilisateurs

1. Il est utile que les mêmes utilisateurs aient les mêmes uid d’une installation à la suivante (ce qui permet de conserver les droits... ). Cette remarque est en particulier valable pour $ipse. 2. Ne pas oublier d’élaguer le squelette, c’est à dire /etc/skel avant de créer les utilisateurs. Commande:

useradd [-c comment] [-d home_dir] [-e expire_date] [-f inactive_time] [-g initial_group] [-G group[,...]] [-m [-k skeleton_dir]] [-o] [-p passwd] [-s shell] [-u uid] login 3. Recopier au minimum $ipse/bin et $ipse/docs/nullixn  kusers (anciennes versions) n’attribue pas correctement les droits sur les fichiers.  kmusers semble fonctionner correctement.  gag interplanétaire : passwd ne s’écrit pas pareil dans les claviers us et fr. Or le password ne s’affiche pas (trou de sécurité dans l’anti-trou).

2 Onduleurs

2.1 Hardware 1. PowerWalker VFI 1000. Prix (SuSE − 13.1) 231€. Code 0665:5161 (ups) 2. Mustek: PowerMust 1000 Online (serial) 3. Mustek: Powermust 600VA Plus (serial), driver: blazer_ser 4. Tous fonctionnent avec des batteries 12v, 7.2Ah. Bornes T2. Prix kit de 3: £50.95=64.42€ (vat included, port excluded). Prix livré, 4 pièces: 91€. Il y a de grosses différences de prix. Les causes utiles sont le nombre de cycles en décharge profonde, la survie dans le temps (3 à 5 ans), la survie sans recharge. 5. SuSE − 42.1 (2018): batterie Yuasa NP7-12 AGM S65 - 12V 7.0Ah: 21.50€ livré.

2.2 Management NUT 1. Commencer par identifier le matériel ups sur la liste: http://www.networkupstools.org/stable-hcl.html 2. Ensuite de quoi, installer: SuSE − 11.3: nut+nut-cgi+nut-classic+nut-devel+nut-drivers-net SuSE − 13.1: nut+nut-cgi+nut-devel+nut-drivers SuSE − 42.1: nut+nut-cgi+nut-devel+nut-drivers-net 3. Le barnum s’exécute en trois couches. (1) driver (du matériel ups); (2) upsd (programme de surveillance et action); (3) upsmon (frontal).

2.2.1 Fichiers de configuration (1)

On commence par configurer la communication avec le matériel. Lire man nutupsdrv (pour les drivers). /etc/ups/nut.conf MODE=standalone # (could be - none; - standalone; - netserver; - netclient) /etc/ups/ups.conf [serUPS] driver = blazer_ser port = /dev/ttyS4 desc = "UPS madiran" [madiranUPS] driver = blazer_usb port = auto desc = "UPS madiran"

27 2.2 Management NUT 2 ONDULEURS

[mahjong-serUPS] driver = megatec port = /dev/ttyS4 desc = "Mahjong serial UPS" mfr = "Mustek" model = "1000-OL" ### /dev/ttyS4 uart 16650V2 port 0xe480 irq 16 baud_base 115200 spd_normal skip_test

2.2.2 Tester la communication (ser) 1. En service normal, appel de tous les UPS par : /usr/lib/ups/driver/upsdrvctl start 2. Vérifier le port série: appel direct du driver par root: /usr/lib/ups/driver/blazer_srt -a srtUPS -u root =⇒ Supported UPS detected with megatec protocol 3. S’il faut débloquer le port, utiliser fuser -k /dev/ttyS4. 4. Donner à upsd les droits d’accès au port par chown upsd /dev/ttyS4. Network UPS Tools - Megatec/Q1 protocol serial driver 1.56 (2.7.1) Supported UPS detected with megatec protocol Vendor information unavailable No values provided for battery high/low voltages in ups.conf Using ’guestimation’ (low: 10.400000, high: 13.000000)! Battery runtime will not be calculated (runtimecal not set)

2.2.3 Tester la communication (usb) 1. Un premier échec sur madiran: /usr/lib/ups/driver/upsdrvctl start Network UPS Tools - UPS driver controller 2.6.5 Network UPS Tools - Megatec/Q1 protocol USB driver 0.09 (2.6.5) Can’t claim USB device [0665:5161]: Numerical result out of range Driver failed to start (exit status=1) 2. Débranché et rebranché le câble... Et cela fonctionne... 3. Appel direct du driver: /usr/lib/ups/driver/blazer_usb -a madiranUPS Network UPS Tools - UPS driver controller 2.6.5 Network UPS Tools - Megatec/Q1 protocol USB driver 0.09 (2.6.5) Supported UPS detected with megatec protocol Vendor information read in 1 tries No values provided for battery high/low voltages in ups.conf Using ’guestimation’ (low: 31.200000, high: 39.000000)! Battery runtime will not be calculated (runtimecal not set)

2.2.4 Identifier un Onduleurs usb

commande driver -a xxxx -DD. Réponse: 1. Checking device (1D6B/0002) (001/001); Failed to open, skipping. (Permission) 2. Checking device (03F0/A407) (001/004); Failed to open, skipping. (Permission) 3. Checking device (1D6B/0002) (002/001); Failed to open, skipping. (Permission) 4. Checking device (062A/4101) (005/002); Failed to open, skipping. (Permission) 5. Checking device (0665/5161) (005/003) (a) VendorID: 0665; ProductID: 5161; Bus: 005 (b) Manufacturer: unknown; Product: unknown; Serial Number: unknown

28 2 ONDULEURS 2.2 Management NUT

(c) Trying to match device. Device matches (d) failed to claim USB device: Device or resource busy (e) detached kernel driver from USB device... (f) Trying megatec protocol... (g) blazer_status: short reply (h) Status read 1 failed ; Status read in 2 tries (i) Supported UPS detected with megatec protocol (j) Ratings read in 1 tries (k) No values provided for battery high/low voltages in ups.conf (l) Using ’guestimation’ (low: 31.200000, high: 39.000000)! (m) Battery runtime will not be calculated (runtimecal not set) (n) dstate_init: sock /var/lib/ups/blazer_usb-madiranUPS open on fd 8

2.2.5 documentation

1. man nutupsdrv (pour les drivers) 2. Importer http://www.networkupstools.org/docs dans /home/distrib/nut

2.2.6 fichiers de configuration (2) file:///etc/ups/upsset.conf Il faut ouvrir et modifier ce fichier pour que http://localhost/cgi-bin/nut/upsset.cgi ac- cepte de répondre file:///etc/ups/upsd.users [admin] password = mypass actions = SET instcmds = ALL [upsmaster] password = mypass # 1bb110c220 allowfrom = localhost upsmon master [upsslave] password = mypass # 665e186bb1 allowfrom = localhost upsmon slave file:///etc/ups/upsd.conf MAXAGE 15 STATEPATH /var/run/nut LISTEN 127.0.0.1 3493 MAXCONN 1024 CERTFILE (ssl) file:///etc/ups/upsmon.conf (avec passwords) DEADTIME 15 FINALDELAY 5 HOSTSYNC 15 MINSUPPLIES 1 NOCOMMWARNTIME 300 NOTIFYFLAG COMMBAD SYSLOG+WALL NOTIFYFLAG COMMOK SYSLOG NOTIFYFLAG FSD SYSLOG+WALL NOTIFYFLAG LOWBATT SYSLOG+WALL NOTIFYFLAG NOCOMM SYSLOG+WALL NOTIFYFLAG ONBATT SYSLOG+WALL NOTIFYFLAG ONLINE SYSLOG NOTIFYFLAG SHUTDOWN SYSLOG

29 2.3 Résultats 2 ONDULEURS

POLLFREQ 5 POLLFREQALERT 5 POWERDOWNFLAG /etc/killpower RBWARNTIME 43200 SHUTDOWNCMD "/sbin/shutdown -h +0" MONITOR serUPS@localhost 1 admin mypass master ******

file:///etc/ups/hosts.conf (sans passwords) MONITOR madiran@localhost "UPS madiran" file:///etc/sysconfig/SuSEfirewall2.d/services/nut open port nut file:///etc/sysconfig/services nut 3493/tcp # Network UPS Tools [Russell_Kroll] nut 3493/udp # Network UPS Tools [Russell_Kroll]

 Sécurité: ne pas ouvrir le port nut sur les réseaux qui n’en n’ont pas besoin.

2.2.7 Lancement du serveur

1. Rappel: on lance au préalable les drivers par: /usr/lib/ups/driver/upsdrvctl start Était-ce utile de mettre des "127.0.0.1" au lieu les "localhost"

2. Puis lancer le serveur par upsd -u root (cela se ferme par upsd -c stop)

2.3 Résultats

Pour Powermust 600VA serial, la commande upsc donne:

device battery mfr charge 100 model voltage 13.90 type ups voltage high 13.00 ups voltage low 10.40 beeper status ena voltage nominal 12.20 delay shutdown 30 input delay start 180 current nominal 3.0 firmware frequency 50.0 load 7 frequency nominal 50 mfr voltage 241.4 model voltage fault 241.5 productid voltage nominal 220 status OL driver temperature 25.0 name blazer_ser type offline/line parameter pollinterval 2 interactive vendorid parameter port /dev/ttyS4 output version 2.7.1 voltage 239.1 version internal 1.56

Pour un online-usb, la commande upsc donne :

30 2 ONDULEURS 2.4 Management Sun

device battery mfr charge 100 model HV 1K voltage 40.86 type ups voltage high 39.00 ups voltage low 31.20 beeper status enabled voltage nominal 36.00 delay shutdown 30 input delay start 180 current nominal 4 firmware 1906 frequency 50 load 4 frequency nominal 50 mfr voltage 232.4 model HV 1K voltage fault 232.4 productid 5161 voltage nominal 220 status OL driver temperature 23.7 name blazer_usb type online parameter pollinterval 2 vendorid 665 parameter port /dev/ttyS0 output version 2.6.5 voltage 219.6 version internal 0.09

Et l’on a même le commentaire: 1. battery.voltage. Ce que donne l’ups semble être l’équivalent d’une tension par élément. Ce nombre est alors multiplié par le nombre d’éléments (connu à partir de la tension nominale ?). Le multiplicateur est donné par :

battvoltmult= (driver megatec) override.battery.packs= (driver blazer).

On obtient alors des valeurs inattendues (40.86 sur madiran, 41.76 sur mahjong). 2. On lance un deep battery test, et alors la charge passe à 37.98 (madiran).

2.4 Management Sun

http://www.power-software-download.com/viewpower.html Bien plus beau. Mais ne gère pas mahjong... et les réglages de sécurité ne sont pas clairs.

Figure 2: Sun’s ViewPower

31 3 ICÔNES, ETC.

3 Icônes, etc.

Plan de la section: 1. introduction 2. Gestion des mimetypes 3. Gestion des filepifs (icônes) 4. Lanceurs Remarque: Les comportements suivants sont devenus tellement habituels, qu’il convient de les installer immédiatement. shortcuts (keys). Positionner les raccourcis suivants:

hMF 6i maximise vertical hMF 7i maximise horizontal. hC S F xi pour aller vers un bureau, de façon à garder hF 4i pour fermer une sous-fenêtre. hP rinti pour lancer spectacle (capture écran) iceWMCP . iceWM_Preferences . Key_Bindings. Il faut, au préalable, désaffecter le lien utilisant le raccourci choisi. iceWMCP . Keyboard Settings . Shortcut_Keys. Print -> spectacle kcontrol LookNFeel (dans KdeControlCenter) Pour supprimer au préalable le lien existant entre hC S F xi avec le bureau 1x, il ne suffit pas de valider, il faut quitter ce menu de kcontrol et y revenir.

3.1 Introduction 3.1.1 Pictogrammes, filepifs, mimepifs icon est un terme en_US servant à désigner le truc sur lequel on clique pour lancer une action. Dans la vraie vie, il est indispensable de distinguer entre l’image qui permet de matérialiser à l’écran l’endroit où il faut cliquer et le fichier qui code l’action qui va en résulter. Nous avons donc décidé de spécifier : pictogramme est une image, souvent de petite taille, servant à visualiser soit une action soit un objet susceptible d’une certaine action. filepif est le fichier associant un pictogramme et une commande à exécuter. Lorsque le contexte semblera suffisant, nous utiliserons néanmoins icône pour désigner un filepif. mimepif est le fichier qui décrit les "fichiers d’une certaine sorte", d’une façon utilisable par les filepifs.

Et donc lorsque l’on place un filepif dans le répertoire Desktop, le pictogramme associé "apparaît sur le bureau" (pour un "bureau" à l’ancienne), et la description anthropomorphique est: nous avons une icône sur le bureau.

3.1.2 Salades catalanes

1. La langue mexicaine est parlée par environ 400 millions de personnes à travers le monde : 107 millions au Mexique, 45 millions en Colombie, 43 millions aux États-Unis, 40 millions en Argen- tine. L’Espagne (40 millions d’habitants moins les microphones) ne vient que largement après. C’est la raison pour laquelle les filepifs sont encombrés par tout un tas de traductions à la noix. En plus de [es], qui désigne le mexicain, il y a [ca] qui désigne le "Madrid, c’est pas nous" et [ca@valencia] qui désigne le "Barcelonne, c’est pas nous". 2. Toutes ces traductions sont nocives, y compris la traduction [us]. Ce dont on a besoin, c’est de voir le nom du programme. Le nom, cela veut dire le vrai nom, celui du système de fichiers, celui qui permet de lancer depuis la console. 3. Il faut donc faire de la place dans les mimelinks et dans les filepifs (voir les sections respectives).  Pire. AvecSuSE − 11.4, le menu des applications usuelles affichait le GenericName au lieu du Name. Voir apparaître Text editor à côté de l’icône de gedit ne sert absolument à rien.

32 3 ICÔNES, ETC. 3.1 Introduction

3.1.3 Localisation des pictogrammes et filepifs 1. Les répertoires contenant les icônes de typage et de lancement n’arrêtent pas de changer de place et de fonctionnalités. SuSE, puis Novell, puis OpenSuse veulent maintenir leur propre menu en plus du menu KdE. Plusieurs ruptures ont eu lieu, principalement causées par le passage de KdE_1 à KdE_2/KdE_3, suivi du passage à KdE_4. Mais les anciens emplacements restent assez souvent actifs (compatibilité ?), tandis que les nouveaux continuent de migrer "quelque peu". 2. Commencer par vérifier le numéro de version de Qt et KdE par SUSEgreeter -v. Pour SuSE − 42.1, cela donne Qt: 4.8.6 ; KDE Dev. 4.14.18. Pour SuSE − 13.1, cela donnait Qt: 4.8.5 ; KDE Dev: 4.11.5. 3. On peut vérifier le numéro de version de la SuSE en cours par la commande cat /etc/os-release. Pour mémoire, le numéro de version figurait dans les écrans affichés par SuSEgreater (SuSE−8.1) ou SUSEgreater (SuSE − 9.3).

3.1.4 Répertoires (SuSE − 11.3 et après)

1. Ne pas charger kde3 (KdE_4 est utilisé, le reste n’est que du bruit). 2. Pictogrammes icons /usr/share/icons/, avec des sous-menus selon les styles, puis les tailles. Le sous-répertoire hicolor est le lieu préféré pour les pictogrammes à importer. pixmaps /usr/share/pixmaps (lyx est là) En outre, l’utilitaire kiconfinder permet d’aller à la chasse aux pictogrammes. 3. Fichiers mimetypes mime /usr/share/mime. En particulier, magic est là. Le sous répertoire packages contient les sources utilisées. C’est le bon endroit pour écrire les nouveautés (et pour purger les mimelinks). synchronisation Utiliser la commande update-mime-database /usr/share/mime 4. Fichiers filepifs

all /usr/share/applications/ répertoire générique contient (LYX, cups, etc) kde /usr/share/applications/kde4 k-dirs /usr/share/desktop-directories : les groupements du menu (generic names) synchronisation Utiliser la commande update-desktop-database /usr/share/applications Quand on ne voit pas apparaître le filepif de lancement dans le menu, la cause est souvent une ligne NoDisplay=true dans le filepif.

3.1.5 Pour mémoire: répertoires SuSE − 10.2 1. Utilisation de kde3 2. Pictogrammes. Les localisations utilisées par la SuSE−10.2 sont données par la Table 6. Utiliser /usr/share/icons/ pour placer les pictogrammes "configurés à la main" (faire comme YaST). Mettre unison.png là. 3. Mimelinks mime /opt/kde3/share/mimelnk. En particulier, magic est là. oldies /etc/opt/kde3/share/mimelnk : contient quelques mimetypes n’ayant pas migré au bon endroit. 4. Filepifs kde /opt/kde3/share/applications/kde k-old l’ancien emplacement n’a pas disparu. Il contient quelques isolés (qui n’avaient pas été prévenus...) mais aussi /opt/kde3/share/applnk/.hidden et /opt/kde3/share/applnk/System/ScreenSavers. k-auto /opt/kde3/share/autostart ... à explorer k-dirs /opt/kde3/share/desktop-directories : les groupements du menu (generic names)

33 3.2 Gestion des mimetypes 3 ICÔNES, ETC.

/etc/opt/kde3/share/icons /usr/share/icons /opt/gnome/share/icons++ /usr/share/latex2html/icons /opt/gnome/share/xxxy/icons /usr/share/supertux/images/icons /opt/kde3/share/apps/xxx/icons /opt/kde3/share/doc/HTML/en/kcontrol/icons /opt/gnome/share/pixmaps /opt/kde3/share/emoticons /opt/kde3/share/apps/kstyle/pixmaps /opt/kde3/share/icons /usr/include/X11/pixmaps /usr/X11R6/share/icons /usr/lib64/X11/xdm/pixmaps /usr/lib/firefox/icons++ /usr/share/X11/fvwm2/pixmaps /usr/lib64/xulrunner-1.8.1b2/icons++ /usr/share/X11/fvwm2/utils/quantize_pixmaps /usr/local/lib/scilab/tcl/scipadsources/icons /usr/share/pixmaps /usr/share/YaST2/theme/openSUSE/icons /usr/share/texmf/xdvi/pixmaps

Table 6: Localisation des pictogrammes de la SuSE − 10.2

k-new /opt/kde3/share/templates gère le menu "Create new...", selon le modèle contenu en /opt/kde3/share/templates/.source old /etc/opt/kde3/share/ ... ne contient presque plus rien alt /usr/share/applications/ contient les réfractaires (dont LYX, cups ... et YaST).

3.2 Gestion des mimetypes 1. Sous winx, un nom de fichier est composé d’un nom et d’une extension destinée à désigner le type du fichier, c’est à dire à décrire l’application devant être utilisée pour ouvrir ce fichier. Cette méthode est bonne, et la méthode unix est mauvaise. Et encore plus mauvaise du fait qu’elle a été bricolée pour ressembler à la méthode winx. 2. Le typage unix s’appelle mimetype. La méthode de typage de base consiste à deviner le mimetype d’un fichier à partir d’éléments identifiables de son contenu. Le fichier magic (placé à la racine du répertoire mime) contient les incantations de divination. 3. Une méthode complémentaire est que les descripteurs des mimetypes contiennent des listes d’ex- tensions... Ces deux méthodes sont susceptibles d’entrer en conflit. Sans compter que le répertoire des mimetypes ... change de place trop souvent.

3.2.1 Les mimetypes (SuSE − 11.3 et après)

1. Le fichier /usr/share/mime/text/plain.xml est décrit Alg. 7. C’est le commentaire écrit dans ce fichier qui s’affiche dans konqueror en tant que "Type".

Incl. 7 mime_plain.xml .txt

2. Ces fichiers existaient déjà sous la SuSE − 11.0 et étaient obtenus à partir des répertoires mimelink (cf infra, SuSE − 10.2). Sous la SuSE − 11.3, ces fichiers sont compilés à partir de /usr/share/mime/packages. Le fichier freedesktop.org.xml contient les description de 610 mimelinks. Les packages déposent leurs descripteurs complémentaires dans ce même répertoire et la commande update-mime-database fait ce qu’il faut. 3. Pour purger les descripteurs des salades catalanes, faire une copie de /usr/share/mime/packages dans /home/distrib/mime. Ne plus jamais toucher à cette copie. Créer un sous-répertoire Work, y placer les batchs de modification, et leur résultats. Les recopier vers .../packages et synchroniser

34 3 ICÔNES, ETC. 3.3 Gestion des filepifs (icônes)

par la commande update-mime-database /usr/share/mime. Cela permet de se protéger contre une réécriture par SuSE/YoU. Et de toutes façons, c’est la bonne méthode pour agir sur plusieurs ordinateurs. 4. Évidemment, si l’on procède à des modifications dans ipse/.local/mime, il faut synchroniser le global et le local (ne pas donner le même commentaire affichable aux deux, exemple .mw en global et .mwL en local). 5. Dans tous les cas, il est utile que le "Type" affiché par konqueror soit sur trois ou quatre lettres. On remplace le commentaire standard par l’extension voulue (dans packages/freedesktop-org.xml) et on synchronise. plain text document .txt application log .log XML document .xml Perl script .perl empty document .vide shell script .bat unknown .bin PDF .pdf desktop configuration file .filepif PS .ps HTML .html

On constate que l’action est immédiate... sauf les fois où il ne se passe rien (cause inconnue).  A quoi sert le champ ?

3.2.2 Pour mémoire: les mimetypes sous SuSE − 10.2 1. Pour les SuSE − 10.2 et précédentes, les mimetypes dépendent chacun d’une icône (filepif) placé dans un répertoire mimelink. 2. Pour la SuSE − 10.2, le "véritable" répertoire mimelink est /opt/kdeX/share/mimelink tandis que le répertoire /etc/opt/kdeX/share/mimelink ne contient presque rien. Pour SuSE − 8.1, c’était le contraire. Le point clef est d’être en accord avec les règles de compilation de la "base de registre" ksycoca par le programme kbuildsycoca. Il est efficace de remplacer le répertoire inutile par un lien. 3. Dans le navigateur, la colonne filetype des fichiers contient (le plus souvent) le commentaire figurant dans le fichier mimetype associé. Un peu de ménage s’impose pour installer des "exten- sions" raisonnables. Le batch qxt_type_desktop (Alg. 8) fait cela. Le compléter au fur et à mesure.

3.3 Gestion des filepifs (icônes) 1. Chaque icône permettant de lancer un programme est en fait un fichier spécial, comme dé- crit Alg. 9. Référence : http://standards.freedesktop.org/desktop-entry-spec/latest/ index.html. 2. Depuis la SuSE − 10.2 et KdE_3.5, ces fichiers-icônes sont de plus en plus souvent divisés en sections [Desktop Entry] la section principale [Desktop Action] action appelée par une ligne Actions= dans la section principale [Property::] propriétés diverses [etc] à peu près n’importe quoi 3. En outre, depuis KdE_2/KdE_3, ces fichiers sont de plus en plus encombrés par des salades catalanes. Se placer dans les répertoires concernés et lancer le batch approprié. La version actuelle de qxp_purge_desktop (Alg. 10) est à réécrire, de façon à être certain de ne pas chambouler les sections lors du tri. En tout cas, il faut purger les lignes. Name[xx]= le nom du fichier Comment[xx]= commentaire Description[xx]= description GenericName[xx]= nom du groupe Keywords[xx]= ???

35 3.3 Gestion des filepifs (icônes) 3 ICÔNES, ETC.

Incl. 8 /bin/qxt_type_desktop. #! /bin/bash mkdir -p ~/tmp ; tmp=~/tmp/tmp_file function vazy (){ sed -e "s/Comment.*/Comment=."$2"/" $1 > $tmp ; mv $tmp $1 } vazy /opt/kde3/share/mimelnk/application/msexcel.desktop xls vazy /opt/kde3/share/mimelnk/application/msword.desktop doc vazy /opt/kde3/share/mimelnk/application/pdf.desktop pdf vazy /opt/kde3/share/mimelnk/application/postscript.desktop ps vazy /opt/kde3/share/mimelnk/application/x-desktop.desktop pif vazy /opt/kde3/share/mimelnk/application/x-dvi.desktop dvi vazy /opt/kde3/share/mimelnk/application/x-gzip.desktop gz vazy /opt/kde3/share/mimelnk/application/x-lyx.desktop lyx vazy /opt/kde3/share/mimelnk/application/x-perl.desktop perl vazy /opt/kde3/share/mimelnk/application/x-shellscript.desktop bat vazy /opt/kde3/share/mimelnk/application/x-trash.desktop old vazy /opt/kde3/share/mimelnk/image/x-eps.desktop eps vazy /opt/kde3/share/mimelnk/inode/directory.desktop dir vazy /opt/kde3/share/mimelnk/text/html.desktop html vazy /opt/kde3/share/mimelnk/text/plain.desktop txt vazy /opt/kde3/share/mimelnk/text/x-log.desktop log vazy /opt/kde3/share/mimelnk/text/x-lyx.desktop lyx vazy /opt/kde3/share/mimelnk/text/x-tex.desktop tex

Incl. 9 Lancement de kwrite. # KDE Config File [Desktop Entry] [KDE Desktop Entry] Categories=Qt;KDE;TextEditor; BinaryPattern= DocPath=kwrite/index.html Comment[C]=Advanced Editor Encoding=UTF-8 Exec=kwrite %U Exec=kwrite -caption "%c" %i %m %f GenericName=Text Editor Icon=kwrite.xpm Icon=kwrite MimeType=application/x-kdelnk;... InitialPreference=8 MiniIcon= MimeType=application/x-desktop;... Name[C]=k&Write Name=&KWrite Path= Path= Protocols= Terminal=false SwallowExec= Type=Application SwallowTitle= X-DCOP-ServiceType=Multi Terminal=0 X-KDE-StartupNotify=true TerminalOptions= X-SuSE-Unimportant=true Type=Application X-SuSE-translate=true KdE_2/KdE_3 : kwrite.desktop KdE_1 : Editors/kwrite.kdelnk

36 3 ICÔNES, ETC. 3.3 Gestion des filepifs (icônes)

Incl. 10 /bin/qxp_purge_desktop. #! /bin/bash mkdir -p ~/tmp ; liste=~/tmp/liste ; tmp_sed=~/tmp/tmp_sed tmp_seda=~/tmp/tmp_seda ; tmp_file=~/tmp/tmp_file ; tmp_prop=~/tmp/tmp_prop cat << EOF > $tmp_seda /\[Property/, $ p EOF cat << EOF > $tmp_sed /\[Property/, $ d /^$/d /\[Desktop\ Entry\]/ d /\[KDE\ Desktop\ Entry\]/ d /\#\ KDE\ Config\ File/ d /\[af\]/ d .... /\[zu\]/ d EOF find . | grep desktop | grep -v "desktop.save" > $liste find . | grep directory | grep -v "rectory.save" >> $liste for i in ‘cat $liste‘ ; do echo $i ; cp $i $i.save sed -n -f $tmp_seda $i > $tmp_prop sed -f $tmp_sed $i > $tmp_file {echo "[Desktop Entry]" ; sort $tmp_file ; echo "" ; cat $tmp_prop } > $i done

37 3.3 Gestion des filepifs (icônes) 3 ICÔNES, ETC.

4. Déclarer que kwrite gère les mimetypes *.log et *.desktop. 5. De l’utilité des batchs : YoU (ou autre) a une tendance fâcheuse à réécrire les applinks. Re-purger régulièrement toute cette chienlit. 6. Sous KdE_1, les "&" figurant dans les champs "name" des icônes permettent de définir des "hot-keys" et de constituer un "menu démarrer" à la façon winx.  C’était trop beau : cette possibilité a été sabotée dans la version KdE_2/KdE_3. Comment faire comprendre quelque chose à ces gens-là ?

3.3.1 Une expérimentation

Name est ce qui s’affiche dans les menus Terminal - Super User Mode on_voit: pictogramme rouge dans barre_taches et liste_fenetres Type=Application Name=Terminal - Super User Mode Exec=konsole –profile "Root Shell" Icon=utilities-terminal_su Categories=Qt;KDE;System;TerminalEmulator; XTerm on_voit: pictogramme xterm dans barre_taches et liste_fenetres Type=Application Name=XTerm Exec=xterm Icon=terminal Categories=System;TerminalEmulator; Termi-nal on_voit: le pictogramme utile dépend en fait de Type=Application Name=Termi-nal Exec=konsole Icon=utilities-terminal Categories=Qt;KDE;System;TerminalEmulator; KWr-ite on voit: le pictogramme dans barre_taches et liste_fenetres Type=Application Name=KWr-ite Exec=kwrite %i %U MimeType=text/plain; Icon=im-icq Categories=Qt;KDE;Utility;TextEditor;

3.3.2 Pour mémoire : fichiers *.directory

1. Les icônes de répertoire ont un format spécial. L’encadré Alg. 11 montre un tel fichier .directory. La ligne SortOrder permet de modifier l’ordre d’apparition des icônes. Être attentif à bien donner le nom exact des fichiers (et pas les noms de fantaisie).

Incl. 11 Fichiers .directory # KDE Config File [Desktop Entry] [KDE Desktop Entry] BgImage= Icon=package_editors Icon=applications_package.xpm MiniIcon=applications_package.xpm Name=Editors Name=&Editeurs SortOrder=khexedit.desktop,... SortOrder=khexedit.kdelnk,... KdE_2/KdE_3 : .directory KdE_1 : .directory

38 3 ICÔNES, ETC. 3.4 Arborescences

3.4 Arborescences

desktop-directories/filename Name= suse-education.directory Education-1 suse-education-mathematics.directory Mathematics-1 suse-science.directory S_cience suse-science-mathematics.directory Mathematics-3 suse-science-geography.directory Geography-3

together with

applications/filename Name= Categories= scilab.desktop Education;Science;Math; maple18r.desktop Science;Math; sage.desktop S_age Science;Math; geogebra.desktop Science;Math; wolfram-mathematica11.desktop Ma_thematica Science;Math; marble.desktop Qt;KDE;kill-Education;Geoscience;Geography;Science;

leads to SuSE . Education-1 . Mathematics-1 . Scilab SuSE . Science . Mathematics-3 . Scilab (+ Scipad + Xcos) SuSE . Science . Mathematics-3 . Geogebra SuSE . Science . Mathematics-3 . Maple 18r SuSE . Science . Mathematics-3 . Sage ... et [pomme] scma lance le programme (sous icewm).

3.5 Lanceurs 3.5.1 Pourquoi icewm plutôt que plasma ? Cette section décrit le frontal fournissant l’abstraction "barre_des_tâches/menu démarrer". 1. Il y a eu KdE_1, puis KdE_2/KdE_3, puis KdE_3.5 de plus en plus Window$-like, de plus en plus obèse, de plus en plus clickodrome et de moins en moins paramétrisable. 2. Enfin, avec SuSE − 42.1, il y a eu le fameux tandem KdE_4-plasma, générant des plantages répétitifs:  Absence totale de réaction sur maverick (nécessitant un shutdown à travers une connexion ssh).  kquitapp5 plasmashell # ; kstart5 plasmashell & Disparition de la barre de contrôle après chaque extinction de l’écran sur madiran.  incantation pour secourir un plasma perdu: kquitapp5 plasmashell ; kstart5 plasmashell & 3. Ne pas pouvoir reprendre le contrôle sans tout couper n’étant pas acceptable, il a été procédé à une reprise de l’ensemble de ce chapitre, dans le but d’abandonner KdE_4 au profit de icewm. 4. Le choix du gestionnaire icewm est proposé "spontannément" par le login graphique. Par contre, le configurateur, qui s’appelle iceWMCP,. doit être spécialement installé. 5. Dans tous les cas, le barnum se fonde sur les répertoires contenant les mimetypes et filepifs.

3.5.2 Lanceur icewm

Se règle par iceWM. Fichier ~/.icewm/preferences Width_menu maxmenuwidth=0 (laisser le système décider) Horloge Il faut forcer 24h (le reste vient de lang ?) Clavier Voir supra, au début de la section. Menu ~/.icewm/menu 1. On remarquera que menuprog n’est pas prog...

39 3.5 Lanceurs 3 ICÔNES, ETC.

2. Utiliser un pictogramme dans le menu n’est pas en forcer l’usage par le programme référencé (cf kwrite) 3. Certains pictogrammes sont trouvés par leur nom, d’autres nécessitent un chemin complet (cela devrait pouvoir se régler par un bon réglage des ’thèmes’). Ce fichier contient:

prog xterm xterm xterm prog "Claws-mail" "/usr/share/icons/hicolor/48x48/apps/claws-mail" claws-mail prog Konsole /usr/share/icons/hicolor/48x48/apps/im-gizmo konsole prog Files /usr/share/icons/oxygen/64x64/places/folder-violet konqueror prog Gimp /usr/share/icons/hicolor/48x48/apps/gimp gimp prog Mozilla /usr/share/icons/hicolor/48x48/apps/firefox firefox prog "k_Write" "/usr/share/icons/hicolor/48x48/apps/im-icq" kwrite –icon im-icq menuprog SUSE folder xdg_menu –format icewm

3.5.3 Lanceur plasma (KdE_4)

Depuis SuSE − 11.3, et KdE_4 (version 4.4.4, réponse à kde4-config –kde-version), le lanceur est "plasma". Le tandem "barre_des_tâches/menu démarrer" est donc un "widget", c’est à dire un container, qui peut être modifié... ou détruit en un clic. En service normal, l’option "lock widgets" doit être activée (clic droit dans la winlist). Les objets suivants sont bien utiles. Application Launcher Menu. Réglage: menu standard (clic droit sur l’icone verte) Menu Rapide Firefox, Mail, Config, Konqueror, Konsole, Unison, LYX, Root_konsole, Logout, Res- tart, Stop, Next_User Taskbar Menu, Konsole (noire/rouge), Pager, System_Tray et c’est tout. Pas d’autres icônes. Pager (les bureaux) réglage : numéro seul. Winlist. Régler les options par clic droit dans une partie vide (depuis un bureau sans trop de tâches). Highlight windows= no, grouping=no ; only from current desktop. Dans systemsettings . appearance . desktop effects: enable. Décocher tout le reste. Advanced: always keep. Sans quoi les icones des fenetres minimisées sont noires. System Tray Horloge Les options utiles sont dans SystemSettings . Behavior . Locale . Date_and_time

3.5.4 Pour mémoire: lanceur kicker (KdE_2/KdE_3)

1. La configuration du "Menu Démarrer" se trouve dans ~/.kdeX/share/config/kickerrc. Ce fichier est lu au démarrage du client graphique, puis écrasé au fur et à mesure. Modifier ce fichier pendant que kicker tourne est donc inopérant. 2. Le batch qsk_sync_kicker détecte le pid de kicker, tue le process, attend ce qu’il faut pour qu’il décède réellement, puis lance une autre instance de kicker. 3. Pour contrôler les icônes du "top 10", il faut agir sur la ligne RecentAppsStat du fichier de configuration. Désormais (SuSE − 10.2), cette liste est triée et le batch qzk_kicker_gere n’est plus utile. Relancer kicker après toute modification. 4. Le répertoire /opt/kdeX/share/applink/ est le répertoire principal du "Menu Démarrer" affiché par kicker, tandis que /etc/opt/kdeX/share/applink/ fournit le sous répertoire SuSE de ce même "Menu Démarrer". Les liens en double (un dans KdE et l’autre dans SuSE) sont gênants : supprimer les doublons.

 YaST repositionne systématiquement un certain nombre d’icônes dans le menu /etc/opt/... et ces icônes viennent en double dans les menus contextuels. Faire un batch pour les supprimer (qzq_anti_suse fait cela).  Pour la SuSE − 7.3, il faut réécrire les mimelink de /etc/opt/... parce qu’ils affichent unifor- mément "Mime Type" comme type de fichier (ce qui s’affiche est le commentaire).

40 4 RÉGLAGES DU BUREAU 3.6 Synchronisation

3.5.5 Pour mémoire : lanceur kpanel (KdE_1)

1. Les changements dans l’arborescence des icônes doivent être validés en relançant kpanel. Le lancement effectif des applications depuis les icônes est sous le contrôle de kfm. 2. le pictogramme K affiche le contenu de /opt/kde/share/applnk. Les noms utilisés viennent de la ligne Name[C] des fichiers *.kdelnk. L’ordre d’apparition est celui des noms des fichiers des noms des fichiers *.kdelnk eux mêmes, mais il peut être modifié par la ligne SortOrder= du fichier .directory. Par conséquent, les changements de noms dûs aux changements de langue ne sont pas répercutés dans le tri des items des menus, et le résultat peut sembler en désordre.  D’où vient le commentaire de "K" ? En tout cas, pas du fichier /opt/kde/share/applnk.directory 3. On peut obtenir un "menu démarrer" à la sauce winx. Il suffit de positionner un "&" dans le nom de fantaisie. La déclaration de [pomme]comme "custom key" du lancement du "pop-up system menu" est à faire avec kcontrol (section keys) ou bien directement avec kcmkeys. 4. Les icônes SuSE, Utils dans la barre "kpanel" reprennent les sous-répertoires ad hoc. 5. La barre des icônes standard est décrite par $ipse/.kde/share/config/kpanelrc.  grosse bagarre pour l’ordre et l’espacement des apparitions. En particulier, "system" (= menu démarrer) doit être vers le début, sinon l’énumérateur de bureaux se place n’importe comment.  il est donc intéressant d’avoir une copie de secours de kpanelrc ...

3.5.6 Templates 1. Un item "new" figure dans le menu contextuel d’un répertoire. Cet item reprend le répertoire /~/Desktop/Templates/. 2. Par conséquent, y recopier les icônes des exécutables favoris.  Comment créer un fichier et non un *.kdelnk ?

3.6 Synchronisation 1. Il existe une tâche de fond qui resynchronise tout le barnum lorsqu’un élément a été modifié 2. Assez souvent, root voit les modifications en temps réel. 3. Assez souvent, l’utilisateur ordinaire doit accélérer les choses en exécutant explicitement kbuildsycoca4 (SuSE − 11.3, KdE_4) qui a pris la place de kbuildsycoca (SuSE − 10.2, KdE_2/KdE_3). 4. Dans les pire cas, un logout/login peut s’avérer utile.

4 Réglages du Bureau

KdE_4 prétendait décider à ma place. Résultat: on passe à autre chose (icewm). Où est le répertoire des configurations locales de KdE_4 ? Réponse: kde4-config –localprefix.

4.1 HelpCenter Le programme khelpcenter est intéressant. Son affichage est multi-fenêtre. Lorsque la partie gauche a disparu (contenant le moteur de recherche), il faut insister avec la souris pour tirer la barre interne vers la droite. Plus sur le sujet dans Installx/Configuration/Documentation Placer son icône dans les icônes du panel.

4.2 Claviers et polices Ne pas oublier de consulter également Applyx/Lyx/Clavier. Ce qui suit est valable pour SuSE −9.3 et SuSE − 10.2. Un dessin du clavier, anciennement situé en /var/X11R6/sax/pixmaps/104key.xpm est donné Figure 3. Sous SuSE − 11.3, on peut avoir NumLock par défaut lors du login graphique par systemsettings computer_admin/keyboard_mouse/keyboard/NumLock_on.

41 4.2 Claviers et polices 4 RÉGLAGES DU BUREAU

Figure 3: Modèle de clavier

4.2.1 Collecter les informations 1. Les directives de configuration du clavier se trouvent éparpillées un peu partout. Le batch qyc_docs_clavier collecte tout cela. 2. Les consoles [Ctr][Alt][n] avec n < 7 dépendent du fichier /etc/defkeymap.name. Celui-ci contient actuellement /usr/share/kbd/keymaps/i386/azerty/fr-latin1.map.gz. On obtient un clavier "primitif", à la façon des machines à écrire. 3. Les terminaux X dépendent de /etc/X11/xorg.conf. Actuellement : Driver "kbd" ; Identifier "Keyboard[0]" ; Option "Protocol"="Standard", "XkbLayout"="fr", "XkbModel"="pc102", "XkbRules"= "xfree86". Ces options adressent divers fichiers cryptiques situés en /usr/share/X11/.

4.2.2 LANG et LC_xx 1. Une fois déclaré la configuration physique du clavier (qwerty/azerty, place des deadkeys), il reste à régler le codage des caractères et à "internationaliser" quelques comportements. C’est l’objet des variables d’environnement. 2. La base de tout est le fichier /etc/sysconfig/language. Il contient : AUTO_DETECT_UTF8 ="no" RC_LANG ="en_US". RC_LC_COLLATE ="POSIX". Contrôle les tris : plus rien ne fonctionne lorsque ce para- mètre n’a pas la bonne valeur. RC_LC_CTYPE ="en_US.ISO-8859-15". Permet l’affichage du caractère € dans une kon- sole. ROOT_USES_LANG ="ctype" 3. Il pourrait contenir aussi : INPUT_METHOD ="" RC_LC_ALL ="". Écrase tous les autres, s’il est renseigné. RC_LC_MESSAGES ="" . Contrôle les messages des programmes supportant i18n (=in- ternationalization). RC_LC_MONETARY ="" RC_LC_NUMERIC ="". Compare 1,234.56 vs. 1.234,56 RC_LC_PAPER ="" RC_LC_TIME ="". Compare 06/09/1999 vs. 09.06.1999 4. Tout cela fait référence aux fichiers /usr/lib/locale/. En modifiant /usr/lib/locale/fr_FR. utf8/LC_TIME, on peut obtenir des majuscules sur les noms abrégés des jours par les commandes :

42 4 RÉGLAGES DU BUREAU 4.2 Claviers et polices

export LC_TIME=fr_FR.utf8 ; date

5. Quand tout cela fonctionne, les variables shell LANG, LC_CTYPE et LC_COLLATE sont initialisées adéquatement.

4.2.3 Association des multi-touches aux caractères

1. Une touche clavier est associée à sur plusieurs possibilités, dépendant des modificateurs clavier. La façon dont ces modificateurs agissent sur les touches adéquates s’obtient par xmodmap -pm (cf Table 7). Super_L, Super_R désignent les touches "Microsoft", tandis que ISO_Level3_Shift désigne la touche [AltGr].

# xev 0 1 1 shift Shift_L (0x32) Shift_R (0x3e) 2 2 lock Caps_Lock (0x42) 3 4 control Control_L (0x25) Control_R (0x6d) 4 8 mod1 Alt_L (0x40) Alt_L (0x7d) Meta_L (0x9c) 5 10 num Num_Lock (0x4d) 6 20 mod3 Scroll_Lock (0x4e) 7 40 super Super_L (0x73) Super_R (0x74) Super_L (0x7f) Hyper_L (0x80) 8 80 iso MS (0x5d) IL3S (0x71) IL3S (0x7c) MS= Mode_switch, IL3S= ISO_Level3_Shift

Table 7: Modificateurs clavier

2. Magouille Mathematica. Ce logiciel utilise par défaut mod1 et mod2 pour sa cuisine interne. Or mod2, c’est mod2. Contournement : utiliser mod3 comme alternative, et Scroll_Lock comme implémentation de mod3. En effet, personne d’autre ne les utilise. 3. Gestion des cécédillecirconflexes. Un certain nombre de combinaisons clavier permettent d’en- gendrer tout un tas de caractères ahurissants. Ainsi æ peut être engendré par AltGr-a, et Æ par AltGr-S-A (description à la LYX). Ces combinaisons sont données par la Table 8.

2 & é " ’ ( - è _ ç à ) 1 1 3 5 7 TM ¡ ~ 8 # £ { $ [ 8 | 8 ‘ 8 \ ^ ± @ ° ]¿ a z e r t y u i o p ^ $ æ Æ « < €¢ ¶® ?? ←¥ ↓ ↑ → 1 ø Ø þ Þ ä å ¤ q s d f g h j k l m ù * 1 3 @ Ω ß § ð Ð ð ª ¿ 2 ±¡ jJ ¢& £ µº â à < w x c v b n , ; : \ = |¦ ?? » > ¢ © ? ‘a ?’ n N á" a ? × ? ÷ \! } ą

Table 8: Table des codes AltGr et AltGr-S.

Remarque 1. Certains caractères sont alors rendus par ? sur une console ordinaire. Par contre, on les obtient à la fois sous LYX et sous kwrite (utf-8). Remarque 2. Un certain nombre de ces combinaisons (brokenbar, cent, euro, yen) provoquent l’er- reur latex "unavailable in encoding T1". Penser à placer une commande \usepackage{textcomp} dans le préambule (mieux: utiliser utf-8, SuSE − 42.1). 4. Caveat : les codes claviers à utiliser sont ceux fournis par xev et xmodmap et pas ceux fournis par showkey. Il est commode de placer un appel à ce script dans /etc/profile.local xmodmap -e "keycode 94 = less greater" xmodmap -e "keycode 51 = asterisk mu" xmodmap -e "keycode 61 = backslash exclam" xmodmap -e "keycode 49 = twosuperior section" xmodmap -e "add mod3 = Scroll_Lock"

43 4.2 Claviers et polices 4 RÉGLAGES DU BUREAU

4.2.4 Pour mémoire (SuSE − 8.1)

1. Affichage €. Ce caractère accepte de s’afficher dans les applications KDE, mais pas dans la console ni dans LYX (il faut utiliser une commande TEX). La Table 9 décrit ce comportement dans tous ses détails.

# ¤ €, défaut konsole ¤ ? kde ¤ s’affiche, mais devient ? à l’enregistrement lyx ¤ fonction inconnue

Table 9: euro et currency, en différents endroits

2. Utiliser YaST2/system/edit_sysconfig pour modifier de la façon suivante : RC_LANG="en_US.ISO-8859-15" RC_LC_COLLATE="POSIX" RC_LC_MONETARY="de_DE@euro" Après quoi, la touche [A − e] engendre le caractère ¤(currency), et ce caractère s’affiche par €.  Séquence [C − S − T ]. z Cette séquence était utilisée par la gestion clavier SuSE − 7.3 pour engendrer des ligatures. Ainsi C-S-T a e donnait æ. Et par conséquent, C-S-T n’était plus utilisable comme raccourci dans klyx (prévu pour être actualise PostScript, par analogie avec C-t et le couple C-d, C-S-D pour le dvi). z La gestion clavier SuSE − 8.1 s’en sert pour permuter les deux dernières lettres du buffer clavier (d’une console). z Pour SuSE − 11.3, cela engendre un split (top) de la console... z Pour SuSE − 42.1, cela donne un nouvel onglet dans konsole, et un split dans LYX ou kon- queror.  Ancien problème avec la séquence [M − m m] dans la gestion de clavier klyx (rappel M=meta=Alt) z on a l’impression que Alt- accepte un caractère puis bloque le clavier. Il faut un clic de la souris pour que le clavier redémarre (ou bien une sortie-entrée de la souris en mode "focus follows mouse" — cela se produit lorsque KdeControlCenter/Desktop/Style/ est positionné en Widgets= win95 et Bar= Mac_Os. On peut donc contourner cela en désactivant l’une des deux op- tions.

Une discussion plus approfondie sur les raccourcis claviers est placée dans Applyx/LYX.

4.2.5 Pour mémoire : claviers SaX texte le nom du clavier est dans /etc/rc.config. graphique langue "fr" et forme jp106 (définis /etc/XF86Config). Ce "fr" n’est pas le nom du key- board.map (test : on échange A et Z, sans échanger a et z dans fr-latin.map). Avec SuSE − 6.3, la touche < n’est pas reconnue (majuscules et minuscules). Avec SuSE − 7.0, ce problème est réglé, mais il reste la touche µ qui est traduite par ∗ (majuscules et minuscules). Réglé également avec SuSE − 7.2.  Le clavier jp106 n’est actif que dans la session du serveur graphique pendant lequel SaX a été lancé. Au login suivant, le clavier 104 refait surface (= description symptomatique). Si l’on relance SaX, on retrouve le clavier 106, y compris dans les fenêtres déjà lancées (klyx, konsole, kedit). Ceci a lieu même lorsque le SaX réutilise la configuration actuelle, sans aucune sauvegarde ou modification de celle-ci.  Un contournement possible : AltGr-S-Z et AltGr-S-X. Ou bien, relancer SaX à chaque fois...

4.2.6 Problème de polices (SuSE − 7.2)

Pour la seule version SuSE −7.2, est apparue une "nouvelle" police de caractères : clearlyu... qui se comporte à sa façon. En particulier, grands interlignes. Remplacer tout cela comme indiqué Table 10.

44 4 RÉGLAGES DU BUREAU 4.3 Profilage

nom défaut SuSE − 7.2 correction défaut SuSE − 8.1 general clearlyu 11 helvetica 12 nimbus sans I 11 fixed clearlyu 9 misc-fixed 12 courrier 11 desktop icon clearlyu 11 helvetica 12 file manager clearlyu 11 adobe-courier 12 toolbar clearlyu 11 adobe 12 nimbus sans I 10 menu clearlyu 11 adobe 12 nimbus sans I 11 titlebar clearlyu 11 adobe 14 Luxi Sans Xft 11 taskbar clearlyu 10 helvetica 10 nimbus sans I 11

Table 10: Comment gérer clearlyu

 Cette police clearlyu persiste dans les menus, et en particulier dans le pop-up menu. Cause : erreur de syntaxe dans la section [Locale] du fichier $ipse/kde/share/config/kdeglobals. Mettre charset=iso8859-1 à la place de charset=iso#  D’autant plus débile que la souris posée sur "menu démarrer" se trouve posée sur le lock screen qui apparaît alors, et tout se bloque.

4.3 Profilage Lors d’un login, un ensemble de variables d’environnement sont positionnées. Cela se règle dans /etc/profile. Une préparation a lieu, puis les modules placés dans /etc/profile.d/ sont appelés, puis /etc/profile.local est appelé. Les règles ne sont pas simples: il y a les logins en direct, les logins par ssh et les pas-logins. D’où une variable PROFILEREAD. Il y a aussi /etc/csh.login.

4.3.1 Où placer les modifications ?

1. Ne pas oublier : /etc/profile est surchargé lors des mises à jour. Il faut placer les modifications "worldwide" dans /etc/profile.local. 2. Il existait un /etc/profile.dos qui peut être activé dans le fichier principal. Ne pas le faire. 3. Il existait un /etc/SUSEconfig/profile qui est activé dans le fichier principal. Il positionne surtout les langues. set RC_LANG="en" ; RC_LC_ALL="en" ; RC_LC_COLLATE="POSIX" ; RC_LC_TIME="fr" unset LANG, LC_ALL, LC_MESSAGES, LC_CTYPE, LC_COLLATE, LC_TIME, LC_NUMERIC, LC_MONETARY 4. C’est le bon endroit pour gérer la variable HOST (cf Subsection 6.1). Vérifier dans une console [M − C − j] et dans une konsole graphique. A faire "assez vite", cela est utilisé par les scripts qyx.

4.3.2 /etc/profile.local

1. Tester l’existence des exportations. Ainsi, corriger (pour ne pas avoir un povray pour rien) : if test -d /usr/lib/povray then POVRAYOPT=-l/usr/lib/povray/include else POVRAYOPT= fi export POVRAYOPT 2. Changer le nom de l’imprimante par défaut 3. Placer le patch du clavier qc_clavier (et dans ce patch, tester si l’on est effectivement en mode graphique). 4. Les alias (obtenir la liste des alias actifs par alias -p) figurant dans profile sont effectifs dans les consoles dos, mais pas dans les fenêtres graphiques (vérifier pour SuSE − 13.1).  où les placer ?

45 4.4 Réglages auto (batch mk_install) 4 RÉGLAGES DU BUREAU

5. Configure le PATH d’un utilisateur et celui de root. Pour ce qui est du PATH de suroot, se reporter à Subsection 1.1.

4.3.3 Pour mémoire: une ancienne erreur

 SuSE − 6.3 : les singes fous ont encore frappé. Le fichier /etc/profile comportait une erreur ligne 38, caractère 56, où il aurait fallu écrire ":" à la place de "/". Cette "légère erreur" induisait une mauvaise exportation du PATH de root... qui ne pouvait plus exécuter ses propres scripts !

4.4 Réglages auto (batch mk_install)

1. Le batch /root/bin/qis_install_save crée un répertoire /root/Install.stamp et sélectionne un certain nombre de fichiers, arborescence comprise. Sont créés les fichiers .liste_dir, contenant la liste des répertoires visés, et .liste_fich, contenant la liste des fichiers archivés. Puis les fichiers sont recopiés en reproduisant l’arborescence. 2. Selon que l’on utilise "cp" ou "cp -p" à la fin de cette commande, on obtient une version agressive ou non de la chose. Dans le premier cas, les fichiers sont datés d’aujourd’hui, et donc plus récents que tout autre. Dans le second, ils ont leur date d’origine. 3. Pour la restitution, on utilise /root/bin/qis_install_apply (cf. Alg. 12), après avoir renommé /root/Install l’archive à utiliser. Les principes sont (a) ne pas écraser un récent par un plus ancien ; (b) de toute façon, laisser une copie datée des fichiers écrasés. bin /root/bin/* $ipse/bin/* $ipse/docs/nullix/*.LYX ispell ln -s /usr/lib/ispell/francais.aff [~]french.aff ln -s [~]francais.hash [~]french.hash kde { /root/ $ipse/ } { .profile .bashrc .kde/share/apps/kfm/bookmarks/* .kde/share/config/kpanelrc } klyx /opt/kde/share/apps/klyx/ { lyxrc bind/* } l2h /usr/lib/latex2html/ { latex2html latex2html.config zalgo_patch } liens /opt/kde/share/mimelnk/application/ { x-cover x-dvi x-shellscript x-tar } .kdelnk /opt/kde/share/mimelnk/text/ { html x-dir x-lyx } .kdelnk /opt/kde/share/applnk/ { Éditeurs Graphics Jeux Media Network Réseau System } /* /opt/kde/share/icons { Anetscape4 Bomb Bomb2 Bomb3 CheckMarkMonitor0 FileApp draw2_spec kover xdvi } login /home/space.bmp /home/sports.jpeg /home/apache-a.xpm profile /etc/profile /etc/profile.local samba /etc/httpd/httpd.conf/ /etc/smb.conf system /etc/printcap.propose /etc/fstab .propose/etc/XF86Config.propose tex /usr/share/texmf/tex/latex/algorith/* /usr/share/texmf/tex/latex/maple /usr/share/texmf/tex/latex/misc/float.sty  il reste à attribuer les attributs ... et les appropriations. Recopie un certain nombre de fichiers depuis les archives /root/Install. Des tests sont prévus pour ne pas écraser un récent par un plus ancien. Cf Subsection 4.8.4 pour le montage direct de zip ou de disques durs.

4.5 Imprimer 1. Cette section ne cesse de changer, car les démons, les drivers... et les imprimantes changent tout le temps. 2. Les paragraphes "pman" et "recto-verso sur imprimante recto" sont désormais dans "Applyx", section PostScript.

46 4 RÉGLAGES DU BUREAU 4.5 Imprimer

Incl. 12 qia_install_apply action="cp -p" base=/root/Install/ stamp=‘date +%y%m%d%H%M‘ cd $base for rep in ‘cat .liste_dir‘ ; do if test ! -d /$rep then mkdir -p /$rep ; echo "--> creating /$rep" fi done for qui in ‘cat .liste_fich‘ ; do if test -f /$qui then if test /$qui -ot $base$qui then $action /$qui /$qui.$stamp $action $base$qui /$qui ; echo "--> /$qui" fi else if test -f $base$qui then $action $base$qui /$qui ; echo "--> /$qui" fi fi done

4.5.1 Démon cups (depuis SuSE − 8.1) 1. Utiliser YaST2 pour gérer les imprimantes. Le spooler cups est utilisé d’office. 2. Se limiter aux imprimantes ayant leur propre puissance de calcul, et pouvant donc être déclarées direct tcp port printing (network printer). Les autres appareils dépendent lourdement de l’ordinateur auquel ils sont rattachés... et ne sont généralement pas pilotables depuis une machine unix. 3. Lorsque l’adresse de l’imprimante est fixée par dhcp, il faut que le dhcpd fonctionne... 4. Le point clef est de trouver le bon driver... Faire des essais. Penser à régler Filter, en particulier le format A4, la résolution (300 dpi), le recto-verso (long). 5. Le démon cupsd gère un serveur web http://localhost:631/. 6. Le dialogue d’impression de KdE (kprinter ?) mémorise les réglages recto-verso... et s’en souvient parfois de façon imprévue. Être attentif à la différence entre "ok" et "save-close".

4.5.2 Imprimante HP Officejet Pro 8600 N911a (mcolor) 1. Imprimante jet d’encre couleur, nommée "Officejet Pro 8600 N911a" sur son propre serveur web. 2. Driver: search string "hp 8600 cups". Yast propose des drivers "manufacturer" ainsi qu’un driver "hpcups 3.13.10". On choisit celui-ci. 3. Format du papier: pour faire du recto/verso il faut une "prise en pince". Il y a donc deux formats A4: "A4 special RV" qui prend une certaine marge et "A4" (le vrai) qui prend 3.3+3.2 mm de marge sur le 210mm et 3.3+3.4 sur le 297mm.

4.5.3 Imprimante Samsung ML-2855ND (mountain) 1. Le toner pour cette imprimante ne se trouve pas partout. La cartouche livrée avec la machine est une cartouche réduite (2500 feuilles). Les cartouches normales 2092L font le double. 2. Attribuer une adresse ip par le mécanisme dhcp. Le serveur web de l’imprimante est alors être visible. Sur madras, seul Firefox permet de tout visualiser. Ailleurs, cela est visible de konqueror. Supplies status donne l’état du toner, Billing status donne le nombre de pages imprimées. 3. Pas encore de driver standard dans la SuSE−11.0. Fournie avec tout un barnum "unified samsung driver". A éviter absolument (cela engendre un tas de trucs inutiles).

47 4.5 Imprimer 4 RÉGLAGES DU BUREAU

4. Pour SuSE − 11.0, utiliser le frontal cups http://localhost:631/ pour déclarer l’imprimante. Administration . Add Printer . Name=xxx . device iip, puis iip://address_ip . provide a ppd file. Un point c’est tout. Autre façon de dire la même chose : YaST2 n’est plus l’outil de choix pour ce genre d’installation. 5. Les *.ppd des imprimantes installées se trouvent dans /etc/cups/ppd. Donc, au pire installer une fois le barnum "unified driver", puis virer tout cela une fois le fichier ppd copié en lieu sur. 6. Driver ML-28551ND dans la SuSE − 11.3. Mais le driver décrit précédemment va aussi bien (SuSE − 13.1). 7. Par défaut, le driver pratique "Nearest size and scale". Cela est bien utile... sauf quand on se demande ce que cela donnerait sur un vrai format "letter".

4.5.4 Pour mémoire: imprimante HP845C (depuis SuSE − 7.3) Cette imprimante usb s’installe facilement sous cups. Le rendu des couleurs progresse d’année en année...

4.5.5 Pour mémoire: imprimante Samsung ML-7050N (mexico) Imprimante laser réseau, 16 pages minute, recto-verso. Mêmes fonctionnalités que la HP5M... et un prix moitié. Beaucoup de fonctionnalités sont présentes sans être documentées. Partir du principe que tout ce qui marche pour une HP continue à exister, d’une façon ou d’une autre. 1. Imprimante (hard). Enlever les adhésifs. Installer la cartouche d’encre (pas d’adhésifs à enlever) en la glissant dans son logement. Mettre du papier (le bac est parfois dur à ouvrir : tirer vers le bas la tige métallique horizontale visible par en-dessous). Lancer les tests : hors-ligne, menu=test, rubrique=auto-test, enter. Positionner le menu imprimante sur recto-verso-long. 2. Imprimante (réseau). Configurer ip (statique : 192.168.50.250/24, pas de gw). Décocher ipx, apple. On donne un nom : mexico. Tester cela par hors-ligne, menu=réseau, rubrique=imp.net.cfg (i.e. -1), enter. 3. L’imprimante génère un serveur web, permettant une certaine mise à jour à distance. Ce n’est pas dans la doc. Ce serveur peut être protégé par un mot de passe. Il existe un protocole pour récupérer un mot de passe oublié. 4. winxx. Placer les deux disques de logiciels dans un boîtier rigide. Installer SyncThru (le plus souvent sans problème, mais ne s’est pas installé sur malibu). On obtient les mêmes fonctionna- lités qu’avec JetAdmin. Installer un raccourci-clavier [pomme − R − K]. Développer les colonnes (View/Détails/Columns). Utiliser SyncThru pour installer un port SamDirect. Puis utiliser winxx pour " installer une nouvelle imprimante" .  L’installation d’un port SamDirect détruit les ports HpDirect, qu’il faut recréer avec JetAd- min. On ne peut être plus débile....  Il y a effectivement des drivers PostScript, mais ils sont cachés dans /fr/ps/win95_98 (alors que les drivers pcl sont bien visibles). 5. lpd (SuSE − 7.2). L’imprimante n’est pas détectée par YaST2 . Ajouter mexico|remote printer on 192.168.50.250|Mexico:\ :sd=/var/spool/lpd/mexico:\ :rm=215.56.50.250:\ :rp=Sam7050N:\ :bk:sh:mx#0: dans /etc/printcap. A la différence d’une HP, le champ rp est nécessaire et ce champ correspond au "PrintServerName" positionné par SyncThru. Resynchroniser lpd. Envoyer un fichier ps (par exemple à l’aide de enscript). 6. cups (SuSE − 7.3). Driver fourni : Samsung ML-7050, Foomatic+ljet4. (ou bien lj5gray). Après installation, certains programmes (comme kwrite) disposent alors d’un menu de configuration de l’imprimante (nombre, recto-verso, etc) tout à fait comparable à winxx. 7. cups (SuSE − 8.1). Nombreux drivers fournis, dont aucun ne fonctionne vraiment : pcl4, pcl5, ps2 et lj5mono. Après plusieurs tentatives, lj5mono a été choisi. Autrement dit, l’imprimante est déclarée mono pour l’ordinateur, tandis que l’imprimante est configurée duplex long. On peut ensuite régler le nombre de pages par feuilles dans le menu kprinter.

48 4 RÉGLAGES DU BUREAU 4.5 Imprimer

 ASSEZ SOUVENT, l’impression débute par une page blanche qui décale les recto-verso. Remarque : lorsque le papier sort du bac inférieur, la suite 1-2, 3-4 s’imprime 2-1, 4-3 de façon à respecter l’ordre des pages.  De temps en temps, bourrage à la fin d’une impression recto-verso. Tout se passe comme si l’imprimante ne savait plus qu’une feuille est en cours de sortie du recto verso et envoyait (trop tôt) la feuille suivante. Ce comportement est apparu avec le driver SuSE − 8.1 (et est disparu avec).  Les fichiers landscape ne s’impriment pas en landscape... (landscape ne veut pas dire que l’imprimante travaille en 29.7 mm de large !)  (SuSE − 8.1) Par défaut, les previews par kprinter (et en général kghostscript) ne fonc- tionnent pas. Il faut indiquer gs comme interpréteur par défaut (Settings/Configure/ Ghostscript/interpreter). 8. cups (SuSE − 10.2). Le driver Samsung ML-7300 Foomatic/Postscript (recommended) fonc- tionne assez correctement.  De temps à autre, des fichiers *.pdf téléchargés font comme s’ils allaient s’imprimer, puis tout est annulé.

4.5.6 Pour mémoire : le démon lpd (jusqu’à la SuSE − 7.3)

Bilan général : de SuSE − 5.4 à SuSE − 7.3, cela ne fonctionne pas très bien. L’imprimante réseau est bien moins réactive que sous winxx et que, de temps à autre, la queue s’engorge. Et cela persiste malgré un dimensionnement hénaurme (pour l’époque) de la tuyauterie : débit réseau 100 Mb/s, 50 Mo de mémoire sur l’imprimante. 1. Une première version, lpr_old, se règle par /etc/printcap. Les commentaires des versions suivantes ne sont pas rassurants. 2. Avec la SuSE−7.0, essai de PLP_lpd-daemon_version_4.1.2 (package n). Les fichiers de réglage sont /etc/printcap, /etc/plp.conf et /etc/printer_perms. Redémarrer le démon à l’aide de /sbin/init.d/lpd : stop dans un premier temps, puis start. Lorsque l’on oublie de redémarrer le démon de cette façon, on constate qu’il meurt à chaque utilisation. 3. Avec la SuSE − 7.2, essai de LPRng, version 3.7.4. La politique d’autorisations est devenue plus restrictive : les fichiers du spooler sont attribués à root:root, et ne sont pas accessibles directement. Par contre, lpq donne de meilleures informations sur la file d’attente. Les fichiers de commande ont déménagé en /etc/init.d/lpd. Modifier qsp en conséquence. 4. Extract from "The Linux Printing HOWTO "

The printing system on SuSE Linux is based on apsfilter, with some enhancements; SuSE’s apsfilter will recognize all common file formats (including HTML, if html2ps is installed). There are two ways to setup printers on SuSE systems: YaST will let you configure "PostScript", "DeskJet" and "Other printers", supported by Ghostscript drivers; it’s also possible to setup HP’s GDI printers (DeskJet 710/720, 820, 1000, via the "ppa" package; at this moment b/w only). YaST will provide /etc/printcap entries for every printer ("raw", "ascii", "auto" and "color", if the printer to configure is a color printer). YaST will create spool directories and it will arrange apsfilterrc files, where you’re able to fine tune some settings (Ghostscript preloads, paper size, paper orientation, resolution, printer escape sequences, etc.). With YaST it’s also possible to setup network printers (TCP/IP, Samba, or Novell Netware Printer). In addition there’s the regular SETUP program from the original apsfilter package (with some enhancements); run ’lprsetup’ to invoke this configuration script. Once you get accustomed to its GUI, you’ll be able to configure quickly local and network printers (with local filtering via the "bypass" feature - that’s quite handy). The SuSE installation manual explains both of these setup procedures. Wolf Rogner reported some difficulties with SuSE. Apparently the following bugs may bite:  Apsfilter’s regular SETUP script is a bit broken, as are the KDE setup tools. Use YaST.  For networked printers that need to be fed from Ghostscript, you’ll need to first uncom- ment the line REMOTE_PRINTER="remote" in /etc/apsfilterrc. Then run YaST to configure the printer and, under Network configurations, set up a remote printer queue.

49 4.5 Imprimer 4 RÉGLAGES DU BUREAU

 YaST’s setup doesn’t allow color laser printers, so configure a mono printer and then change mono to color everywhere in the printcap entry. You may have to rename the spool directory, too.

 Plantages assez fréquent de lpd, en particulier lorsque que le début de l’impression arrive sur paper-out  Plaisanterie enscript : de temps à autre, la transmission se bloque (on voit l’imprimante demander "letter", et annuler le tout). Cet état de fait disparaît avec un restart général (arrêt ordinateur, imprimante et réseau)

4.5.7 Pour mémoire : imprimante HP5M (printcap, SuSE − 7.2)

1. Description dans /etc/printcap : une connexion en réseau (klein) et, à toutes fins utiles, une autre par le port parallèle (lp2).

klein|remote printer on 192.168.50.22|Klein:\ :sd=/var/spool/lpd/Klein:\ :rm=192.168.50.22:rp=klein_z:bk:sh:mx#0: lp2|PS_600dpi-a4-auto-mono-600|LP:\ :lp=/dev/lp0:\ :sd=/var/spool/lpd/PS_600dpi-a4-auto-mono-600:\ :lf=/var/spool/lpd/PS_600dpi-a4-auto-mono-600/log:\ :af=/var/spool/lpd/PS_600dpi-a4-auto-mono-600/acct:\ :if=/var/lib/apsfilter/bin/PS_600dpi-a4-auto-mono-600:\ :la@:mx#0:tr=:cl:sh:sf: le dernier nom (Klein et LP) est celui qui s’affiche dans klyx. 2. On peut aussi modifier /etc/profile.local pour définir l’imprimante par défaut (les batchs rv* et printspec ont été réécrits).

PRINTER=’klein’ export PRINTER

 Il semble important que le nom (rp=klein_z) doive être distinct des noms locaux. Avec rp=lp , il est arrivé qu’il ne s’imprime plus que des pages blanches. Avec rp=klein, il est arrivé que l’envoi à l’imprimante "s’évanouisse" : impression normale depuis une autre machine, remplissage normal du répertoire de spool (testé en déconnectant l’imprimante), mais rien à l’arrivée. Il ne suffit pas de déconnecter, ni même de rebooter. Un arrêt général du réseau a réussi une fois. Contournement : créer une imprimante réseau (YaST1) avec un nouveau nom.

4.5.8 Pour mémoire : imprimante HP840C

Était-ce l’imprimante ou les drivers, mais cela n’a jamais vraiment fonctionné 1. Installation YaST1 (SuSE − 6.x) On obtient (dans printcap) une entrée dans le genre :

### BEGIN apsfilter: ### cdj850 a4 color 300 ### modèle : lp=/dev/lp0 sd=/var/spool/lpd/NAME lf=/var/spool/lpd/NAME/log af=/var/spool/lpd/NAME/acct if=/var/lib/apsfilter/bin/NAME la@:mx#0:tr=:cl:sh:sf: En fait, il se crée plusieurs "imprimantes", ayant chacune un nom, une file d’attente et un comportement différent du filtre postscriptifiant (®néologisme).

cdj850-a4-ascii-mono-300 50-a4-auto-color-300 cdj850-a4-auto-mono-300 cdj850-a4-raw Le problème est que cela imprime tout juste un trait noir (au lieu de la page de test)

50 4 RÉGLAGES DU BUREAU 4.5 Imprimer

2. Sous SuSE − 7.0, une installation par YaST2 (auto-détection parallèle/usb) conduit à quelque chose de même apparence... mais qui cache un post-traitement à partir de la file d’attente. Ce traitement est sous le contrôle du fichier /etc/gs.upp/y2prn_us1.upp (où us1 est le nom de base de l’imprimante). Ce fichier décrit un choix d’options parmi ceux contenus dans un deuxième fichier (extension : y2). Le fichier *.upp installé pour les imprimantes Hp820C, Hp850C (etc) conduit à une impression monochrome. Le voici (printer us1) : -sDEVICE=hpdj : -sCOLOR=mono : -sModel=500 : -sColorMode=mono : -dCompressionMethod=0 Le fichier *.upp pour une imprimante Hp1200C conduit à une impression couleur avec des grisés faibles et peu différents. Le voici (printer us2) : -sDEVICE=pjxl300 : -sCOLOR=color La modification suivante de us1.upp conduit à un résultat très noir -sDEVICE=cdj550 : -sCOLOR=color Tandis que la modification suivante de us1.upp conduit à un résultat contrasté, mais avec un gris clair un peu trop faible -sDEVICE=cdj670 : -sCOLOR=color Il y a aussi (non testé) -sDEVICE=cdj880 : -sCOLOR=color

4.5.9 Copies multiples 1. L’idéal est évidemment d’utiliser la commande prévue dans l’imprimante (et que l’on peut tou- jours utiliser depuis le panneau de commandes...). Le plus efficace serait donc une commande incluse dans le flux PostScript envoyé à l’imprimante. 2. Le mécanisme anciennement utilisé par le spooler (lpd, SuSE −7.0) consistait à envoyer plusieurs fois de suite le fichier mis en attente, pour ne l’effacer qu’au dernier envoi. On a donc unicité de calcul sur l’ordinateur, mais multiplicité sur l’imprimante. HPotjevleish Proot JKEdit.kdelnk CPotjevleish Lroot fdfA013potjevleish.workgroup fdfA013potjevleish.workgroup UdfA013potjevleish.workgroup NKEdit.kdelnk Qklein  Cette procédure réussit assez souvent lorsque l’imprimante est connectée par une liaison pa- rallèle : lpr -#2 -Plp2 à la console, -#2 dans ghostview.  Cette même procédure échoue lorsque la même imprimante est connectée en réseau à la fois dans ghostview et à la console. En fait l’ordre de destruction est exécuté avant que la réexpédition ait pu avoir lieu. La différence de comportement est-elle due à une différence de protocoles ou à une différence de vitesse entre la liaison réseau et la liaison parallèle ? 3. Le mécanisme utilisé par enscript est de placer, dans le fichier *.ps généré, la commande /#copies 2 def

4. Le mécanisme utilisé par LYX est de transmettre le nombre de copies au traducteur dvips -c 2 -t a4 -o test34.ps test34.dvi qui lui-même place la bonne commande dans le fichier *.ps généré. B/@copies{/#copies X}N ... suivi de 2 @copies 5. Les batchs rv* gèrent le nombre d’exemplaires (en plus du recto-verso) 6. Avec SuSE −7.2, kghostview transmet le nombre d’exemplaires, mais pas gv. Avec SuSE −10.2 aucun des deux ne le transmet.

51 4.6 systemsettings 4 RÉGLAGES DU BUREAU

4.6 systemsettings Apparu avec la SuSE − 11.3 pour prendre la place de kcontrol

4.6.1 Réglages ergonomiques minimaux Ces réglages sont ergonomiques parce que l’auteur y est habitué. Ce qui n’est pas ergonomique est que, à chaque distribution, le comportement par défaut change fortement. Écran SaX a disparu. Réglage écran : systemsettings . ComputerAdmin . Display. Bureaux 4 Fenêtres systemsettings . lookNfeel . windows . behavior . actions : hMi + [R − Mouse] pour resize et hMi + [L − Mouse] pour move systemsettings . ComputerAdmin . keyboard . GlobalShortcuts . component=KWin : hM − F 6i pour maximise(vertical) et hM − F 7i pour maximize(horizontal) Konqueror configure . starts with home ; links in a new window Répertoires Documents, Downloads, Music, Pictures, Public, Templates, Videos changés en docs, Dwnload, Zicmu, Photos. Qu’est ce que cela change dans les comportements ? Menu click sur l’icône "démarrer", changer "menu Kickoff" en "menu Classic". Clavier qc_clavier (pour LYX) Root /bin/pathroot pour la root-konsole

4.6.2 Localisation du menu de systemsettings 1. Le fond de l’affaire est constitué par un certain nombre de modules. On peut les appeler un par un par la commande kcmshell4 nom_du_module. La commande kcmshell4 –list permet d’obtenir la liste des modules disponibles. Il y en a 102 pour SuSE − 11.3. Pour SuSE − 42.1, 41 dépendent de la version 4 et 91 dépendent de kcmshell5 –list. 2. On peut aussi (SuSE−11.3) appeler ces modules par la commande systemsttings. Les noms des items du menu de cette application dépendent des icônes /usr/share/kde4/services/settings- *.desktop. Les X-KDE-ServiceTypes concernés sont : SystemSettingsView : classic-view ou bien icon SystemSettingsCategory SystemSettingsExternalApp 3. Les SystemSettingsCategory sont : general look-and-feel, personal, network-and-connectivity, computer-administration look-and-feel settings-appearance, settings-desktop, settings-notifications, settings-window- behaviour appearance colors, emoticons, fonts, icons, kcmgtk4, ksplashthememgr, kwindecoration, style desktop desktop, kcmlaunch, kwincompositing, kwinscreenedges, screensaver, workspa- ceoptions notifications bell, kcmnotify window-behaviour kwinoptions, kwinrules, kwintabbox personal settings-about-me, settings-accessibility, componentchooser, settings-regional-and- language about-me desktoppath, kcm_useraccount accessibility kcmaccess regional-and-language keyboard_layout, language, spellchecking network-and-connectivity settings-bluetooth settings-network-settings settings- network-settings kcm_kdnssd, kcm_networkmanagement, netpref, proxy sharing smb

52 4 RÉGLAGES DU BUREAU 4.7 Pour mémoire: kcontrol

computer-administration clock, settings-display, fontinst, settings-input-actions, settings- keyboard-and-mouse, kcm_phonon (multimedia) display kgamma, randr, xinerama input-actions khotkeys keyboard-and-mouse joystick, kcm_keyboard, keyboard, keys, mouse, standard_actions, synaptiks advanced settings-advanced-user-settings, settings-system advanced-user-settings audiocd, autostart, libkcddb, kcm_nepomuk, desktopthemedetails, device_automounter_kcm, kamera, filetypes, kcm_solid, kresources, kwalletconfig, kcm_attica, powerdevilconfig, solid-actions (new devices), kcmkded (services), kcmsmserver (session) system YaST-systemsettings, k3bsetup, kcmsambaconf, kdm, settings-system-policies system-policies kcm_polkitactions, kcm_polkitconfig permissions(2):k3bsetup personal-information(2):kresources

4.7 Pour mémoire: kcontrol 4.7.1 Localisation du menu de kcontrol 1. Le fond de l’affaire est constitué par un certain nombre de modules. On peut les appeler un par un par la commande kcmshell nom_du_module. La commande kcmshell –list | sort | sed -e permet d’obtenir la liste des modules disponibles. Il y en a 78 pour SuSE − 10.2. 2. On peut aussi appeler ces modules par la commande kcontrol. Les noms des items du menu de cette application dépendent des icônes /opt/kde3/share/desktop-directories/kde-settings -xxx.directory 3. La commande grep Name kde-settings-* | sed s/.*=// | sort fournit (SuSE − 10.2): looknfeel Appearance & Themes desktop Desktop hardware Hardware n’est pas dans le menu network Internet & Network components KDE Components peripherals Peripherals power Power Control n’est pas dans le menu accessibility Regional & Accessibility security Security & Privacy sound Sound & Multimedia system System Administration webbrowsing Web Browser n’est pas dans le menu 4. Une modification en local (utilisant kcontroledit) crée un fichier décrivant le nouveau menu. Où est l’original, à valeur globale ? 5. Dans la version SuSE−8.1, kcontrol affichait les items du répertoire /opt/kde3/share/applnk/ Settings (cf Applyx= partie 2). Le nom qui apparaît est le Name= du fichier .directory et non celui du répertoire. Les rubriques SortOrder ne sont pas prises en compte. FileBrowsing filetypes kcmkonq kcmkuick Information devices dma hardware interrupts ioports ioslaveinfo kcmdf kcmusb memory nic partitions pci pcmcia processor scsi smbstatus sound xserver LookNFeel SuSEmenu background colors desktop fonts icons kcmlaunch kcmtaskbar keys kthe- memgr kwindecoration kwinoptions panel screensaver style virtualdesktops Network email kcmnewsticker netpref smb socks

53 4.7 Pour mémoire: kcontrol 4 RÉGLAGES DU BUREAU

Peripherals kamera keyboard mouse Personalization crypto kcmaccess kcmcgi kcmkonsole kcmsmserver language passwords spell- checking PowerControl battery bwarning cwarning energy power Sound arts audiocd bell kcmnotify kmixcfg midi System alarmdaemonctrl clock kcmfontinst kcmhelpcenter kdm printmgr WebBrowsing cache cookies ebrowsing kcmcss konqhtml nsplugin proxy useragent 6. Pour mémoire et pour recaser ailleurs, les modules YaST sont gérés de la même façon Hardware yast2-mouse yast2-printer yast2-scanner yast2-sound yast2-sound-Joystick yast2-tune yast2-tune-Hardware_information yast2-tv yast2-x11 Misc yast2-installation yast2-support yast2-support-Post_a_support_query yast2-support-View_start-up_log Net_advanced yast2-ldap-client yast2-network yast2-network-Host-name-and-DNS yast2-network-Proxy yast2-nfs-client yast2-nfs-server yast2-nis-client yast2-nis-server yast2- nisplus-client Network yast2-inetd yast2-mail yast2-network yast2-network-DSL_configuration yast2-network- ISDN_configuration yast2-network-Network_card_configuration Security yast2-firewall yast2-security yast2-users yast2-users-Edit_and_create_groups Software yast2-online-update yast2-online-update-Patch-CD-Update yast2-packager yast2-packager- Change-source-of-installation yast2-update System yast2-backup yast2-bootloader yast2-bootloader-Create-a-boot-rescue-or-module-floppy yast2-country yast2-country-Choose_language yast2-country-Select_keyboard_layout yast2- powertweak yast2-profile-manager yast2-restore yast2-runlevel yast2-storage yast2-storage- Partitioner yast2-sysconfig

 CAVEAT : les modules sont indépendants les uns des autres, il faut donc sauvegarder à chaque page !!!

4.7.2 Réglages de FileBrowsing (dans KdeControlCenter) associations (filetypes) filemanager (kcmkonq) $ipse : font=nimbus_sans_I[urw] ; size=11 ; normal_color=black ; sizes_in_bytes=yes (kcmkonq) root : font=helvetica ; size=4 ; normal_color=blue ; sizes_in_bytes=yes quick_copy (kcmkuick)

4.7.3 Réglages de LookNFeel (dans KdeControlCenter) background $ipse : flat root: wallpaper=alien-night colors suse desktop 4 fonts remarques SuSE − 7.2: General font = helvetica Fixed font = courier (sinon kcontrol est illisible)  La taille effective dépend de l’ordre dans lequel les polices sont écrites dans /etc/XF86Config. La plupart des applications ne s’intéressent pas à l’opinion du bureau KdE sur la taille des polices. icons launch (kcmlaunch) SuSEmenu kde panel position/location=bottom. menus/max_number_for_quickstart=10 screensaver screen=blanck, wait=10mn

54 4 RÉGLAGES DU BUREAU 4.7 Pour mémoire: kcontrol shortcuts (keys). Positionner les raccourcis suivants: hMF 6i maximise vertical hMF 7i maximise horizontal. hC S F xi pour les bureaux, de façon à garder hF 4i pour fermer une sous-fenêtre. Pour suppri- mer au préalable le lien existant entre hC S F xi avec le bureau 1x, il ne suffit pas de valider, il faut quitter ce menu de kcontrol et y revenir. Tout cela se trouve dans ~/.kde/share/config/kdeglobals. style remarque SuSE − 7.2 : il est important de ne pas utiliser simultanément widgets = win95 et bar=mac_os (cf Subsection 4.2) taskbar (kcmtaskbar). Uniquement les tâches du bureau en cours, sans regroupements. Tout cela se trouve dans ~/.kde/share/config/ktaskbarrc. theme (kthememgr) win_behav (kwinoptions) moving/animate=no ; moving/placement=smart ; moving/snap=20 win_deco (kwindecoration) virtualdesktops ce module est appelé par le module desktop

4.7.4 Réglages de Personalization (dans KdeControlCenter) accessibility (kcmaccess) cgi_kio_slave (kcmcgi) countyNlanguage (language) money=¤ (plus de détails dans Subsection 4.2) crypto konsole (kcmkonsole) schema : cf Subsection 4.9 passwords one star session_manager (kcmsmserver) spellchecking

4.7.5 Réglages de System (dans KdeControlCenter) alarmdaemonctrl dateNtime (clock). Remarque SuSE − 7.2:  les différentes "pendules" ne savent pas mettre à l’heure (=passage obligatoire par le panneau)  charger mtr (mean time return) au prochain YaST (???) font_install (kcmfontinst) khelpcenter (kcmhelpcenter) login_manager (kdm). Se reporter à la Subsection 1.2. printmgr

4.7.6 Gestion des langues

1. La langue du login graphique se règle dans kdmconfig (cf infra). 2. La langue de YaST est fixée par LANGAGE dans rc.config. Elle se règle au début de YaST. 3. La langue de root est LANGAGE lorsque ROOT_USE_LANG vaut "no". 4. La langue par défaut des utilisateurs est fixée par LANG et RC_LANG. La validité des raccourcis claviers dépend de leur spécification dans chaque langue...

4.7.7 Problèmes non résolus

 Remarque SuSE − 7.2: en 800*640, les fenêtres sont trop hautes, on ne voit pas les boutons [ OK ]. Comment régler la taille par défaut de ces fenêtres ???  Mauvaise ergonomie des menus de kcontrol. Il n’est pas rare que le bouton de validation soit sous l’écran.

55 4.8 Le file manager 4 RÉGLAGES DU BUREAU

4.8 Le file manager 4.8.1 dolphin 1. Apparu avec la SuSE − 11.3. Son objectif principal semble être d’ennuyer les utilisateurs de konqueror. A expulser des barres de menu (placer NoDisplay=true dans le filepif).

4.8.2 konqueror 1. On constate que l’idée tout à fait winxx d’un navigateur fichiers/web intégré dans le système d’exploitation a fini par se faire un chemin dans "le reste du monde". Au passage, intégration de fonctionnalités dans le style "Midnight Commander". 2. Avec la SuSE − 11.3, konqueror n’apparaît plus dans les menus. Serait-ce la bande à Netscape qui a frappé ? Modifier les filepifs avec NoDisplay=false. 3. SuSE − 9.3 Maintenir : taille des fichiers en bytes (comment faire sous SuSE − 42.1 ?) 4. Lancement possible par kfmclient exec nom_du_répertoire kfmclient OpenProfile nom_du_profile 5. Configurer le file manager de suroot pour qu’il soit "évidemment" différent de celui de $ipse.  SuSE − 11.3. Conflit de raccourci-clavier pour [C − S − R] (remove active view) et le raccourci "alternate" de quelque chose d’autre. Utiliser (dans konqueror) Settings . Shortcuts. Devenu [C − S − W ] sous SuSE − 42.1 (et même avant).  SuSE − 7.x : Les fichiers de configuration sont dans ~/.kde2/... sauf pour suroot où ils sont dans ~/.kde/...

4.8.3 konqsidebartng

1. Le répertoire ~/.kde/share/apps/konqsidebartng/my_profile/entries contient les icônes qui s’affichent lorsque l’on tape [F 9] sous konqueror. Ce fichier est compilé, pour chaque profile de konqueror, à partir de ~/.kde/share/apps/konqsidebartng/entries 2. (SuSE − 11.3) Pour accéder au répertoire remote:/, il semble manquer un filepif en .kde4/share/ apps/konqsidebartng/virtual_folders/remote/virtualfolder_remote.desktop 3. Changements de nom souhaitables (a) Changeons le Name de root.desktop en "racine", car dans notre idée "root" est l’utilisateur "root". (b) Le Name de remote.desktop est "network", et c’est le bon. Propose ftp_archives, web_sites et slp 4. Les icônes de remote:/ viennent de ~/.kde/share/apps/remoteview.  Pour ajouter une nouvelle connexion, il y a un icône dans RemotePlaces. Il ne fonctionne pas pour SuSE − 10.2. Lancer directement knetattach par [M − F 2] permet de contourner le problème. 5. Une description (à compléter) des "adresses spéciales" est donnée Table 11.

4.8.4 Pour mémoire : l’ancien file manager : kfm

1. L’explorer "winxx-like" kruiser fonctionne de mieux en mieux. Dans la version SuSE − 7.0, l’affichage en mode "long" fonctionne enfin, et il est possible de changer le nom d’un fichier. 2. Autre explorer : knc. On peut s’en passer. 3. Les bookmarks sont dans ~/.kde/share/apps/kfm/bookmarks. 4. Rappel Unix : commande pour kfmsu : "kfmsu &" pour ne pas bloquer un terminal. 5. On peut copier directement des liens dans ~/.kde/share/apps/kfm/bookmarks, mais ils ne sont utilisés que par les nouveaux kfm.  Mouvements au curseur, sélection avec space : ce n’est vraiment pas efficace !  Lenteur invraisemblable de l’affichage d’un répertoire. Relecture systématique à chaque modifi- cation commandée depuis kfm, ce qui est stupide en soi, et d’autant plus que c’est lent.

56 4 RÉGLAGES DU BUREAU 4.9 Terminal konsole

Type Url Urls amarok Link none bookmarks Link none history Link none home Link file:$HOME metabar Link none ftp (dir) remote RelUrl=remote web (dir) service : / racine Link file:/ applications : / audiocd : / bluetooth : / fonts : / services RelUrl=services ipod : / media : / print : / settings : / system Link system:/

Table 11: Adresses spéciales

 Au redémarrage d’une session, kfm plante lorsqu’une ancienne fenêtre porte sur un répertoire détruit ou sur un mount qui a été démonté. On ne peut alors plus démarrer grand’chose à partir du menu démarrer. On ne peut pas non plus faire un kill de la fenêtre kfm, car il n’y a qu’un seul kfm (ce qui forke, c’est la fenêtre). Contournement : appeler un kfm à partir d’un terminal, et ne pas cocher le message d’erreur. On peut alors ouvrir une autre fenêtre kfm et recréer le répertoire qui manque.

4.9 Terminal konsole 4.9.1 Consoles locales

1. Configurer (ne pas oublier de sauvegarder les changements) :

font = medium, backcolor = lightblue,

2. Un historique des commandes est conservé ~/.bash_history. On peut naviguer dans cet histo- rique (cf man bash). En particulier monter, descendre par [C − p] et [C − n] (ou par les flèches haut et bas) ; aller en début, fin par [M− <] et [M− >] ; recherche incrémentale [C − r] suivie de la chaîne à chercher (aux appels suivants, remonte dans l’historique). 3. Avec SuSE−11.3, l’icone de création de nouvelles consoles n’est plus présente par défaut. Corriger par Settings/Edit current Profile/Tabs/Show New Tab.

4.9.2 Consoles root

1. Une modification du profile des root-konsoles réalisée depuis le menu de modification de konsole conduit à un fichier placé dans l’arborescence de l’utilisateur. Ce fichier n’est donc pas utilisé pour lancer une console root. D’ailleurs, une modification placée dans l’arborescence de root n’est pas utilisée non plus, puisque ce n’est pas root qui est le lanceur. 2. Les modifications doivent donc être placées dans l’arborescence système. Pour SuSE − 11.3, cela se trouve en /usr/share/kde4/apps/konsole 3. Changer :

[General] Icon=bball ; [Appearance] ColorScheme=BlackOnLightYellow

4. En profiter pour placer l’icône bball dans le fichier konsolesu.desktop.

57 4.10 Montage de fichiers : mount 4 RÉGLAGES DU BUREAU

4.9.3 Consoles à distance 1. Il est utile de donner un look différent aux consoles à distance. Pour décrire le comportement d’une console Toto, il faut un ensemble de trois fichiers : un lanceur toto-kick.desktop, un descripteur toto-kons.desktop et un schéma toto.schema. 2. Le lanceur décrit les propriétés du pictogramme placé sur la barre des tâches $ipse/.kde/share/ apps/kicker/toto-kick.desktop. Il est efficace de stocker l’original de cette icône dans $ipse/ .kde/share/apps/konsole/toto.desktop et de procéder par glisser-coller (sinon, il faut relan- cer kicker pour que le pictogramme devienne visible). Exec konsole –type Toto -caption "" -icon icon_toto Icon icon_toto2 (celle utilisée avant lancement, tandis que icon_toto est utilisée par la console une fois lancée) Name Toto Type Application 3. Un descripteur de console : $ipse/.kde/share/apps/konsole/toto.desktop Exec ssh -X xxx xxx.xxx.xxx Icon konsole (ce pictogramme ne s’affiche pas, sauf dans le répertoire $ipse/.kde/share/apps/konsole Name ssh toto Schema Toto.schema Terminal false Type KonsoleApplication (inutile pour SuSE − 10.2) 4. Un descripteur de schéma : $ipse/.kde/share/apps/konsole/toto.schema title Toto color divers paramètres image full $ipse/.kde/share/apps/konsole/triplegears.jpg 5. Des essais non approfondis conduisent à sauvegarder un schéma (ou un autre) dans le répertoire $ipse/.../konsole puis à copier par dessus l’un des schémas de /opt/kde3/share/apps/konsole/, par exemple BlackOnLightColor. 6. Avec exactement Name comme ci-dessus et -caption "", on obtient une console avec ipse@toto:/dir - ssh toto dans la barre de titres et ssh toto comme légende de l’onglet. 7. Gag à distance : si l’on veut obliger une machine distante à recharger une carte réseau, il faut envoyer ifdown eth0 ; ifup eth0 en une seule fois, et non pas...

4.9.4 Pour mémoire : terminal kvt 1. Configuration ne pas oublier de sauvegarder les changements.) Font = courier 13, backcolor = (213, 255, 255),

 Si l’on ne change pas la fonte, des applications comme YAST donnent un résultat très vilain (se demander comment fonctionne le YaST obtenu par l’icône du menu)

4.10 Montage de fichiers : mount 1. kfstab permet de configurer /etc/fstab (les versions SuSE − 6.1 et SuSE − 6.3 fonctionnent, la version SuSE − 6.2 était vérolée). Définir les répertoires /cdrom, /floppy, /flopmac, /zip. La version SuSE − 7.2 définit des répertoires /media/*. Est-ce une bonne idée ? 2. Un exemple de configuration est donné Table 12. 3. On peut avoir des icônes "file system" bistables sur le bureau (mount/umount). Nécessite de connaître les points de montage  comment avoir les mêmes sur la taskbar ? 4. Pour monter des disques winxx avec noms de fichier longs

58 4 RÉGLAGES DU BUREAU 4.11 Purger les inutilités

device mount type args . . /dev/hda1 /win98 vfat ro,noauto,user 0 0 /dev/hda2 /boot ext2 defaults 1 2 /dev/hda3 swap swap defaults 0 0 /dev/hda5 / ext2 defaults 1 1 /dev/hda6 /home ext2 defaults 1 2 /dev/hdb4 /zip vfat noauto,user 0 0 /dev/hdd /cdrom iso9660 ro,noauto,user 0 0 /dev/fd0 /floppy auto noauto,user 0 0 /dev/fd0 /flopmac hfs noauto,user 0 0 none /proc proc defaults 0 0 /dev/hdc3 /old_nux ext2 ro,noauto,users 0 0

Table 12: Exemple de configuration

 les décrire vfat (et non msdos) dans /etc/fstab. Il semblerait que "auto" ne donne pas le bon résultat à chaque fois . 5. Partitionnement des lecteurs zip Il se trouve que les disquettes zip 100Mo sont prédéfinies comme hdx4 par le constructeur (le boot_sector contient 4 descripteurs de partition, et c’est le dernier qui est utilisé). Partition Table for /dev/hdc (obtenue avec cfdisk)

First Last # Type Sect. Sect. Offset Length Filesystem Flags ------4 Primary 0 196607 32 196608 FAT16(06) Boot(80) ---Starting------Ending---- Start Number of # Flags Head Sect Cyl ID Head Sect Cyl Sector Sectors ------1 0x00 0 0 0 0x00 0 0 0 0 0 2 0x00 0 0 0 0x00 0 0 0 0 0 3 0x00 0 0 0 0x00 0 0 0 0 0 Lorsque l’on utilise fdisk, c’est la partition 1 qui est créée, et donc le zip ne se montera plus sous linux (winxx utilise la partition dos, où qu’elle soit). Contournement : copier un boot_sector correct vers un fichier, puis le réécrire au bon endroit. CAVEAT : ne pas se planter, ne pas tuer les disques durs !!!!!! head -c 512 /dev/hdc > iomega_part cat iomega_part > /dev/hdc 6. DANGER (6.3) ****************************************************************** La fat du disque zip n’est pas relue lorsque l’on monte un NOUVEAU disque zip. Par contre, cette fat sera écrite au démontage, faisant disparaître les données ! En fait, il semble exister un mécanisme de buffer, qui ne se débranche pas lorsque l’on passe à un nouveau disque zip !!!!! ************************************************************** DANGER (6.3) Ce comportement semble avoir été corrigé avec la SuSE − 6.4. 7. Comment ouvrir le lecteur de CD quand nullix ne veut pas ? Une commande ps -lax | grep cdrom permet d’identifier le process qui continue à réserver l’utilisation du CD-rom. Bien évidemment, le programme cd_player (depuis lequel on essaye d’éjecter le CD-rom) est en train de... et l’éjection n’a pas lieu. Ce comportement semble avoir été corrigé avec la SuSE − 6.4.

4.11 Purger les inutilités 1. Fichiers *.kdelnk (cf section adhoc dans Applyx)

59 6 RÉSEAUX: QUELQUES PRÉALABLES

2. documentations inutiles : purger /opt/kde/share/HTML des répertoires inutiles. 3. déplacer les liens des "utilités" inutilisables dans le répertoire "utils2" de façon à les purger au prochain YaST. 4. viré un tas de trucs de /etc/skel vers /etc/skel_out

5 Scripts

5.1 Commandes shell

Lire man bash. Le relire. Ci-dessous, quelques éléments utiles. basename extraire le nom d’un fichier à partir d’un full qualified name dirname extraire le répertoire d’un fichier à partir d’un full qualified name for syntaxe à utiliser pour kwrite

for ... ; do le corps de la boucle done ${toto:a:b} b caractères du contenu de $toto, à partir du caractère de rang a (les rangs commencent à 0) ${toto}aa la variable $toto, suivie de “aa”

5.2 Filtrage sed

1. Comme d’habitude, il ne faut rien faire "à la main", mais écrire des batchs qui écriront les scripts et les exécuteront. Méthode générale :

cat <‌ fichier_sed commandes sed EOF sed -f fichier_sed source > destination

2. Mais alors, il faut être très attentif à la syntaxe et aux "protections" : une couche pour cat et une couche pour sed si besoin est. 3. En particulier, le fichier doit être en encoding= ISO 8855-15. Et export LC_ALL=C semble utile, au moins de temps en temps. 4. Localisation de certaines commandes par /expression/ { commandes } 5. Insertion (append) d’un fichier /where/ r filename. 6. Remplacement s/a_remplacer/par_quoi/. Remplacements multiples s/xx/yy/g. Les règles gé- nérales des expressions s’appliquent généralement. Il est souvent commode d’utiliser ¶, obtenu par [Alt − R], comme séparateur pour une commande s (cela ne va pas pour une commande de localisation). 7. Lignes /^xx/ est au début, tandis que /yy$/ est à la fin. Attention aux prises de tête lorsque l’on importe un texte Winxx : les fins de ligne sont [Ctr-J][Ctr-M] et il y a donc un caractère en trop (cf ***louche*** prettyref alg:QbbBoundingBox, qbb_bounding_box). On peut utiliser : tr -d \\\r ou plus habile encore tr \\f\\r\\n ¶¶¶ qui permet de fabriquer une seule grande ligne que l’on recoupe ensuite. 8. Supprimer une ligne (pour faire autre chose à cet endroit) est faire d’abord, et exécuter la com- mande d ensuite (car elle démarre un nouveau cycle). 9. Pour des caractères de fantaisie, utiliser s¶\\xHH\\xHH¶...¶ avec les HH en hexadecimal.

6 Réseaux: quelques préalables

Un inventaire des cartes réseau est fourni Subsection 6.5.

60 6 RÉSEAUX: QUELQUES PRÉALABLES 6.1 Nommer la machine

6.1 Nommer la machine 1. Changer le nom de la machine : YaST fait cela, mais la prise en compte n’est uniformément effective qu’après un reboot (problèmes avec samba, print etc). 2. La variable HOSTNAME vient du fichier /etc/hostname qui est modifié par Yast2 . Network . hostname. Contient ou devrait contenir un nom long machine.sous-domaine.domaine. Modifica- tion possible par le réseau. 3. La variable HOST est celle qui s’affiche au prompt ou dans les barres de titre. Elle vient de la commande /usr/bin/uname -n. 4. Avec SuSE − 13.1 (mais pas pour SuSE − 42.1), la commande ci-dessus fournit le nom long. Il faut donc modifier la variable HOST en ajoutant if test ${HOST} == "madiran.mdomain.domain"; then HOST="madiran"; export HOST fi dans /etc/profile.local.

6.2 Récupérer les morceaux Les informations importantes sont éparpillés dans beaucoup de fichiers divers. Il n’existe pas de mécanisme de test de la cohérence. Il est donc indispensable de lister ces divers éléments. Les batchs qyN_docs_netcards (basé sur hwinfo) et qyn_docs_network (tout le reste) ont pour objectif la récu- pération de tous ces morceaux.

6.2.1 Gestion ifup/ifdown 1. Décision: le comportement des cartes entre les différentes machines doit être unifié, pour pouvoir brancher les câbles en visibilité réduite. Les noms eth0, eth1, eth2, wlan0, etc. sont commodes. Mais ce ne sont que des "noms de fantaisie" et leur signification est à imposer. On décide que: eth1 la prise la plus haute, vers le réseau local (sur la carte mère, sous réserve que cette carte soit gigabit !) eth0 la prise un peu plus bas (première carte réseau ?), vers le provider (cette carte est nécessairement en dhcp, on_boot) eth2 la prise du bas, vers autre chose (wlan routeur ou current loop ou ...) 2. Il faut donc faire part de cette décision aux ordinateurs concernés. Depuis (au moins) SuSE−42.1, il existe systématiquement un fichier /etc/udev/rules.d/70-persistent-net.rules. Il suffit de le modifier et de rebooter. Lire man udev ne peut nuire. 3. Il est utile d’ajouter mandatory=eth0 (carte vers l’extérieur) dans /etc/sysconfig/network/config. 4. On pourrait aussi utiliser Yast2 . Network et passer sous ifup/ifdown. Puis Network . Overview . Edit . Hardware . Change. Depuis (au moins) SuSE − 11.4, le Hwadr et la position sur le bus sont affichés, permettant de bien identifier la carte. Mais rien n’est pris en compte sans reboot... et il en faudrait donc 3: eth0->eth2 ; eth1->eth0;eth2->eth1. 5. Réglages délicats: ce qui peut être changé par dhcp. Semble convenir: dhcp modifie route et dns, mais pas name. 6. ifup/ifdown (il faut être root). 7. ifconfig pour vérifier que tout va bien et récupérer les adresses.

6.2.2 Gestion NetworkManager 1. Indispensable pour le wifi (gestion par utilisateur), mais change tout le reste. 2. Il faut tout reparamétrer (il semble y avoir un passage lors du premier appel, mais cela ne continue pas). 3. Il arrive que "enable wireless" ne fonctionne pas. Utiliser rfkill list all pour voir ce qui se passe. Débloquer au besoin. Puis fermer et ré-ouvrir le Manager. 4. A nouveau, le routage doit être paramétré attentivement (le bouton "basic settings", niveau 3 donne: route).

61 6.3 Anciennes remarques 6 RÉSEAUX: QUELQUES PRÉALABLES

5. Il semble que les fichiers décrivant les connexions arrivent en : /etc/NetworkManager/system-connections

6.3 Anciennes remarques 6.3.1 Récupérer les morceaux

/etc/rc.config (n’existe plus dans SuSE − 8.1) /etc/hosts /etc/dhcp.conf /etc/route.conf (n’existe plus dans SuSE − 8.1) /etc/printcap /etc/smb.conf /etc/rc.config.d/firewall.rc.config Une ancienne version du batch qyr_docs_network est donnée Alg. 13.

Incl. 13 qyr_docs_reseau. dir=/home/douillet/docs/sys ; mkdir -p $dir ; cd $dir cartes=‘ ls /etc/sysconfig/network/ifcfg-eth* /etc/sysconfig/network/ifcfg-lo* ‘ cat << EOF > doc_network_$HOSTNAME ‘date +"%D %Hh%M"‘ : $HOSTNAME ‘qyy_docs_strip /etc/sysconfig/network/config -x‘ ‘for i in $cartes ; do qyy_docs_strip $i -x ; done‘ ‘/sbin/ifconfig | sed -n -e "/Link.encap/ p; /inet.addr/ p ; /MTU/ p ; \ /RX.bytes/ p ; /Interrupt/ p"‘ ‘/sbin/ifstatus eth0‘ ; ‘/sbin/ifstatus eth1‘ ; ‘/sbin/ifstatus eth2‘ ‘qyy_docs_strip /etc/sysconfig/network/routes -x‘ ‘for i in /etc/resolv.conf* ; do qyy_docs_strip $i -x ; done‘ ‘/sbin/route -n‘

‘$sb/apache2 status | sed -e "s/:/: /"‘ ‘$sb/smb status‘

Quelques commentaires (à compléter) 1. Les commandes /etc/init.d/* renvoient des messages en couleur (codes ANSI). Cette mise en forme est commandée par /etc/rc.status. Il faut donc désactiver ce mécanisme en déclarant TERM=raw au début du batch.

6.3.2 Valider les modifications 1. Certaines modifications sont prises en compte immédiatement, d’autres doivent être resynchro- nisées. D’où les batchs qsx. 2. Les scripts de démarrage des démons ont changé de place. Depuis la SuSE − 7.2, ils se trouvent désormais dans /etc/init.d au lieu de /sbin/init.d (cf Table 13).

qui fichier sync commande

hosts /etc/hosts directement efficace cartes /etc/rc.config qsn /etc/init.d/network reload printer /etc/printcap qsp /etc/init.d/lpd stop|start route /etc/route.conf qsr /etc/init.d/route reload samba /etc/smb.conf qss /etc/init.d/smb restart apache qsa /etc/init.d/apache restart

Table 13: Les scripts de démarrage

62 6 RÉSEAUX: QUELQUES PRÉALABLES 6.4 Compilation et installation d’un driver

3. Le script qsn déconnecte pppoE. Il existe donc une option (qsn z) qui relance pppoE. Dans les deux cas, le script qsn se termine par le lancement de ifconfig (avec une temporisation).  les adresses lues dans /etc/route.conf sont du texte ASCII. Par conséquent 213.056.050.001 n’est pas reconnue comme étant 213.56.50.1. Par contre, les adresses lues dans /etc/hosts sont en numérique.

6.4 Compilation et installation d’un driver En principe, les cartes réseau "se gèrent toutes seules" à l’installation. Lorsque ce n’est pas le cas, il faut installer un driver. Commencer par identifier le device en utilisant son code pci sur : http://www.pcidatabase.com/. Procéder ensuite à partir des sources (si possible). 1. Installer les sources du noyau (kernel-devel). Pour SuSE −13.1, uname -r répondait 3.11.10- 21-desktop. Quelques YoU plus tard, cela donnait 3.11.10-29-desktop. Et maintenant (2016- 07-27) : 3.12.59-47-desktop. Pour SuSE − 42.1, cela donne 4.1.31-30-default. 2. Vérifier que /lib/modules/‘uname -r‘/build existe et pointe vers les sources du noyau. Soit /usr/src/linux-3.11.10-21-obj/x86_64/desktop pour SuSE − 13.1 − old, /usr/src/linux-3.12.59-47-obj/x86_64/desktop pour SuSE − 13.1 − now /usr/src/linux-2.4.19.SuSE pour SuSE − 8.1. 3. Copier le fichier source en /home/distrib/namexxx. 4. Se placer dans ce répertoire et compiler par la commande make. 5. Copier le driver au bon endroit par la commande make install. Seul root peut faire cela. 6. Le module doit alors être accessible. Root teste cela par modinfo xxx. Si on ne voit pas le module, il faut exécuter depmod -a. Ici, xxx est le nom tout sec, sans .o ou .ko à la fin. 7. Lancer ce driver par modprobe. 8. Il faut éventuellement empêcher le lancement automatique de drivers concurrents. 9. Pour un lancement automatique: pour SuSE − 13.1 ???? ; pour SuSE − 8.1 : déclarer le driver dans /etc/modules.conf.

6.4.1 Carte wifi madiran SuSE − 13.1, SuSE − 42.1 1. version 3.11.10-21 du noyau (a) Le matériel visé est Broadcom 43228 Dualband 14e4:4359. Tester sa présence par /sbin/ lspci -n | grep 14e4. (b) Le driver est Broadcom Linux hybrid wireless driver, Release Version: 6.30.223.248, Release Date: Thu 26 Jun 2014 03:30:34 AM PDT http://www.broadcom.com/support/802.11/linux_sta.php. Le principe est : Interactions with the OS are done through files shipped in source form, while the internals are shipped in a precompiled binary form. (c) La destination est /lib/modules/‘uname -r‘/kernel/drivers/net/wireless/wl.ko (d) Pour repérer les concurrents, lsmod | grep "80211\|b43\|brcmsmac\|bcma\|ssb\|wl" | sort Conserver le 80211, décharger (rmmod) les autres. Les black-lister dans /etc/modprobe.d/blacklist.conf (dit la doc). Avec SuSE − 13.1, dans : /etc/modprobe.d/50-blacklist.conf. 2. version 3.11.10-29 du noyau (a) Le driver est disponible à partir de Packman. Il s’installe en /lib/modules/3.11.10-29-desktop/updates/wl.ko. (b) Le black-listing est mis en place par /etc/modprobe.d/50-broadcom-wl-blacklist.conf 3. Version 3.12.59-47 du noyau. Commencer par YoU + reboot...

63 6.4 Compilation et installation d’un driver 6 RÉSEAUX: QUELQUES PRÉALABLES

(a) La commande find . -name "wl.ko" |sort donne ./3.11.10-21-desktop/kernel/drivers/net/wireless/wl.ko ./3.11.10-29-desktop/updates/wl.ko ./3.11.10-34-desktop/weak-updates/updates/wl.ko ./3.12.53-40-desktop/kernel/drivers/net/wireless/wl.ko ./3.12.57-44-desktop/kernel/drivers/net/wireless/wl.ko (b) On fait du ménage. (c) On compile. L’utilisateur ordinaire échoue, root réussit. (d) make install envoie le fichier en /lib/modules/‘uname -r‘/kernel/drivers/net/wireless (e) Puis depmod -a, et alors modinfo wl voit le module. 4. SuSE − 42.1, ker=4.1.31-30. (a) Le driver est disponible à partir de Packman. Il s’installe en /lib/modules/4.1.31-30-default/updates/wl.ko, 2016-10-10, 7486146 avec un lien en /lib/modules/4.1.12-1-default/weak-updates/updates/wl.ko (b) Et /usr/sbin/modinfo wl voit le module. (c) Avant YoU/network, fermer YoU/software, car il est nécessaire de charger le package lw. Configurer: DHCP, networkname (not notified), wpa-psk2 passphrase (d) Tester l’existence de wlan0 par /sbin/ifconfig. Les logs du serveur (position 2-6-1 sur le site web) donnent DHCP "f!Q가 IP ½É+{ᆼ†©Ê<: 192.168.0.8 (MAC : 00-08-CA-EE-63-BF)

6.4.2 Carte MCS9865 serial (SuSE − 11.3) Il s’agit d’une carte pci RS232. Comme ce n’est pas une PCIe, ne s’insère pas dans les slots de madiran. On choisit de l’installer sur mahjong. N’est pas reconnue automatiquement. La commande lspci donne : 0b:01.0 Serial controller: NetMos Technology PCI 9865 Multi-I/O Controller 0b:01.1 Serial controller: NetMos Technology PCI 9865 Multi-I/O Controller 0b:01.2 Parallel controller: Illegal Vendor ID Device 9865 0b:02.0 Autre controller, dans un autre slot. (ordre= bus;slot;device) La commande lspci -v donne (entre autres) a000:1000 comme pci-id des contrôleurs série et 9710:9865 (MosChip) comme pci-id de la carte. En fonctionnement, la commande setserial -g /dev/ttyS* -a donne : /dev/ttyS4, Line 4, UART: 16650V2, Port: 0xe480, IRQ: 16... /dev/ttyS5, Line 5, UART: 16650V2, Port: 0xe800, IRQ: 17 Baud_base: 115200, close_delay: 50, divisor: 0 closing_wait: 3000 Flags: spd_normal skip_test Le driver fourni avec la carte ne se compile pas. Une recherche sur le net conduit à http://izto.org/mcs9865/ qui fournit le driver plus deux patchs (les entêtes ont changé). Le message date de 2011-09-21, la carte a été achetée fin 2014. Cela compile. Il n’y a pas de ports /dev/ttyDx comme annoncé, mais des ports /dev/ttySx avec x = 4, 5. Se demander d’où vient le port /dev/ttyS0. Remarque: les ports sont la propriété de root:dialout. Attribuer le groupe dialout à ceux qui en ont besoin.

6.4.3 Carte pci: Realtek RTL-8169 Gigabit (SuSE − 8.1)

1. Le répertoire utilisé pour la compilation a été /opt/rpm/giga_card/2.4.x/r8169.c. 2. Pour SuSE − 8.1, vérifier que les sources du noyau sont installées et que /lib/modules/‘uname -r‘/build/include/linux/version.h est bien une copie à l’identique de /boot/vmlinuz.version.h. 3. Dans le fichier makefile, remplacer l’option -I/usr/include/linux par -I/lib/modules/‘uname -r‘/build/include.

64 6 RÉSEAUX: QUELQUES PRÉALABLES 6.5 Inventaire des cartes réseau

4. Dans le fichier source, désactiver la ligne "timer" // typedef struct timer_list timer_t (comme indiqué dans le fichier readme.txt). 5. Destination /lib/modules/‘uname -r‘/kernel/drivers/net/r8169.o . Lancer par insmod. 6. Déclarer ce driver dans /etc/modules.conf.

6.5 Inventaire des cartes réseau 6.5.1 Pour madiran actuel: hwinfo –netcard 1. /etc/udev/rules.d/70-persistent-net.rules 2. 12: PCI 19.0: 0200 Ethernet controller Model: "Intel 82579V Gigabit Network Connection" Vendor: pci 0x8086:0x1503 "Intel Corporation":"82579V Gigabit Network Connection" SubVendor: pci 0x1043:0x849c "ASUSTeK Computer Inc.": "P8P67 Deluxe Motherboard" Driver Modules: "e1000e" Device File: eth0 HW Address: c8:60:00:a2:ef:94 Module Alias: "pci:v00008086d00001503sv00001043sd0000849Cbc02sc00i00" 3. 38: PCI d00.0: 0200 Ethernet controller Model: "Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller" Vendor: pci 0x10ec:0x8168 "Realtek Semiconductor Co., Ltd.":"RTL8111/8168/8411 PCI Ex- press Gigabit Ethernet Controller" SubVendor: pci 0x1043:0x8505 "ASUSTeK Computer Inc.":"P8 series motherboard" Driver Modules: "r8169" Device File: eth1 HW Address: c8:60:00:a2:e0:55 Module Alias: "pci:v000010ECd00008168sv00001043sd00008505bc02sc00i00" 4. 37: PCI c00.0: 0282 WLAN controller Vendor: pci 0x14e4:0x4359 "Broadcom":"BCM43228 802.11a/b/g/n" SubVendor: pci 0x1043:0x850c "ASUSTeK Computer Inc." Driver: "wl" Device File: wlan0 HW Address: 00:08:ca:ee:63:bf Module Alias: "pci:v000014E4d00004359sv00001043sd0000850Cbc02sc80i00" Driver Info #0; Driver Status: bcma is not active; Driver Activation Cmd: "modprobe bcma" Driver Info #1; Driver Status: wl is active; Driver Activation Cmd: "modprobe wl"

6.5.2 Cas général

1. La commande ifconfig n’est pas dans le path de l’utilisateur ordinaire. Placer un lien vers /sbin/ifconfig. 2. Utiliser les scripts qys_docs_systeme et qyn, qyN pour documenter les cartes... avant les pro- blèmes. Classe 200= Network Controller; 0282 = WLAN controller

6.5.3 Motherboard P7P55D (mirabel) Nom_de_fantaisie "RTL8111/8168B PCI Express Gigabit Ethernet controller" Hwinfo Vendor_identifier=69868, Device_identifier=98665. code_pci = 10EC:8168 (la conversion de ce qui précède en hexa donnerait 8169). Bus_id=2 Pilote r8169

65 6.5 Inventaire des cartes réseau 6 RÉSEAUX: QUELQUES PRÉALABLES

machine dev vendor name driver eth Shanghai 11 1106:3065 12 1106:3065 Monalisa mid 4 10b7:9200 gig 5 10ec:8169 top 8 8086:2449 Madras 10ec:8139 Surecom8139 8139too 0 10ec:8169 Realtek8169g r8169 1 Maverick c.m 2 1969:1026 attansic-asus atl1e 0 gig 5 1 10ec:8169 Realtek8169g r8169 1 tmp 5 2 1106:3065 VT6102-100M via-rhine 2 Mirabel gig 7 1 10ec:8169 RTL8169-gpci r8169 0 c.m 2 10ec:8168 RTL8111-asus r8169 1 bot 7 2 1106:3065 VT6102-100M via-rhine 2 Mahjong c.m. 3 10ec:8168 RTL8111-asus r8169 0 gig 11 10ec:8169 RTL8169-gpci r8169 1 Madiran blue d 10ec:8168 RTL8111-asus r8169 1 gree 19 8086:1503 intel-asus e1000e 0 w 14e4:4359 broadcom wl w Miranda eth 8 10ec:8136 Realtec r8169 0 w a 0 1814:3290 Ralink rt2800pci w Malibu-2 eth 14 0 10de:0269 nvidia forcedeth 0 v 4.9 1814:0302 Ralink rt61pci w (a) Inventaire des cartes réseau

iptim iptim-wan iptim-wifi 192.168.0.1 jpho misarda2 192.168.0.2 vert android-4a854f43fd439ff 192.168.0.3 SMT320-g vpho misarda1 192.168.0.4 miranda2 192.168.0.7 mad2 madiran 192.168.0.8 pink android- 192.168.0.9 SMT320-r msi malibu 192.168.0.10 mirab 192.168.0.11

5 68-5D-43-AC-F7-F6

(b) Inventaire iptime

Table 14: Inventaire général

6.5.4 Motherboard Attansic (maverick) code_pci = 1969:1026 (L1 Gigabit Ethernet Adapter, sur maverick. Ne fonctionne pas d’origine SuSE − 11.0. Pilote atl1e Télécharger le driver. Dans les temps très anciens, cette URL fonctionnait http://download.opensuse.org/repositories/home:/dmitry_serpokryl:/Enlightenment- cvs-core-metapackage/11.0_update/x86_64/atl1e-kmp-default-1.0.0.4_2.6.25.18_0.2- 2.2.x86_64.rpm. On peut supposer que ce driver est distribué d’origine.

66 6 RÉSEAUX: QUELQUES PRÉALABLES 6.5 Inventaire des cartes réseau

6.5.5 Cartes PCI gigabit Evo-ge8169v2 Nom_de_fantaisie "Realtek RTL-8169 Gigabit Ethernet" Hwinfo donne Vendor_identifier=69868, Device_identifier=98665. code_pci = 10EC:8169 (conversion de ce qui précède en hexadecimal). Bus_id=7 Pilote r8169

6.5.6 Carte pci: Realtek RTL-8169 Gigabit Code_pci = 10ec:8169 Pilote r8169. Reconnue d’origine à partir de la SuSE − 9.3. Pour mémoire, avec SuSE − 8.1, il fallait compiler un driver à partir des sources fournies avec la carte (Subsection 6.4.3)..

6.5.7 Pour mémoire 1. Jusqu’à SuSE − 7.0, YaST2 n’installe qu’une seule carte réseau. Pour les autres, faire à la main. Les deux cartes sont prises en compte par SuSE − 7.2. 2. Variables utilisées par YaST (SuSE − 7.x) Ne pas déclarer les cartes comme modules préalables au boot (= laisser vide initrd_modules) !!! Caveat la ligne netconfig prend un espace .... INITRD_MODULES="" START_LOOPBACK="yes" NETCONFIG="_0 _1" IPADDR_0="90.0.0.186" IPADDR_1="90.0.0.187" NETDEV_0="eth0" NETDEV_1="eth1" IFCONFIG_0="90.0.0.186 broadcast 90.0.0.255 netmask 255.255.255.0 up" IFCONFIG_1="90.0.0.187 broadcast 90.0.0.255 netmask 255.255.255.0 up" IP_DYNIP="no" IP_TCP_SYNCOOKIES="yes" IP_FORWARD="yes" START_INETD="yes" START_PORTMAP="yes"

6.5.8 Carte pci : Surecom EP-320X-R 1. Code pci = 10ec:8139. 2. Pilote rtl8139

6.5.9 Carte pci : DFE-530TX 1. Code pci = 1106/3043. Marquée FDE-530TX sur le circuit. 2. Sur la machine potjevleish, deux cartes réseau DFE-530TX sont prévues. Sous win98, difficultés pour différencier les irq (bios). Le "voisinage réseau" regroupe correctement ce qui est relié aux deux cartes. Par contre certains programmes hp n’interrogent qu’une seule carte (slot2) : l’imprimante est donc détectée pour la création d’un port (mais pas pour l’impression) ou bien figure dans le listage de JetAdmin (mais n’est pas accessible aux modifications par le même JetAdmin)

slot carte irq port ip agp video 11 1 2 net 10 d800 90.0.0.171 3 net 12 d400 90.0.0.172

3. Reconnue par SuSE − 6.3, pilote via-rhine sans paramètres, conduisant à irq=10, io=6800.

67 7 RÉSEAUX ET ROUTAGE

6.5.10 Carte pci : ne3000 1. Pas de code pci ? Marquée comme : sn3200ct : composants delta : 004005-5696AA 2. Testée sous win95/win98. Reconnue comme RealTek RTL-8029. (irq=10, io=7f20). 3. Reconnue par SuSE − 6.2, pilote ne2k-pci, sans paramètres. Est détectée comme clone RealTek RTL-8029 et fonctionne par exemple en irq=9, io=6C00 (ou en irq=12, io=7000)

6.5.11 Carte pci : carte Intel 82557 1. Code pci : 8086:1229. Marquée comme : "mp 721502-005", "pb 721503-005", "Philippines gd82559" 2. N’est pas auto-reconnue par Win98(1). Il faut déclarer son pilote (Intel Pro 100 - Tx). Est reconnue par Win98(2). 3. Reconnue par SuSE−? : pilote eepro100. Fonctionne alors comme : irq 10, "Intel EtherExpress Pro 10/100" et 0xd800 "Intel Speedo3 Ethernet"

6.5.12 Carte isa : ne2000 1. Marquée comme sn2000CT rev A1 : composants delta : 004005-187E36 2. Fonctionne sous win95 (compatible Novel/Anthem ne2000) : irq=10, io=220. 3. Pilote nullix = ne. Entre en conflit  /sbin/ifconfig liste dummy0 et lo, mais pas eth0  insmod ne donne "busy"  modprobe ne semble bien se passer mais z lsmod ne voit pas "ne" z kdecontrol ne liste pas les interruptions z "ping" déclare réseau non accessible (accepte néanmoins sa propre adresse) Diagnostic vraisemblable : conflit avec une carte son (qui est déclarée " automatiquement" en io200 ???). Reconfiguration dans les configurations de base (10-240) pour ne2000 et (5-220,388,200,9-330) pour alsound. 1. Passage 240->260, 220->240, 260->220 sous dos. 2. Déclaration sous YaST 3. On constate une modification de /etc/conf.modules 4. La commande "modprobe ne" entraîne une recompilation des dépendances (depmod) 5. Fonctionnement correct de ping, visibilité des serveurs sur le réseau

7 Réseaux et routage 7.1 Quelques utilitaires tcpdump récupérer les paquets. Examples tcpdump -n -v arp tcpdump -v -n -i eth1 port bootpts zenmap détecter les serveurs ; scanner les ports ouverts (frontal to nmap)

7.2 Pour mémoire: Dial on call 7.2.1 Remarques à caractère philosophique 1. Dans les anciens temps de la téléphonie, on appelait un ordinateur distant à travers un réseau téléphonique vocal. Au prix de la minute de téléphone, mieux valait appeler... juste le temps nécessaire. En ces temps là , le gestionnaire de barnum était point to point protocol (ppp). 2. Le client KdE kppp n’a jamais vraiment fonctionné. Opinion formulée en 2001 : est devenu obsolète avec le développement du réseau par câble. Dans les lieux désolés sans réseau permanent, mieux valait utiliser une machine winxx comme passerelle. 3. Puis, les maniaques de la connexion sont revenus en force avec pppoE (ppp over Ethernet). Ce protocole a commencé par empoisonner l’adsl, puis (mars 2002) est venu empoisonner le câble monopolisé par wanadoo.

68 7 RÉSEAUX ET ROUTAGE 7.2 Pour mémoire: Dial on call

4. L’un des buts avoués est de vous déconnecter de force toutes les 24 heures, et vous empêchant ainsi d’avoir une adresse ip fixée par dhcp, et donc restant fixe au moins tant que la machine reste branchée. 5. Évidemment, des contournements sont apparus (dns dynamique). Le résultat principal est d’in- troduire une couche de plus, avec les sur-coûts correspondants en temps et en débit. Un autre résultat est d’augmenter l’anonymat d’éventuelles agressions. En particulier, il est plus difficile de contacter les utilisateurs de bonne foi mais mal configurés.

7.2.2 kppp (SuSE − 6.2)

1. Supprimer Lock option dans /etc/ppp/options. 2. Conflit modem souris  le port modem est respecté, tandis que le port souris semble recherché "meilleur effort" : le conflit n’est visible qu’à l’activation du modem.  remarque : le port série requis n’est monté qu’à la demande. Ainsi, kdecontrol n’affiche interrupt 4 (= serial port) que lors d’une requête modem, tandis que interrupt 3 (= serial port) est affiché en permanence (souris).  Comment avoir un dial on call (internet, mail, etc) ?  Mort subite inexpliquée du nourrisson : kppp meurt assez souvent .... (kppp’s helper process died ...)  Vérifier que pppd est suid, ou que les utilisateurs sont dans le groupe dialout.

7.2.3 pppoed24 (SuSE − 7.2)

1. Il faut rendre pppoed24, pppoed, pppd exécutables par les membres du groupe dialout. 2. Il faut rendre /etc/pppoed.conf lisible par les membres de dialout.  Il se trouve que SuSEconfig (SuSE − 7.2) réécrit cette autorisation à chaque fois : le batch qzq_anti_suse fixe ce problème.  Il se trouve aussi que ce fichier contient en clair le password de la connexion : un choix est à faire. Il est stupide de devoir le faire. 3. La commande ifconfig permet de constater l’apparition d’un nouveau device, ppp0. Une habile sélection permet de récupérer l’adresse ip attribuée (batch ipipip). ip1=‘/sbin/ifconfig eth0 | grep "inet addr" | sed -e "s/\ \ Bcast.*$//; s/^.*://"‘ ip2=‘/sbin/ifconfig ppp0 2>/dev/null | grep "inet addr" | sed -e "s/\ P-t-P.*$//; s/^.*://"‘ echo $ip1"___"$ip2 4. Une commande ipsend permet d’envoyer cette adresse ip vers une machine ayant une adresse fixe, le tout sous le contrôle de cron (édition par kcron). 5. Le mécanisme d’encapsulation diminue la valeur de mtu qui est de 1500 pour le protocole Ether- net ordinaire. On constate que ppp0 est déclaré avec une valeur MTU=1490. 6. Le réglage de mtu pour les cartes Ethernet se trouve dans /etc/rc.config. On constate que la valeur mtu =1492 sur la deuxième carte du serveur, et sur la première carte d’une machine cliente sous linux suffit à faire fonctionner la chose. 7. Les valeurs à négocier pour mtu/mru sont déclarées dans /etc/ppp/peers/pppoe24. La valeur positionnée par YaST2 est 1490. Si l’on met plus, par exemple 1524, la négociation avec wanadoo conduit à un mtu =1492. 8. Lorsque la machine client est sous winxx, le MTU se règle en donnant la valeur texte "1492" à la clef HKML/System/CurentControlSet/Services/Class/Nettrans/000x/MaxMtu. On peut constater la valeur à donner par la commande ping peer_to_peer_host -f -l 1464. Avec les 28 octets de l’encapsulation par le protocole icmp, cela fait bien 1464 + 28 = 1492 octets. 9. Sous WinXP, la clef est HKLM/System/CurrentControlSet/Services/Tcpip/Parameters/Interfaces/xxxxx/MTU. Re- pérer le bon interface (xxxxx) par son adresse ip. Remarque : 1500=5dc, 1492=5d4. Le mtu peut être envoyé par le serveur dhcp en positionnant : option interface-mtu 1492 ; 10. Le DNS du provider ne semble pas accessible par les machines winxx clientes. Déclarer un autre DNS peut être utile

69 7.3 Providers en dhcp (SuSE − 8.1) 7 RÉSEAUX ET ROUTAGE

7.2.4 pppoe (SuSE − 8.1)

1. Consulter la documentation /usr/share/doc/packages/sysconfig. 2. Réglage du mtu dans le réseau interne. Inclure dans /etc/sysconfig/network/ifcfg-eth0 une ligne : MTU=’1492’ 3. Configuration par YaST2 (network_basic/dsl_configuration. Cela crée un fichier /etc/sysconfig/network/ifcfg-dsl0 qui contient les lignes suivantes DEVICE=’eth1’ PPPMODE=’pppoe’ PROVIDER=’dsl-provider0’ STARTMODE=’onboot’ 4. Le startmode est à l’origine manuel. Il est intéressant de remplacer cela par onboot, de façon à avoir cette connexion en permanence. 5. Le provider est en fait le nom d’un fichier /etc/sysconfig/network/providers/dsl-provider0, qui contient PROVIDER="DSL provider" DSLSUPPORTED="yes" MODEMSUPPORTED="no" ISDNSUPPORTED="no" USERNAME="le nom de connexion" PASSWORD="le password en clair" IDLETIME="300" DEMAND="no" DNS1="" DNS2="" 6. Les diverses actions sont enregistrées dans le fichier /var/log/pppd.log (??? ré-expliquer où cela se configure...). On sait que le barnum est en vie lorsque /var/run/ppp0.pid existe. 7. Et en outre, il faut relancer périodiquement tout cela par un fichier cron. (a) Créer un utilisateur xdialout:dialout. Placer dans ~xdialout/bin un lien vers $ipse/bin/ qso_sync_pppoed qui contient la véritable incantation de lancement du barnum. if test ! -f /var/run/ppp0.pid then /sbin/ifup dsl0 fi (b) Créer un fichier ipse/bin/qzs_send_pppoed qui envoie l’adresse obtenue vers un certain destinataire. tmp=‘/sbin/ifconfig ppp0 2> /dev/null | grep ’inet addr’ \ | sed -e"s/^[^:]*:// ; s/\ .*$//"‘ echo . | mail -s ipipip$tmp"___" [email protected] echo "done ==> "$tmp (c) Créer les deux fichiers cron dans /var/spool/cron/tabs. (??? plus de détails !!! ).  Où est donc passé kcrontab ?

7.3 Providers en dhcp (SuSE − 8.1) 7.3.1 Wanadoo câble De grandes manoeuvres financières ayant fait migrer "wanadoo-câble" en "numericable", il a fallu (02/07/2005) repasser la connexion en dhcp. 1. Re-configuration des cartes réseau innocentes, de façon à revenir à la valeur mtu=1500 sur l’ensemble du réseau interne (1500 est le standard Ethernet, tandis que 1492 est une adaptation aux contraintes pppoE). (a) Sur les machines unix, modifier /etc/sysconfig/network/ifcfg-eth0, puis valider par

70 7 RÉSEAUX ET ROUTAGE 7.3 Providers en dhcp (SuSE − 8.1)

/sbin/ifdown eth0 /sbin/ifup eth0 (b) Sur les machines WinXP, modifier la clef HKLM/System/CurrentControlSet/Services/Tcpip/Parameters/Interfaces/xxxxx/MTU. Re- pérer le bon interface (xxxxx) par son adresse ip. Remarque : 1500=5dc, 1492=5d4. (c) Pour les autres machines winxx, le mtu se règle en donnant la valeur texte "1500" à la clef HKML/System/CurentControlSet/Services/Class/Nettrans/000x/MaxMtu. 2. Invalider la carte dsl0 par STARTMODE=’off’ dans /etc/sysconfig/network/ifcfg-dsl0. 3. Re-configurer le firewall, la carte externe étant désormais eth1 et pas ppp0. Se reporter à la Subsection 1.8. 4. Ré-autoriser la modification dynamique de resolv.conf et de named.conf dans /etc/sysconfig/ network/config. 5. Re-configurer la carte réseau donnant sur l’extérieur par STARTMODE=’onboot’, BOOTPROTO=’dhcp’ puis valider par /sbin/ifdown eth1 ; /sbin/ifup eth1 6. On obtient alors les valeurs suivantes dans resolv.conf search modulonet.fr nameserver 85.68.0.8 nameserver 85.68.0.7

7.3.2 free (SuSE − 9.3) connexion dhcp, adresse ip vraiment fixe. 7.3.3 neuf (SuSE − 10.2) Documentation sponsorisée par Bill Gates et MacroMedia. Cela se résume à : on branche les câbles en les branchant. Et on constate que le "kit internet" ne délivre qu’une adresse Ethernet non routable 192.168.1.20. Incompétence totale du service client. En particulier ne savent pas qu’il y a une configuration brid- ge/routeur, et encore moins sur l’interface web permettant de régler tout cela. Bilan poubelle. nom NB4-SER-ro, wifi 802.11g alim= 12v, + interne fichiers NB4-R1.12-Main N-R1.12-RESCUE mac 00:17:33:72:33:5c. ip=192.168.1.1 ssid neuf-335c, WPA-PSK kid0orwapphadgeodmof ean13 3.66.13.84.00.00.30 wifi open, filtrage MAC dns 89.2.0.1, 89.2.0.2 (modulocable) Tentative (SuSE − 13.1) cours pour en faire une passerelle interne pour le wifi. Succès relatif.

7.3.4 modulocable (SuSE − 11.3) 1. Interface de la box quand isolée: 192.168.0.1; Interface de la box quand connectée en bridge: 192.168.100.1 2. Lorsque la box est connectée en routeur ses ports Ethernet fournissent des adresses internes son wifi attribue des adresses internes 3. La box connectée en bridge ne fournit qu’une ip extérieure, qui est utilisée par la machine pas- serelle (qui fait alors office de routeur). Un composant wifi capte le wifi de la box, mais échoue à recevoir une adresse ip (qui serait extérieure). Évidemment, le SAV ne comprend pas la question, et on change la box... sans que rien ne change. 4. Par conséquent, il faut que la passerelle passe le relais à un routeur wifi (interne).

71 7.4 Wifi 7 RÉSEAUX ET ROUTAGE

7.4 Wifi 1. On suppose que les drivers des cartes sont chargés. 2. Packages supplémentaires à charger: rfkill

7.4.1 Questions en suspens

1. utilitaire reaver (clefs wpa/wpa2) 2. wireshark ??

7.4.2 Configuration du routeur iptime A écrire

7.4.3 Madiran (SuSE − 42.1) 1. Activation au niveau du bios: wifi, bluetooth actived. 2. Gestion wicked (ifup/ifdown). Cartes réseau at_boot_time, config par Yast2. 3. lspci donne, entre autres, 0c:00.0 Network Broadcom BCM43228 802.11a/b/g/n 4. Commande rfkill list p0: hci0: Bluetooth ; Soft blocked: no ; Hard blocked: no 1: phy0: Wireless LAN ; Soft blocked: no ; Hard blocked: no 5. iw list and/or iw phy0 info verbose about phy0 (wifi card) 6. iw wlan0 info about wifi connection ifindex 4 ; wdev 0x1 ; wiphy 0 addr ; type managed ssid channel 2 (2417 MHz), width: 20 MHz (no HT), center1: 2417 MHz

7.4.4 Miranda2 (\SuSE − 42.1) 1. Activation au niveau du bios: wifi, bluetooth actived. 2. Gestion wicked (ifup/ifdown). Cartes réseau at_boot_time, config par Yast2. 3. lspci donne, entre autres,

0a:00.0 Network controller: Ralink corp. RT3290 Wireless 802.11n 1T/1R PCIe 4. Commande rfkill list 0: phy0: Wireless LAN ; Soft blocked: no ; Hard blocked: no 1: hp-wifi: Wireless LAN ; Soft blocked: no ; Hard blocked: no 2: hp-bluetooth: Bluetooth ; Soft blocked: yes ; Hard blocked: no 5. Touche [F12]. Couleur orange en permanence. Lorsque l’on appuie dessus, alors (a) rfkill list = 0: phy0: Wireless LAN ; Soft blocked: no ; Hard blocked: yes (b) ifconfig ne liste plus wlan0. (c) rfkill unblock all revient dans l’état "Hard blocked: no" et "wlan0" revient dans ifconfig. (d) D’après les listes de diffusion, on peut parfois modifier le comportement des led. Ainsi : modinfo iwlegacy led_mode:0=system default, 1=On(RF On)/Off(RF Off), 2=blinking (int) modinfo ipw2200 led:enable led control on some systems (default 1 on) (int) Mais cela ne s’applique pas ici.

72 7 RÉSEAUX ET ROUTAGE 7.5 Serveur dnsmasq SuSE − 42.1

6. Un autre jour (2016-12-03), on a no,no;no,yes;no,yes après unblock all. Puis no,yes partout après [F 12]. Et cela bascule après [F 12]. Donc hp-wifi et hp-bluetooth restent en hard=yes. 7. iw list and/or iw phy0 info verbose about phy0 (wifi card) 8. iw wlan0 info à propos de la connexion wifi ifindex 3 ; wdev 0x1 ; wiphy 0 addr ; type managed

7.4.5 Network Manager

Avec SuSE − 42.1, Connection editor 5.5.5 1. Pour tous General . Automatically connect, All Users, Firewall zone 2. Wired . Restrict to device ... Ipv4 . manual, DNS=89.2.0.1, Address=192...Mask=255...Gate=192... Routes . vide 3. Wifi . Restrict to device ... Wifi . ssid(=le nom) ; mode=infrastructure ; Hidden network Security . WPA2-personal + passwd Ipv4 . Automatic (=DHCP) 4. Et alors: ouvrir le Network manager. Deux cases à cocher: wifi, avion. Si l’on coche wifi, on voit le réseau caché, et les autres. Cela fonctionne comme attendu.

7.5 Serveur dnsmasq SuSE − 42.1 DHCP + DNS locaux

7.5.1 Lancement du service 1. Advertising: Dnsmasq is a lightweight, easy-to-configure DNS forwarder and DHCP server. It is designed to provide DNS and, optionally, DHCP, to a small network. It can serve the names of local machines that are not in the global DNS. The DHCP server integrates with the DNS server and allows machines with DHCP-allocated addresses to appear in DNS with names configured either in each host or in a central configuration file. Dnsmasq supports static and dynamic DHCP leases and BOOTP for network booting of diskless machines. 2. Une fois le service lancé, (sur mserv0), ps lax voit: /usr/sbin/dnsmasq --log-async --enable-dbus --keep-in-foreground Le process est attribué à l’utilisateur #495, qui est décrit dans /etc/passwd par: dnsmasq:x:u495:g65534:dnsmasq:/var/lib/empty:/bin/false que l’on peut comparer (homonymie) avec: ntpd: asynchronous dns resolver (root) ntp:x:74:495:NTP daemon:/var/lib/ntp:/bin/false . le demon NetworkTimeProtocol 3. Ce lancement est contrôlé par: /usr/lib/systemd/system/dnsmasq.service qui contient : [Unit] Description=DNS caching server. After=network.target [Service] Type=dbus BusName=uk.org.thekelleys.dnsmasq ExecStartPre=/usr/sbin/dnsmasq --test ExecStart=/usr/sbin/dnsmasq --log-async --enable-dbus --keep-in-foreground ExecReload=/bin/kill -HUP $MAINPID

73 7.5 Serveur dnsmasq SuSE − 42.1 7 RÉSEAUX ET ROUTAGE

[Install] WantedBy=multi-user.target 4. Le -q dans ExecStart lance l’enregistrement des logs (pour dns querries. Ne semble pas suffisant). 5. Ancienne remarque (probablement encore valable): la carte serveuse (réseau interne) doit être configurée on boot, avec une adresse statique.

7.5.2 La partie DNS, introduction

1. Dans /etc/resolv.conf nameserver 89.2.0.1 2. Dans /etc/hosts 192.168.50.1 mname1 mname1 192.168.50.9 mname9 mname9 192.168.50.120 mserv0 mserv0 3. Dans le /etc/resolf.conf de mname9, on désactive (#) les dns externes. On vérifie que la résolution cesse. On ajoute l’adresse ip de mserv0. Alors la résolution reprend, et en plus les adresses locales fonctionnent. Ainsi "ping mname1" ou bien "ssh mname3". 4. Attention aux mécanismes automatiques ! Il faut descendre la carte réseau (ifdown). Puis tuer tous les fichiers /etc/resolv.conf* sauf le fichier /etc/resolv.conf lui-même. Et alors vider complètement ce fichier. Si l’on conserve un DNS externe, le DNS local viendra se placer en dessous au moment du dhcp... et ne sera pas utilisé. Un test: la commande route doit répondre en donnant le nom de la passerelle (et non son adresse ip).

7.5.3 La partie DNS, configuration

Dans /etc/dnsmasq.conf  # Never forward plain names (without a dot or domain part) (line 19) domain-needed  # Never forward addresses in the non-routed address spaces. (line 21) bogus-priv  # If you don’t want dnsmasq to read /etc/resolv.conf or any other file (line 58) no-resolv  .# Add other name servers here, with domain specs if needed (line 66) server=89.2.0.1  Maintenant, on place nameserver 127.0.0.1 dans le /etc/resolv.conf de mserv0. Et alors cette machine bénéficie aussi du service.

7.5.4 La partie DHCP, introduction

 # Force dnsmasq to listen for DHCP and DNS requests only on specified interface (106) interface=eth1  Uncomment this to enable the integrated DHCP server, you need to supply the range of addresses available for lease and optionally a lease time. (157) dhcp-range=192.168.0.10,192.168.0.30,12h  # Log lots of extra information about DHCP transactions. (638) log-dhcp  # required, or not ? dhcp-range=192.168.50.0,static,24h

74 7 RÉSEAUX ET ROUTAGE 7.6 Serveur d’adresses dhcpdbd (SuSE − 10.2)

7.5.5 La partie DHCP, configuration

 # Override the default route supplied by dnsmasq, which assumes the router is the same machine as the one running dnsmasq (give the option #, or the option name) dhcp-option=option:router,11.22.33.44  On peut lire à distance les adresses mac par la commande "arp -a"  # Always assign the given name, the given IP address and the given lease time to the given Ethernet address (238) dhcp-host=,malibu,192.168.50.xx,24h

# name value 1* netmask 255.255.255.0 3* router 192.168.50.xxx 6* dns-server 192.168.50.xxx 12* hostname malibu 28* broadcast 192.168.50.255 51 lease-time 1d 53 message-type 5 54 server-identifier 192.168.50.xxx 58 T1 12h 59 T2 21h Les baux attribués se trouvent en /var/lib/misc/dnsmasq.leases

7.6 Serveur d’adresses dhcpdbd (SuSE − 10.2) 7.6.1 Ne pas saboter la passerelle 1. Lorsque l’on place le dhcp de la zone local.local sur une machine interne, il ne faut pas que la passerelle soit sabotée par le dhcp interne. 2. Le gateway de la passerelle doit rester le gateway externe (et pas ré-envoyer sur la passerelle elle-même). En cas de problème, il faut repérer la passerelle externe, la confirmer et vérifier ifstatus eth1 route add default gw xx.xx.xx.xx ; route 3. Les serveurs dns de la passerelle doivent contenir explicitement les serveurs externes. Sinon les fonctions onboot (dont ntp) se passent mal. La carte externe doit se configurer onboot, et laisser passer un certain temps. 4. Il se pourrait que les problèmes avec le gateway externe viennent d’une absence de réponse dns lors de l’enregistrement de cette passerelle (à tester en détail lorsque le problème de fixation des adresses ip sera résolu) 5. En bref, il faudrait que le dhcp interne et le dhcp externe ajoutent leurs fonctionnalités au lieu de les écraser mutuellement.

7.6.2 Remarques d’installation (SuSE − 10.2) 1. Les packages concernés sont : dhcpdbd dhcp d-bus daemon dhcpcd client dhcp par défaut (chrooted in /var/lib/dhcpcd) dhcp isc dhcp : common files ~-client isc dhcp : client ~-relay isc dhcp : relay ~-server isc dhcp : server ~-tools isc dhcp : tools 2. A partir de SuSE−8.1, le lancement se fait par les runlevels (niveaux 3 et 5) et la configuration du serveur se fait par /etc/dhcpd.conf. Pour la SuSE − 8.1, un modèle de fichier de configuration se trouvait en /usr/share/doc/packages/dhcp/dhcpd.conf.

75 7.6 Serveur d’adresses dhcpdbd (SuSE − 10.2) 7 RÉSEAUX ET ROUTAGE

3. Pour la SuSE − 10.2, lire les man et /usr/share/doc/packages/dhcp/README. Le démon ne démarre pas lorsque la syntaxe du fichier de configuration n’est pas correcte. En particulier, il faut une commande ddns-update-style none pour diriger les dialogues entre le service dhcp et le service ddns (dynamical dns). De toutes façons, la bonne marche du service dépend du dns (ou du fichier /etc/hosts). 4. Configuration fixe d’une machine : host ZentEur { hardware ethernet 00:48:54:82:e3:e8; ddns-hostname zenteur; fixed-address 215.56.50.88; } 5. La carte serveuse est identifiée par son adresse mac (et non plus par son nom dynamique en ethx). Il n’est pas nécessaire que les autres cartes soient démarrées ou aient reçu une adresse (par un dhcp extérieur). Par contre, la carte serveuse doit être configurée onboot, avec une adresse statique. 6. La version 3.0.5-7 fournie avec SuSE − 10.2 ne fonctionne pas correctement (pas de logs). Ceci est fixé par la 3.0.5-9 (YoU) 7. L’enregistrement des baux ne concerne que les adresses dynamiques. Ce n’est donc pas une erreur si ce fichier reste vide lorsqu’il n’y a que des adresses fixes. 8. Une aide à la mise en place se trouve dans YaST (modules réseau). Est-ce bien utile ?

7.6.3 Sécurité 1. Pour des raisons de sécurité, le dhcp est maintenant exécuté sur une machine interne, pas sur le firewall. 2. Le démon est exécuté par dhcpd:nogroup plutôt que par root, et est de plus exécuté "chrooted". Le répertoire prison est /var/lib/dhcp/ et contient : /etc/localtime /etc/host.conf /etc/hosts /etc/resolv.conf... and you might have to keep these current if they are modified dynamically by other programs. 3. Les messages arrivent sur /var/log/dhcpd/dhcpd.log (commandé par dhcpd.conf et syslog).

7.6.4 Clients 1. Bien entendu, les clients doivent eux aussi être configurés. L’activation se fait sous YaST, et le fichier correspondant est /etc/dhclient.conf. 2. Dans les anciennes versions, l’activation se faisait dans /etc/rc.config, clef "ifconfig_x". 3. Sous winx, le programme winipcfg est utile. Sous winx+, on obtient les mêmes fonctionnalités avec l’icône "câble réseau" (activer cette icône dans la fenêtre configuration de la carte).

7.6.5 Pour mémoire : anciennes versions

1. Jusqu’à SuSE − 7.2, le lancement du serveur dhcp se décide dans /etc/rc.config par start_dhcpd = yes La configuration du démon dépend de /etc/rc.config.d/dhcpd.rc.config. 2. Remarques jusqu’à SuSE − 8.1 : (a) Il faut que toutes les cartes réseau soient actives (avec une adresse ip fixée ou obtenue). (b) Il faut que tous les réseaux (repérés par leur adresse de groupe) soient mentionnés, y compris pour dire qu’on ne leur parle pas.  Le démon a tendance à ne pas suivre les directives, et préfère écouter eth0. Renommer les interfaces en conséquence.

76 7 RÉSEAUX ET ROUTAGE 7.7 Serveur dns (SuSE − 10.2)

 Caveat : le lien carte physique - numéro ethx est commandé par le fichier /etc/modules.conf, tandis que l’adresse ip attribuée à un numéro ethx est commandée par le fichier /etc/sysconfig/network/ifcfg-eth0. Pour s’y retrouver, il était raisonnable d’arrêter le réseau par /etc/init.d/network/stop et décharger les modules par rmmod.  D’ailleurs, il est prudent d’utiliser des cartes réseau pilotées par des modules différents, cela permet une meilleure identification.  (pas clair). Dans le même genre d’idées, le routeur général doit être sur eth1 (sinon, le serveur dns n’est pas utilisable. La commande route donne alors le gateway par son adresse ip et non par son nom).

7.6.6 Traitement des logs du serveur dhcp

1. Premier principe : exploiter les logs depuis le compte d’un utilisateur spécial 2. Le traitement effectué est conditionné à la fois par la taille (très petite) du réseau et par le niveau de confiance (très élevé) dans les utilisateurs. Il s’agit donc uniquement de repérer des dysfonctionnements matériels. 3. Le traitement donne trois résultats : l’ensemble trié des identifiants utilisés ne serait-ce qu’une fois, l’ensemble trié des messages (sans les dates, ni les commentaires), la répartition chronologique des messages pour chaque carte concernée. 4. Constatations : (a) Le fait que le serveur ne soit pas "authoritative" a été détecté plusieurs fois par le seul menteur, dans un contexte ancien et oublié (second démon dhcpd sous unix sur menteur ?) (b) Lors du changement de carte réseau dans une machine, cette machine continue à bénéficier de son ancienne adresse " un certain temps" . (c) Les noms de machine figurant dans le fichier dhcpd.conf ne sont pas utilisés. Pourquoi ?

7.7 Serveur dns (SuSE − 10.2) 1. Charger tous les modules, c’est à dire :

bind bind-chrootenv bind-doc bind-libs bind-libs-32bit bind-utils. (il y en a un paquet...). Lire /usr/share/doc/packages/bind/arm/Bv9ARM.html. 2. Une zone est un groupement connexe sur lequel un serveur a autorité. Le serveur envoie des AA (authoritative answers). 3. YaST . Network Services propose un utilitaire de configuration. Si le lancement n’est pas "on- boot", le serveur est mort après l’utilitaire. 4. Lorsque le serveur fonctionne, il peut être le seul dns déclaré de la machine. Puis être le seul dns déclaré du réseau. 5. Le démon s’appelle named et s’exécute chrooted. 6. Le répertoire /etc/named.d/ contient les fichiers de configuration à inclure. Il y a forwarders.conf, fourni d’origine, et d’autres fichiers *.fonc. Cette extension est fantaisiste et destinée à différencier ces fichiers d’avec *.conf qui est inclus à l’intérieur de la section options. 7. Il faut un *.fonc pour décrire le mécanisme rncd 8. Il faut un *.fonc pour chaque lookup direct ou reverse. Quand on a ajouté quelque chose dans le répertoire named.d, il faut supprimer /etc/named.conf.include (déclenche une recompilation).  Contrôle : rndc stats. Ne fonctionne pas (cherche /var/lib/named/var/log/named/named.stats). File not found s’il n’existe pas et acces denied s’il existe avec tous les droits d’écriture. Persiste même avec la manoeuvre rndc-confgen.

7.8 Login distant 7.8.1 ssh

1. Syntaxe : ssh -X machine_distante [-l utilisateur] 2. Les identifiants de connexion se trouvent dans $ipse/.ssh.

77 7.9 ntp : time accuracy 7 RÉSEAUX ET ROUTAGE

3. Pour que la machine distante ait accès au serveur X local, il faut que le sshd local ait accès à ipv6 sur localhost... ou bien que /etc/ssh/sshd_config contienne les lignes : AddressFamily inet ListenAddress 0.0.0.0 4. Alors on obtient : echo $DISPLAY . localhost:10.0. 5. Quand cela ne marche pas, chercher les erreurs évidentes (erreurs ip, par exemple).

7.8.2 telnet (deprecated) 1. Ne pas oublier d’installer le package telnet-server !!! 2. Activer le service dans /etc/inetd.conf 3. Consulter les traces dans auth.log. 4. Faire des essais en local et en semi-local. 5. Il est utile de disposer d’un visuel rappelant que l’on est sur une console à distance. Pour cela, on configure l’application konsole (cf Subsection 4.9).

7.9 ntp : time accuracy 7.9.1 A propos des horloges 1. Consulter le TimePrecision-HowTo : "Managing Accurate Date and Time HowTo". La section Installx/Configuration/Documentation/Howto décrit où diable se trouvent les HowTo. 2. Dans le monde Unix, il y a deux horloges. L’horloge matérielle -HWclock- et l’horloge immatérielle -SYSclock-. L’horloge matérielle (à quartz) est lue une fois au boot pour initialiser l’horloge immatérielle, puis est ignorée. A partir de là, SYSclock vit une vie erratique, utilisant une partie la puissance de calcul du processeur pour faire avancer ses aiguilles. Le mécanisme des interruptions fait que la gestion de SYSclock n’est qu’approximative. En conséquence, cette horloge se décale horriblement et il est nécessaire de mettre en oeuvre un mécanisme de resynchronisation. 3. La commande date lit la SYSclock, tandis que hwclock lit la HWclock. 4. Dans le monde tout court, l’heure n’est pas la même en tous les points du globe. Le fichier binaire /usr/lib/zoneinfo/localtime contient les descriptifs voulus. Plus précisément, ce fichier est un lien vers /etc/localtime qui lui-même est un lien vers le bon fichier de la base de données. 5. Cette base de données est située en /usr/share/zoneinfo/. Pour ce qui nous concerne, nous utilisons /usr/share/zoneinfo/Europe/Paris. 6. La TimeZone est également enregistrée dans le fichier /etc/sysconfig/clock. Ce fichier indique également si la HWclock est réglée en temps UTC ou bien en temps local. HWCLOCK="-u" TIMEZONE="Europe/Paris"

7.9.2 ntp (SuSE − 10.2)

1. Package xntp 2. Serveurs : on peut utiliser des serveurs anonymes, ou des serveurs nommés, ou des serveurs décrits par une adresse ip (pour rester effectif même si le dns est en panne) : server 0.pool.ntp.org chronos.cru.fr (195.220.94.163) canon.inria.fr ntp-p1.obspm.fr ntp-sop.inria.fr ntp1.curie.fr 3. Paramétrisation /etc/sysconfig/ntp (cf Alg. 14). Ce service doit être utilisé "chrooted". 4. Configuration /etc/ntp.conf (cf Alg. 15). 5. Le réglage par défaut (SuSE − 10.2) des *.log ne convient pas. Préférer une gestion directe par syslog (Section 1.4) et envoyer le tout dans un répertoire spécial. Régler le niveau des *.log : logconfig =all ou bien logconfig =syncstatus +sysevents.

78 8 TÉLÉPHONNE

Incl. 14 sysconfig_ntp NTPD_START="yes" ; NTPD_ADJUST_CMOS_CLOCK="no" NTPD_INITIAL_NTPDATE="chronos.cru.fr 195.220.94.163" NTPD_OPTIONS="-u ntp" ; NTPD_RUN_CHROOTED="yes"

Incl. 15 ntp_conf driftfile /var/lib/ntp/drift/ntp.drift fudge 127.127.1.0 stratum 10 logconfig =all ; logfile /var/log/ntp.log server 127.127.1.0 ; server 195.220.94.163 ; server chronos.cru.fr

1  On constate que /var/log/ntp et /var/log/ntp sont acceptés comme fichiers *.log, mais que les autres échouent "Cannot open log file". En outre, on ne récupère pas tout (une partie va sur messages.log).  Erreur de syntaxe dans ntp.conf : à la ligne logconfig, il faut un espace devant le +, et pas d’espace après (comme pour le =). 6. Lanceur /etc/init.d/ntp. La variable initial_ntpdate règle le fonctionnement de la com- mande /etc/init.d/ntp ntptimeset : ou bien utiliser le serveur spécialement déclaré ou bien (valeur auto-x) les x premiers serveurs déclarés dans /etc/ntp.conf. 7. Lien avec dhcpd : définir un serveur de temps sur le réseau local, et utiliser ce serveur pour les autres machines du réseau local. Quelle est le meilleur endroit (passerelle ou dhcp ?).

7.9.3 Pour mémoire : ntp et SuSE − 8.1

1. Le lanceur s’appelait xntpd. A spécifier aux niveaux 3 et 5 du runlevel-editor (dans YaST2).

 En utilisant "exactement" les mêmes configurations sur madras et moonlight, on obtient un serveur de temps reconnu (par un client tardis tournant sur une machine winxx du réseau interne) comme synchronisé sur madras, et reconnu non synchronisé sur moonlight.

8 Téléphonne

8.1 Korean Anycall Galaxy S [SHW-M110S]

8.1.1 Dual clock

Settings ; Wireless and Network ; Mobile Networks ; T Roaming ; Roaming Dual Clock : select off

8.1.2 Rooting

1. Settings ; Applications ; Unknown sources: select yes 2. http://framarootapp.com/download/framaroot-v1-9-3 3. Begin download . clicker sur le zip; Password = framarootapp.com ; fait apparaître framaroot- 1.9.3.apk ; installer: donne une action Framaroot. 4. Run Framaroot. Tap Aragorn. Message to reboot. 5. Reboot. Et on ne voit pas Su ...

8.1.3 Root Status and Device Info

1. model=ok ; id=32a4e59893a210ed ; OS 2.3.4 ; root=not ;

1. sic. (SuSE − 42.1)

79 8.2 Samsung J5 9 APPAREILS PHOTOS

8.1.4 Kingo-rooting

1. http://kingo-root.fr.uptodown.com/android 2. Télécharger, puis exécuter le *.apk 3. Failed. Again. Failed. 4. The M$ version fails too (overflow in wine).

8.1.5 Odin

1. http://odin3.en.lo4d.com/download. 2. Download, then extract. Et il faudrait un noyau à flasher...

8.2 Samsung J5 8.2.1 Connection USB

Nécessite un port USB qui va bien. Choisir MTP.

9 Appareils photos

9.1 Gestion des cartes mémoire

1. Donner un nom à une carte. Insérer la carte dans le lecteur externe. Ne pas la monter. Puis: root execute mlabel -i /dev/sdf1 -s ::004_30G le nom unix de la carte telle que vue par le système unix puis le nom voulu: index, underscore, capacity (10 char max au total) 2. Il est préférable de re-formater les cartes sur l’appareil qui va les utiliser.

9.2 Création d’une page "voyage"

1. Forcer les dates au format dd/mm/yyyy dans konqueror en utilisant export LC_ALL=$LC_CTYPE ; konqueror & imposant en_BE.UTF-8 comme localisation. 2. Première action, copier les cartes dans des répertoires as_is, sans aucune modification. 3. Chaque répertoire de chaque carte Sony/Samsung ou chaque répertoire principal de chaque carte Nikon devrait contenir une photo de http://24timezones.com/Séoul/heure, de façon à gérer avec certitude la synchronisation ders appareils. 4. 2019: par suite d’une "mauvaise" gestion des dates lors de la casse de "Sony", il y a "beaucoup" à resynchroniser et il vaut mieux le faire tout de suite. On cree un fichier /home/douillet/Photos/DSC_sorted/liste-sorted.txt contenant des lignes: 2019-03_00C_15G_100PHOTO-deb/SAM_0109 affiche 2019-06-13 22:14:00 et alors

echo $line qui=$(echo $line | sed -e "s/ .*//") timtim=$(echo $line | sed -e "s/.*affiche//") timfic=$(ls -la --time-style=full-iso /home/douillet/Photos/DSC_as_is/$qui.JPG| sed -e "s/.*users [0-9]*//; s/[.].*//") echo $timtim echo $timfic echo $(( $(date -d "$timtim" +%s) - $(date -d "$timfic" +%s ) )) fournit les offsets à utiliser 5. Batch ~/Photos/DSC_sorted/copy-renum-DSC.sh (a) Les photos des cameras sont numérotées à quatre chiffres. Avec le temps, cela cycle. On modifie ce numéro, de façon à utiliser DSCKxxxx avec K = 0, 1, 2, 3, ... pour l’appareil Sony, DSCKxxxx avec K = N, P, Q, R, S, T, U ... pour l’appareil Nikon et SAMKxxxx avec K = 0, 1, 2, ··· pour l’appareil Samsung. Pour l’appareil Nikon, il faut examiner les sous répertoires. Il s’en crée un nouveau pour chaque paquet de 200... ou chaque fois que l’on passe de photo à film. On en profite pour ventiler ces photos dans des répertoires par jour, appelés yyyy-mm-dd.

80 10 SERVEUR APACHE

(b) Les photos des tablettes et des phones sont dans /card/DCIM/Camera lorsque les appareils sont configurés correctement (et dans /appareil/DCIM/Camera sinon). On constate qu’un répertoire surbooké (1189) n’est pas lu par le protocole adhoc (ou bien nécessiterait un temps si large). Lecture sous win$. Le nom originel d’un fichier est yyyymmdd_hhmmss (avec un numéro en cas de collision). (c) Ventilation par jour des fichiers camera dans le répertoire ~/Photos/DSC_sorted/PHOA condui- sant à des fichiers nommés ~/Photos/DSC_sorted/PHOA/2018-mm-dd/PHOA00xxx.jpg. Ici, xxx ∈ [201, 1249]. 6. Répertoire définitif (~/Photos/0_public_html/repertoire_definitif). (a) On y déplace les répertoires par jour (et donc write to pour les mouvements DSCx ). (b) 00-bin/nn_reperts.sh renomme les répertoires par jour en nn-day_dd-. Se placer dans un répertoire contenant la liste complète des "par_jour" : évidence à la création, manoeuvre à ne pas rater pour une incorporation... 7. Resynchronisations resync-fiches change les dates des fichiers docs ajoutés (caractérisés par le préfixe [0-9][0-9][0-9][0-9]-). Se placer à la racine du voyage. Détermine les jours et les mois nécessaires... par une méthode adhoc. resync-num renumérote les sous répertoires du répertoire courant. resync-Enfer après la subdivision du répertoire courant, ventile le contenu de l’Enfer courant dans les Enfers des sous répertoires (cherche les originaux des fichiers *.rot des sous- répertoires). resync-a changer les dates des fichiers modifiés (basename terminés par a) pour afficher celle du fichier original. On le cherche dans le répertoire courant, ou sans le prefixe thu/web ou dans l’Enfer. resync-dir change les dates des répertoires sous le répertoire courant. La date reflète désormais le plus ancien fichier *.jpg ou, sinon, du plus ancien sous-répertoire (les Enfer sont exclus, on commence par les feuilles de l’arborescence). resync-jpeg resync-rot 8. Rotations Lister chaque répertoire dans Gwenview et tourner les images qui en ont besoin. rotasimple.sh Cet exécutable est lié dans le répertoire /bin. Exécuter dans le répertoire contenent l’image. Creé un Enfer. Sauvegarde l’image si elle n’est pas déjà dans l’enfer. Fait tourner l’image, et écrit l’image modifiée en ajoutant -rot au nom du fichier (qui devient qqq-rot.jpg). Recopie la date du fichier sauvegardé. rotacontre.sh Tourne dans l’autre sens. rotaplus.sh ??? rotatour.sh Demi-tour. 9. Mise en oeuvre (a) Le plus simple est de couper en morceaux les images SONY. Un resync des répertoires donne les coupures pour les autres images. (b) horodate_photos.

10 Serveur apache 10.1 Principes de base 1. De SuSE − 10.2 à SuSE − 42.1, les rpm à installer sont (au minimum) : apache2, apache2-doc, perl, php5, apache2-mod_{perl,php5}. Quand on en a oublié un morceau, redémarrer le serveur...

81 10.2 Étapes de mise en route 10 SERVEUR APACHE

2. Une arborescence html est destinée à être consultée. Et cette consultation ne peut avoir lieu sans une intrusion de l’extérieur vers la machine qui exécute cette arborescence. Il s’agit de garder le contrôle de cette intrusion... et de ne pas ouvrir plus de portes que nécessaire. La règle de base est d’interdire en général et de n’autoriser qu’en particulier. 3. Un mécanisme de mascarade (cf le paragraphe correspondant) permet de monter différents ré- pertoires du système de fichiers à un endroit ou un autre du site (arborescence web). 4. Pour qu’un fichier soit web-accessible, il doit d’abord être unix-accessible par le serveur. Pour que la chose puisse fonctionner, il faut que chacun des répertoires emboîtés depuis la racine-fichiers soit exécutable worldwide (même s’il n’est pas lisible et encore moins inscriptible) et que chaque fichier utilisé soit lisible worldwide (sans être ni inscriptible ni exécutable). 5. En complément de ces autorisations Unix, il y a les autorisations Apache. Bien comprendre qu’il y a des autorisations dépendant de l’adresse réelle (directory) et d’autres de l’adresse de montage (location). Par ailleurs, il y a une hiérarchie et chaque niveau peut interdire la modification des contraintes par les niveaux inférieurs.

10.2 Étapes de mise en route 1. Lancement par /etc/init.d/apache2, en direct ou bien sous le contrôle du mécanisme des runlevels. Le fichier /etc/sysconfig/apache2 est utilisé pour configurer ce lancement (cf Sub- section 10.3). 2. Depuis la SuSE − 8.1, il faut fournir la page d’accueil racine (cf infra). Une possibilité est:

Redirect 3. Dans tous les cas, la page d’accueil est cruciale pour le référencement du site. 4. La configuration statique est déterminée par le fichier /etc/apache2/httpd.conf et les fichiers appelés par une directive Include (Subsection 10.4). Le batch qya_docs_apache permet de ras- sembler tout cela en un seul document, qui est plus facile à interroger. Remarque: lorsque http://localhost/server-info?config fonctionne, il est intéressant de comparer les direc- tives (batch) et leur résultat (info). 5. Dans la configuration SuSE −11.4 standard, l’utilisateur système est wwwrun:www, son répertoire de travail est /var/lib/wwwrun (chrooted). Auparavant, ce répertoire était /srv/www. La racine exportée est /srv/www/htdocs. Il y a un certain temps, le répertoire /usr/local/httpd était utilisé. 6. Page d’information sur le serveur http://localhost/ server-status. Depuis la SuSE−11.4, le comportement par défaut est de désactiver cette page. Pour l’activer, il faut imposer le chargement du module mod_status dans /etc/sysconfig/apache2. Et alors, le comportement par défaut est de restreindre cet accès à la machine locale. Ne pas changer cela. Ne pas positionner les tags STATUS et INFO (non bis in idem). 7. De même, l’existence de la page http://localhost/server-info est conditionnée par le char- gement du module mod_info.

10.3 Le batch de lancement 1. Pour SuSE −42.1, le batch de lancement est /usr/sbin/apachectl. Auparavant (SuSE −13.1), ce batch était /etc/init.d/apache2. Ce batch tire ses informations du fichier /etc/sysconfig/ apache2 (SuSE − 10.2) qui a été /etc/sysconfig/httpd (SuSE − 8.0) après avoir été réparti entre /etc/rc.config et /etc/rc.config.d/apache.rc.config (SuSE − 7.2). 2. Sous SuSE − 10.2, le batch de lancement commence par positionner à sa façon les variables pname, apache_link, logdir, pidfile, sysconfdir, sysconfig_apache. 3. Les commandes de marche-arrêt sont : start start httpd startssl start httpd with -DSSL stop stop httpd by a SIGTERM

82 10 SERVEUR APACHE 10.4 Fichiers de configuration

try-restart stop httpd then, if it was running before, start it again. restart stop httpd if running. then, in any case, start httpd reload start if not running or do a graceful restart by sending a SIGUSR1

4. Les commandes de contrôle sont : status check whether httpd is running [full-]server-status dump a [full-]status screen; requires mod_status enabled probe probe for the necessity of a reload, give out the argument which is required for a reload. (by comparing conf files with pidfile timestamp) configtest do a configuration syntax test extreme-configtest try to run httpd as nobody (detects more errors by actually loading the configuration, but cannot read SSL certificates)

5. Le batch commence par interpréter la configuration actuelle, et stocke ce qu’il en a vu dans le répertoire /etc/apache2/sysconfig.d (globals, includes, modules). 6. Puis les drapeaux APACHE_SERVER_FLAGS sont convertis en variables d’aiguillages qui seront trans- mises au programme principal (contrôle des fichiers de configuration à l’aide de tests IfDefined). 7. Modifier les points suivants de /etc/sysconfig/apache2 : APACHE_ACCESS_LOG : le nom de fichier est *.log et non *_log APACHE_MODULES : ajouter status, info, php5 APACHE_EXTENDED_STATUS= on APACHE_SERVER_FLAGS : ne pas ajouter STATUS (non bis in idem).

10.4 Fichiers de configuration 1. L’idée sous-jacente est d’utiliser /etc/sysconfig/apache2 pour positionner quelques drapeaux, et de placer la véritable configuration dans /etc/apache2 (depuis SuSE − 10.2) après avoir été dans /etc/httpd. Le résultat est plutôt d’embrouiller les choses. Être attentif à l’environnement existant lors du lancement du serveur. Il n’est pas indifférent d’être root ou seulement su root (en particulier le PATH n’est pas le même). 2. Les autres fichiers du répertoire sont appelés par des directives Include. 3. Les fichiers du répertoire /etc/apache2/extra ne sont pas utilisés. 4. Placer les fichiers *.conf additionnels en : /etc/apache2/conf.d/ httpd.conf error.log (et non error_log) info.conf, status.conf Allow from localhost, ::1 (à cause d’une modification de /etc/hosts, elle même dûe à un bricolage lié à Maple/Mathematica) Ne pas oublier de déclarer les modules dans /etc/sysconfig/apache2 server-tuning.conf Par défaut (SuSE − 10.2) StartServers 5, MinSpareServers 5, MaxSpareServers 10, ServerLimit 150, MaxClients 150, MaxRequestsPerChild 10000 Actuellement utilisé : start=50, min=10, spare=20 Sous SuSE − 8.1 il suffisait d’indiquer le type de serveur (slim/mid/thick/enterprise) dans /etc/sysconfig/apache mod_log_config.conf Les éléments de syntaxe sont: %h IP address of the client. If HostnameLookups=On, the server will try to determine the hostname and log it in place of the IP address. %l An hyphen, unless IdentityCheck=On. RFC 1413 identity of the client determined by identd on the clients machine. %u userid of the person requesting the document as determined by HTTP authentication.

83 10.5 Mpm 10 SERVEUR APACHE

%t time formatted as [dd/mmm/yyyy:hh:mm:ss zone]. Another format can be specified by %{format} \"%r\" : the request line (in double quotes). Can be splitted as "%m %U%q %H" into method, path, query-string, and protocol. %>s returned status code %b length of the object returned to the client, not including the response headers. given-header %{header}i \"%{Referer}i\" the "Referer" (sic) HTTP request header. \"%{User-agent}i\" the User-agent request header On s’en sert pour décrire des LogFormat (stockés dans mod_log_config.conf). common "%h %l %u %t \"%r\" %>s %b" vhost_common "%v %h %l %u %t \"%r\" %>s %b" referer "%{Referer}i -> %U" agent "%{User-agent}i" combined "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" ref_common "%h %l %u %t %>s %b \"%r\" <– \"%{Referer}i\"" Autrement dit: ip_of_client ; - ; userid ; time ; code_result ; length ; request (mUqh) <– referer Et il reste à déclarer le format choisi dans /etc/sysconfig/apache2 mod_userdir.conf Fichier capital... mod_php5.conf Examiner l’intérêt de distinguer php, php4, php5 htdig.conf A écrire conformément aux directives de Subsection 10.12 manual.conf Renommer en manual.conf-kill et remplacer par un fichier vide localdocs.conf A écrire conformément aux directives de Subsection 10.6.6

10.5 Mpm .Apache(2007)

10.6 Autorisations et mascarades 10.6.1 Mécanisme d’autorisation (SuSE − 42.1) Il s’agit d’un mécanisme hiérarchique, avec héritage des propriétés. 1. AllowOverride None, All, or any combination of Options, FileInfo, AuthConfig, and Limit. They control which options the .htaccess files in directories can override. 2. Options None, All, or any combination of Indexes, Includes, IncludesNoExec, FollowSymLinks, SymLinksIfOwnerMatch ExecCGI or MultiViews Note that MultiViews must be named explicitly : Options All doesn’t give it to you. 3. Allow, Deny . Les nouvelles constructions sont: Require all granted Require all denied Require ip 127.0.0.1 (rem: localhost n’est pas reconnu) Require user xxx constructions logiques, par emboîtements de : ... ...

Surveiller error.log pour détecter les .htaccess restés à l’ancienne syntaxe

84 10 SERVEUR APACHE 10.6 Autorisations et mascarades

10.6.2 Pour mémoire: l’ancien mécanisme d’autorisation

Ancienne méthode pour Allow, Deny: 1. Order allow, deny Allow from all 2. Order deny, allow Deny from all Allow from localhost xxx.xxx.xxx.xxx

10.6.3 Protection des racines

Le symbole þ indique un passage à la ligne. 1. Racine du système de fichiers local (SuSE − 10.2)

Options None þ AllowOverride None Order deny, allow þ Deny from all

2. La configuration SuSE − 8.1 était

AuthUserFile /etc/httpd/passwd Options -FollowSymLinks þ AllowOverride None

3. Racine exportée par le serveur

DocumentRoot "/srv/www/htdocs" Options None þ AllowOverride None Order allow,deny þ Allow from all

En particulier, il faut que le fichier de base du serveur s’appelle explicitement index.html, puisque les liens symboliques ne sont pas autorisés. 4. La configuration SuSE − 8.1 était

Options Indexes -FollowSymLinks +Includes MultiViews AllowOverride None Order allow,deny þ Allow from all DAV On

5. Protection des fichiers .htaccess

(a)( SuSE − 42.1)

AccessFileName .htaccess Require all denied

(b) SuSE − 13.1

AccessFileName .htaccess Order allow,deny þ Deny from all

(c) Il est donc raisonnable d’utiliser des noms comme .htaccess-old pour parquer d’ancienne versions.

85 10.6 Autorisations et mascarades 10 SERVEUR APACHE

10.6.4 Protection par mot de passe

1. Dans le répertoire à protéger, utiliser un fichier .htaccess comme suit: AddType application/x-httpd-php .php AuthUserFile /Computer_unix_directory/.htpasswd-xxx AuthName "Restricted Area" AuthType Basic # Require ip 193.48.37.00/24 # Require ip 89.159.240.192 Require valid-user 2. Dans une zone protégée du système de fichiers (allow override=none et protection en écriture), le fichier .htpasswd-xxx est comme suit: login_name:encoded_password:user_id:group_id:Real Name Le password est encodé avec mkpasswd (dans le package whois). 3.x

10.6.5 Mascarades 1. Répertoire principal des serveurs personnels UserDir public_html AllowOverride FileInfo AuthConfig Limit Indexes Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Order allow,deny þ Allow from all Order deny,allow þ Deny from all Indexes n’était pas spécifié pour SuSE − 8.1. 2. pictogrammes Alias /icons/ /usr/share/apache2/icons/ Options Indexes MultiViews þ AllowOverride None Order allow,deny þ Allow from all Était /usr/local/httpd/icons/ pour SuSE − 8.1.

10.6.6 Documentation

1. Configurer /etc/apache2/conf.d/manual.conf: Require ip 127.0.0.1. 2. Créer un fichier /etc/apache2/conf.d/localdocs.conf. Les Alias des sous répertoires doivent venir avant ceux des répertoires. Tout cela restreint à localhost. 3. Vérifier la syntaxe avant chargement. 4. Créer un fichier racine, servant de menu. 5. Ne pas oublier de placer des fichiers index.html aux bons endroits (redirection ou bien envoi sur un fichier d’accueil). 6. Dans ce cas, placer le manuel en /docs/apache

86 10 SERVEUR APACHE 10.7 Réglage des exécutables cgi, pl, php

7. Les alias : Alias /docs/howto "/usr/share/doc/howto/en/html" Alias /docs/opensuse "/usr/share/doc/manual/opensuse-manual_en/manual" Alias /docs/htdig "/usr/share/doc/packages/htdig/htdoc" Alias /docs/gimp "/opt/gnome/share/gimp/2.0/help/" Alias /docs "/srv/www/docs"  Ancienne gestion des fichiers de documentation (SuSE − 8.1 et précédentes) /docs/ /usr/share/doc/ /susehelp/ /usr/share/susehelp/docserver/ /var/lib/susehelp/pac /var/lib/susehelp/pac /usr/share/susehelp/img/ /usr/share/susehelp/img/ Alias /hilfe/ /usr/doc/susehilf/ Alias /sdb/ /usr/doc/sdb/

10.7 Réglage des exécutables cgi, pl, php 10.7.1 Réglage global 1. Les règles de sécurité imposent de confiner ce genre de fichiers dans des répertoires "sécurisés". 2. Pour SuSE − 10.2, /etc/apache2/httpd.conf contient : Include /etc/apache2/default-server.conf 3. Le fichier /etc/apache2/default-server.conf contient : (les deux premières lignes sont un patch d’une erreur de compilation de htdig) Alias /cgi-bin/images/star.gif /srv/www/gif/star.gif Alias /cgi-bin/images/star_blank.gif /srv/www/gif/star_blank.gif ScriptAlias /cgi-bin/ "/srv/www/cgi-bin/" AllowOverride None þ Options +ExecCGI -Includes Order allow,deny þ Allow from all Et alors les cgi-bin fonctionnent dans le répertoire cgi-bin (global) 4. Le fichier /etc/apache2/mod_perl-startup.pl contient : if ( ! $ENV{MOD_PERL}) { die "GATEWAY_INTERFACE not Perl!"; } use lib qw(/srv/www/perl-lib); use ModPerl::Util (); #for CORE::GLOBAL::exit use Apache2::RequestRec (); use Apache2::RequestIO (); use Apache2::RequestUtil (); use Apache2::ServerRec (); use Apache2::ServerUtil (); use Apache2::Connection (); use Apache2::Log (); use APR::Table (); use ModPerl::Registry (); use Apache2::Const -compile => ’:common’; use APR::Const -compile => ’:common’; 1; Et alors les cgi-bin fonctionnent dans le répertoire cgi-bin (global) 5. Le fichier /etc/apache2/conf.d/php5.conf contient : AddHandler application/x-httpd-php .php AddHandler application/x-httpd-php-source .phps DirectoryIndex index.php

87 10.7 Réglage des exécutables cgi, pl, php 10 SERVEUR APACHE

(chaque ligne en triple : php, php4, php5) Et alors les php fonctionnent partout. Placer php_test.php dans un répertoire sous password, de façon à ne pas révéler l’état intérieur du serveur.

10.7.2 Ancienne version de cgi/perl

1. version précédente (SuSE − 8.1):

Alias /cgi-bin-sdb/ /usr/local/httpd/cgi-bin/ ScriptAlias /cgi-bin/ /usr/local/httpd/cgi-bin/ Options None þ AllowOverride None þ Allow from all

Options +ExecCGI -Includes þ AllowOverride None SetHandler cgi-script

2. AddHandler : allows you to map certain file extensions to "handlers", actions unrelated to filetype. These can be either built into the server or added with the Action command To use server side includes outside ScriptAliased directories: To use CGI scripts outside ScriptAliased directories : "AddHandler cgi-script .cgi". Exemples anciens :

AddHandler perl-script .pl PerlHandler Apache::Registry PerlSendHeader On Options +ExecCGI

AddType text/html .shtml AddHandler server-parsed .shtml AddHandler cgi-script .cgi 3. Exécutables php

AddType application/x-httpd-php4 .php AddType application/x-httpd-php4 .php4 AddType application/x-httpd-php3-source .phps

10.7.3 Réglages des fichiers des utilisateurs

1. Le fichier /etc/apache2/mod_userdir.conf contient (avant la déclaration générale de userdir) :

ScriptAlias "/~ipse/cgi-bin/" "/home/ipse/public_html/tests/" AllowOverride FileInfo AuthConfig Limit Indexes Options Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Order allow,deny þ Allow from all Order deny,allow þ Deny from all

2. Et alors le répertoire /~ipse/cgi-bin/ se comporte activement, tandis que /~ipse/tests/ se comporte comme un répertoire banal (demande comment lire tout cela) Remarque : aucun fichier .htaccess n’est présent.

88 10 SERVEUR APACHE 10.8 Personnalisation des messages d’erreur (Apache style)

10.7.4 php

1. La doc php se trouve en http://localhost/docs/packages/phpdoc/manual/ 2. (Remarque SuSE − 8.1) : le répertoire /srv/www/htdocs/phpMyAdmin doit être sécurisé. 3. Voir la section spéciale...

10.8 Personnalisation des messages d’erreur (Apache style)

Regarder le répertoire /usr/share/apache2/error/ 1. plain text

ErrorDocument 500 "The server made a boo boo. # n.b. the (") marks it as text, it does not get output 2. local redirects

ErrorDocument 404 /missing.html # to redirect to local URL /missing.html ErrorDocument 405 /cgi-bin/missing_handler.pl # redirecting to a script or a ssi-doc 3. external redirects

ErrorDocument 402 http://some.other_server.com/subscription_info.html # N.B.: Many of the environment variables associated with the original request will *not* be available to such a script.

10.9 Webalizer SuSE − 42.1 10.9.1 Préparer les fichiers log

1. Les logs se trouvent en site/var/log/apache2 2. On les rapatrie dans le répertoire "originaux", i.e. ipse/qublic_bin/webalizer-new/access-log 3. Ils sont reçus compressés selon logrotate.conf par compresscmd /usr/bin/xz uncompresscmd /usr/bin/xzdec 4. Alors relook.sh commence par décompresser qui en a besoin. Puis les fichiers sont recompilés et envoyés vers "sources" i.e. originaux/../access-webalizer. Lorsqu’une re-compilassions existe déjà, et est plus récente que l’original, cette étape est sautée. 5. La re-compilation impose le format "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" Ici, le champs agent est simplement "Agent" (non collecté dans les logs) 6. C’est le bon endroit pour réintégrer des pages qui sont désormais redirigées, par exemple:

s¶glossary[.]pdf¶Glossary.pdf¶ 7. C’est long. Une fois les décompressions terminées, on peut lancer ./relook & plusieurs fois de suite. Chaque process commence tout de suite à écrire... et le process suivant saute donc le fichier en cours (ne pas oublier qu’il s’agit d’un processeur multi-tâche).

10.9.2 Webalizer proprement dit

1. On lance le processus, depuis le répertoire webalizer-new/build par la commande

webalizer -c webalizer.conf -p ../access-webalizer/basename_of_file_to_proceed 2. Le fichier webalizer.conf contient un nom de fichier par défaut (access.log), mais le nom passé en ligne de commande est prioritaire. L’option "-p" veut dire incrémental.

89 10.10 Webalizer (ancien) 10 SERVEUR APACHE

3. Dans le fichier *.conf, le répertoire de travail attribué à webalizer est webalizer-new/build/build. Durant la période de mise au point, il est utile de copier ce répertoire après avoir fini de compiler une archive donnée: cela permet de repartir de là, en cas de besoin. 4. Actuellement, les "pages" sont les fichiers htm*, cgi, php*, pdf 5. Les réglages globaux sont CountryGraph yes DailyGraph yes ; DailyStats yes HourlyGraph yes ; HourlyStats yes GraphLegend yes ; GraphLines 2 TopSites 30 ; TopKSites 10 ; AllSites no TopURLs 30 ; TopKURLs 10 ; AllURLs yes TopReferrers 30 ; AllReferrers yes TopAgents 15 ; AllAgents yes TopCountries 30 ; TopEntry 20 ; TopExit 20 ; TopSearch 20 ; AllSearchStr no TopUsers 20 ; AllUsers no 6. Regroupement shadow pour Sites. GroupSite 192.168.50* shadow ; HideSite 192.168.50* GroupSite 89-159-xxx-xxx* shadow ; HideSite 89-159-xxx-xxx* GroupSite 81-67-xxx-xxx* shadow ; HideSite 81-67-xxx-xxx* GroupSite madiran shadow ; HideSite madiran On remarque le mécanisme Hide pour n’afficher que les groupements, pas les détails. En outre, il faut fournir les noms "dns lookup", d’où les tirets dans les adresses 89- et 81-. 7. Regroupements des "bot" pour Sites GroupSite msnbot* MsnBot.*.search.msn.com ; HideSite msnbot* GroupSite *googlebot.com crawl.*.GoogleBot.com ; HideSite *googlebot.com 8. Regroupements pour Referrer douillet.info or ip . www.douillet.info /~douillet/* . /~ douillet/ local shadow 9. Possibilité de IgnoreReferrer. A exploiter. 10. Ajouter -N 0 lorsque l’on relance webalizer pour tout recalculer (pas de DNS look up) 11. Pour un bon affichage des querry-strings, il faut utf-8 (accents). Utiliser (ligne 24)

10.10 Webalizer (ancien) Les logs sont pollués par des coucous qui cherchent à se faire référencer, et il est difficile d’exploiter les fichiers obtenus : il faut utiliser des batch es complémentaires pour filtrer le travail de webalizer. 1. Ce programme exploite les fichiers /var/log/httpd/access.log... qui doivent donc exister et être maintenus à une taille raisonnable (cf Section 1.4). 2. Il est particulièrement intéressant d’avoir trace des Referrers, c’est à dire des liens qui ont amené à entrer dans le site. Il est donc nécessaire de configurer /etc/httpd/httpd.conf pour en garder trace : CustomLog /var/log/httpd/access.log combined 3. Drapeaux à positionner dans le fichier webalizer.conf Incremental yes DNSChildren 30 (permet d’accélérer le traitement) AllReferrers yes (page spéciale avec tous les Referrers du mois)

90 10 SERVEUR APACHE 10.11 Counter-cgi

GroupReferrer www.google google IgnoreURL /cgi-bin/Count.cgi 4. Le batch de lancement doit sélectionner les fichiers à prendre en compte : newer=$site/index.html for qui in ‘find $logdir/access.log* -newer $newer‘ ; do ... 5. Prétraiter les fichiers logs de façon à attribuer à Google les urls 216.239.xx.xx s¶http://216.239\.[0-9]*\.[0-9]*/search¶http://www.google.xx.xx/search¶g 6. Un post-traitement du fichier de statistiques permet de le mettre au look général du site (couleurs, boutons, etc).

10.11 Counter-cgi 1. La version installée en 2001 se laisse recopier d’une machine à l’autre. Il suffit de copier /srv/www/ cgi-bin/Count.cgi d’une part et /srv/www/Counter/ d’autre part (le sous répertoire datas doit appartenir à wwwrun). Par contre, une simple copie ne suffit pas lorsque les répertoires standard ont changé de place. 2. En tout état de cause, les sources wwwcount2.5.tar.gz. sont toujours (SuSE − 42.1) dispo- nibles sur le site http://www.muquit.com/muquit/software/Count/Count.html. Il n’est pas nécessaire d’imprimer la documentation depuis le site, car elle est incluse dans le fichier archive. Décompacter par gunzip * puis tar --extract --file=wwwcount2.5.tar. 3. Se placer dans le répertoire .../wwwcount2.5 qui vient d’être créé. Suivre la doc, c’est à dire lancer successivement make config.h ; make all ; make cfg ; make install. La configuration consiste en particulier à choisir les répertoires. 4. Le premier batch : make config.h donne à choisir certaines options. Nous retenons : CgiBinDir=/srv/www/cgi-bin BaseDir= /srv/www/Counter ConfDir= /srv/www/Counter/conf ConfFile=count.cfg DataDir=/srv/www/Counter/data DigitDir=/srv/www/Counter/digits LogDir=/var/log/counter LogFile=Count2_5.log 5. Puis make all. Cela crée diverses choses, attribuées à l’utilisateur 500:500. 6. Puis make cfg. Cela crée un fichier count.cfg. Automatic files création =y, strict mode =n. Laisser l’affichage des messages d’erreur dans la phase de tests, puis la supprimer (pour ne pas publier les répertoires effectifs). 7. La page de tests issue de testcount-sh peut être reprise pour en faire une page active. La nouvelle version figure dans les pages de test du site. 8. Configuration (1) : le répertoire ~Counter/data doit appartenir à l’utilisateur wwwrun. Les images à incruster doivent être placées dans les répertoires ~Counter/digits/xx. Et bien entendu : recopier les valeurs des compteurs qui sont dans DataDir 9. Configuration (2) : /srv/www/Counter/conf doit contenir: [ignore IPs] 127.0.0.1 192.168.50.* # localhost: doesn’t work [authorized] www.douillet.info 127.0.0.1 localhost # not the same as 127.0.0.1 192.168.50.*

91 10.12 Moteur de recherche htdig 10 SERVEUR APACHE

10. Utilisation effective : décrire le compteur comme un bouton de la barre de titre.

10.12 Moteur de recherche htdig Incomplet.

10.12.1 htdig (SuSE − 10.2)

1. Fichier /etc/apache2/conf.d/htdig.conf : Alias /htdig "/srv/www/htdig" AllowOverride None Order allow,deny Allow from all 2. Une erreur de compilation nécessite de masquerader les pictogrammes utilisés pour afficher les scores. /etc/apache2/default-server.conf contient : Alias /cgi-bin/images/star.gif /srv/www/gif/star.gif Alias /cgi-bin/images/star_blank.gif /srv/www/gif/star_blank.gif 3. Le répertoire confdir décrit dans htdig (SuSE − 8.1) a bougé de /srv/www/htdig/conf/ vers /etc/htdig/. Utiliser le même mécanisme de liaison.

10.12.2 htdig (SuSE − 8.1)

1. La documentation est toujours à l’adresse /usr/share/doc/packages/htdig. Tout le reste à changé de place (ancien emplacement : /opt/www/htdig). bindir /usr/bin : exécutables destinés aux créateurs des pages web. En particulier htdig, ht- merge. Anciennement /opt/www/htdig/bin . confdir Ce répertoire des fichiers de configuration est fixé à la compilation du fichier /cgi-bin/ htsearch. Mais il est raisonnable que les utilisateurs puissent les modifier. Compromis : placer ces fichiers dans ~/qublic_bin/htdig/conf/ et les lier vers $confdir. Actuellement /srv/www/htdig/conf/. commondir Contient les fichiers utiles pour la fabrication au vol des pages de recherche. En particulier header, footer, long, short. /htdig/ Contient les images utilisées pour les pages de recherche. Ce répertoire doit être déclaré par un alias dans httpd.conf. En principe /srv/www/htdig/images/. dbdir bases de données. Les placer dans un répertoire où l’utilisateur peut écrire ! 2. Exemple de commande : htdig -isv -c $1 ; htmerge -sv -c $1 3. La syntaxe est devenue plus stricte. L’affectation d’une variable se fait par "nom de variable", pas d’espace, deux points, espace, "valeur de la variable". 4. Le nombre d’items par page est matchesperpage et pas matches_per_page. 5. ??? décrire le mécanisme d’utilisation (questionnaire)

10.12.3 htdig (SuSE − 7.2)

1. Tout le barnum htdig se retrouve en /opt/www/htdig. Ce n’est pas génial, car cela mélange des fichiers de configuration, des exécutables destinés aux créateurs des pages web, des bases de données et des exécutables au vol (cgi-bin). 2. Créer des liens sur les exécutables depuis /opt/www/htdig/bin vers /usr/bin (de façon à les rendre accessibles sans surcharger le path). 3. Les fichiers de configuration servent à la fois à la création et à l’exploitation. Ils doivent se trouver dans le répertoire /opt/www/htdig/conf/htdig.conf (fixé une fois pour toutes à la compilation de /cgi-bin/htsearch). Mais il est raisonnable que les utilisateurs puissent les modifier. Compro- mis : placer ces fichiers dans ~/qublic_bin/htdig/conf/ et les lier vers /opt/www/htdig/conf/. 4. Créer des fichiers de configuration. En particulier déclarer un "nom de base". Exclure les fichiers *.css et *.mws 5. Commande: htdig -isv -c /opt/www/htdig/conf/nullix.conf

92 10 SERVEUR APACHE 10.13 Exploitation de httpd/error.log

10.13 Exploitation de httpd/error.log 10.13.1 Classer les erreurs par sortes

1. Gestion des fichiers error.log.bz2 : root recopie ces fichiers et les attribue à logger 2. Déziper tout cela. Faire attention : cela peut être volumineux... 3. Il reste ensuite à ventiler les différents messages par sortes. Le batch httpdian (user logger) fait cela. Au passage standardisation des adresses ip (trois chiffres par blocs) et réduction des redondances. err_autres Résidu de traitement des erreurs. err_cgi-bin Liste datée des problèmes de script. En gros : manquants ou placés dans un répertoire non exécutable. Il n’y a pas mention de la page appelante. err_conf_deny Liste datée des refus d’accès causés par la configuration du serveur. Concerne par exemple les fichiers /usr/share/doc/ err_counter Liste triée des fichiers manquants (non autorisés) pour le compteur /usr/local/httpd/Counter/digits/A/{button_count.gif, button_count2.gif} err_DB2 Messages non datés, issus de la compilation htdig. missing files like .../htdig/common/{synonyms.db, word2root.db}. err_file_deny Liste datée des refus d’accès causés par la configuration unix des fichiers (en particulier fichiers qui ne sont pas world-readable). err_link Utilisation de liens dans un répertoire non autorisé. Remplacer cela par des pages de redi- rection tant que l’on reste dans la partie exportée de l’arborescence.

/usr/local/httpd/cgi-bin/{Count.cgi, cgi_test.cgi, perl_test.pl, visitor.exe} list_file_deny Liste triée des pages dont l’accès est unix-interdit. list_missing Liste triée des pages manquantes, extraite de err_missing. msg_notice Messages datés signalement le lancement ou l’arrêt de httpd.

10.13.2 Erreurs de programmation

1. Lors d’un enchaînement (ring), après le dernier et avant le premier doivent être prévus. Exemple : ~/2001/Cours2001/cours01, ou les ansecpb. 2. Au passage : le grand blanc au début des fichiers cours, et autres (les macros a_tex ???) 3. Il faudrait un avertissement dans tous les fichiers codés avec T2H concernant la façon de configurer le navigateur.

10.13.3 Fichiers manquants

1. Les fichiers webweb/gif manquaient. Un certain nombre de pictogrammes sont maintenant dispo- nibles dans ~/gifs/. Créé le batch bin/Gif qui permet de créer une page avec ces pictogrammes. Placer cette page dans ~/webweb et aussi dans ~/gifs/ pour garder le contrôle du répertoire. 2. Les étoiles de htdig.

93 11 SAMBA DEPUIS NULLIX

3. Les fichiers dans les répertoires personnels : créer un fichier .htaccess (au plus près des fichiers manquants), contenant

## both addresses MUST be full-qualified Redirect 301 /~douillet/toto-old http:/~douillet/toto-new Bien entendu, tout cela est sous le contrôle de /etc/apache2/extra/httpd-userdir.conf. 4. Pour les fichiers dans le répertoire serveur : le même mécanisme présuppose l’ouverture des droits adéquats (la racine est mieux protégée que les individus). Cela se trouve dans /etc/apache2/ default-server.conf. 5. Une remarque (un peu ancienne), issue de phpMyAdmin. Est-elle toujours valable ? Dans un fichier .htaccess, les deux lignes suivantes ne produisent pas le même effet :

RedirectMatch 303 ^/[a-hj-oqs-z].* somewhere (seulement à la racine) RedirectMatch 303 /[a-hj-oqs-z].* somewhere (tout fichier)

10.13.4 Attaque contre winnt/system32/cmd.exe

Constaté la présence de paquets d’environ une dizaine de requêtes venant de 140 sites, constituant 40 commandes en tout (taux de coïncidence extraordinaire). Le principe est la recherche d’une adresse commençant par

MSADC/ PBServer/ Rpc/ _mem_bin/ _vti_bin/ _vti_cnf/ adsamples/ c/ d/ iisadmpwd/ msadc/ samples/ scripts/ et se continuant par un nombre variable de ..\ pour se terminer par winnt/system32/cmd.exe. Un certain nombre de \ sont masqués en %2f. L’objectif semble être un trou de sécurité dans un serveur, permettant d’accéder au système d’exploitation. Une exploration concernant les sites émetteurs est en cours. Il semble s’agir de sites ayant beaucoup de scripts java... et qui peuvent donc être eux-mêmes infectés.

11 Samba depuis Nullix 11.1 Validation de swat (Samba Web Admin Tool)

1. Le fichier /etc/services doit contenir une ligne décrivant ce service swat 901/tcp 2. /etc/inetd.conf : doit contenir une ligne swat ***ici***

Synchroniser inetd par la macro qsi_sync_inetd ou par la commande /sbin/init.d/inetd restart

11.2 Utilisation de swat

1. Appel par http://samba_server:901. 2. Avec l’option -a dans la ligne swat de inetd, pas de demande d’authentification. Mais on ne peut pas gérer smbpasswd ! 3. Avec des navigateurs raisonnables (konqueror, netscape, winie), il y a demande d’authentifica- tion. Si root n’a pas de mot de passe, refus de connexion. Ne semble pas "pam-compliant". Le navigateur kfm (jusqu’à SuSE − 7.1) n’est pas suffisant (rejet sans l’option -a, mais alors pas de mise à jour).  Avec SuSE − 7.2, l’interface swat a changé. Il faut activer explicitement les log.

11.3 Nullix vers win98 : smbclient 1. Avec SuSE − 8.1, le démarrage automatique de samba au boot de la machine se configure avec le runlevel editor. Il faut positionner smbd et nmbd (niveaux 3 et 5). Dans de plus anciennes versions, positionner le flag ad hoc dans /etc/rc.config.

94 12 SAMBA VERS NULLIX

2. Les fichiers de configuration sont dans /etc/samba après avoir été constitués du seul fichier /etc/smb.conf. Il faut mettre à jour [global]interfaces. Si l’on dispose de deux cartes, on peut donner les adresses des deux cartes. Le format xxx.xxx.xxx.xxx/b avec b le nombre de bits dans le masque est admis. 3. Vérifier que les noms des fichiers de log sont compatibles avec le mécanisme de nettoyage. 4. Pour exécuter samba sur le firewall, il faut autoriser les ports correspondants (137/139). Posi- tionner FW_SERVICES_INT_TCP en conséquence. On peut envoyer un message winpopup par la commande cat file | smbclient -M netbios_name 5. La commande smbclient -N -L netbios_name renvoie la liste des ressources exportées (=par- tagées) par une machine. Le message est diffusé sur les interfaces signalés. On peut forcer une adresse ip en la donnant (option -I). Added interface ip=90.0.0.77 bcast=90.0.0.255 nmask=255.255.255.0 Got a positive name query response from 90.0.0.110 ( 90.0.0.110 ) Sharename Type Comment FIRE_ZIP Disk FIRE_C Disk ceci est fire_c IPC$ IPC Communication entre processus distants WIN98$ Disk Partagé, mais non visible ($) 6. La commande smbclient //machine/ressource permet de faire du ftp (get, mget, put, mput, etc). 7. Les commandes smbmount //machine/ressource /mnt_rep -N ; smbumount /mnt_rep permettent de monter un répertoire win98 (distant) dans l’arborescence locale. On peut aussi utiliser la syntaxe smbmount "\\machine\ressource" -c ‘mount /mnt_rep -N -u 123 -g 456‘. Suppose que /usr/bin/ smbmnt, smbmount, smbumount sont setuid root.

12 Samba vers Nullix 12.1 Caveats 1. Il faut valider les changements de smb.conf, par la macro qss~, ou par swat (attention, il y a un délai résiduel dû au réseau, et certains champs ne sont lus par win98 qu’au moment du login de l’utilisateur sur sa propre machine). 2. Être attentif aux autorisations des répertoires. 3. Pour se faire obéir des machines winxx, et en particulier WinXP, écrire les deux lignes suivantes dans la base de registre :

HKLM/System/CurrentControlSet/Services/Browser/Parameters/MaintainServerList=No HKLM/System/CurrentControlSet/Services/Browser/Parameters/IsDomainMaster=False

12.1.1 Configuration win98 1. La pleine fonctionnalité est obtenue en adoptant la configuration "validation par utilisateur, logon de domaine". Donner l’adresse ip du pseudo-serveur nt, plutôt que son nom de fantaisie. 2. Lorsque l’on est en mode "validation par ressources", et qu’un utilisateur samba porte le même nom que l’utilisateur en cours sous win98, un mot de passe pour IPC$ est demandé. Il faut répondre le password samba correspondant à ce nom pour pouvoir continuer. Après cela, les services "browseable" apparaissent. 3. Lorsque l’on est en mode "validation par ressources" et que le nom de l’utilisateur (sous win98) est inconnu de samba, on tombe en mode "user par défaut" : les services publics apparaissent sans demande de mot de passe (map_to_guest=bad_user).

95 12.2 Fichiers samba.log 12 SAMBA VERS NULLIX

identification service S public P /home/smb_guest N nullix (nis) p path (nis) date T1 2000/07/22 T2 18:14:18 machine samba h Tartiflette L nullix v 2.0.5a R NT1 user (unix) mappé u zu g users H /home/zu user (win) requérant U zu G users machine requérante m think M 90.0.0.232 a Win95 I 90.0.0.232 d 1850 (process)

12.2 Fichiers samba.log 12.2.1 Mise en oeuvre

Incl. 16 mise en page des fichiers log. cd /var/log/samba cat <‌< EOF > .sed_fi0 /effective(5/{ s/effective/effec/ } EOF # les "vraies" substitutions cat <‌< EOF > .sed_fi1 s/2//g ; s/¶ / [tab]/g ; s/¶/\\[cr]/g EOF # redécoupage cat <‌< EOF > .sed_fi2 s/[tab] < [tab]/!/ ; s/[[tab]]*[ ]* $tmp2 diff --side-by-side --width 220 $tmp2 logvoid | tr \\f\\r\\n 22¶ > $tmp1 sed -f .sed_fi1 $tmp1 > $tmp2 ; sed -f .sed_fi2 $tmp2 > $file2

12.2.2 Extrait d’un fichier log (532) smbd/password.c:pass_check_smb ; smb_password_check failed. Invalid password given for user ’zu’ # essai depuis think sans mot de passe enregistré. échec et demande du mot de passe IPC$ (1030) lib/util_sock.c:client_name ; Gethostbyaddr failed for 90.0.0.232 # le password correct a été donné. affichage des ressources "nullix". Le nom ipx de la machine était connu dès l’origine puisque le fichier de log est lié au nom de la machine appelante... (521) smbd/service.c:make_connection ; think (90.0.0.232) connect to service zu as user zu (uid=501, gid=100) (pid 1850) (521) smbd/service.c:make_connection ; think (90.0.0.232) connect to service public as user zu (uid=501, gid=100) (pid 1850) (557) smbd/service.c:close_cnum ; think (90.0.0.232) closed connection to service public (557) smbd/service.c:close_cnum ; think (90.0.0.232) closed connection to service zu

12.3 Création d’un nouvel utilisateur 1. Nécessite au préalable l’existence d’un compte Unix sur le serveur (sinon : refus de smbpasswd) et d’un répertoire (sinon : message reçu sur machines win98 = " pas de serveur d’autorisation présent" ).

96 12 SAMBA VERS NULLIX 12.4 Groupe [global]

2. Attention aux droits d’accès ! Attribuer ~toto ailleurs qu’en /home/toto permet de distinguer les comptes créés pour samba des " vrais" comptes. Le shell /bin/false fait que toto ne pourra pas se connecter en tant qu’utilisateur Unix. Le squelette smbskel sert à ne pas avoir de squelette (le répertoire n’est créé que si -m est présent...) 3. Création automatisée du password unix : utiliser mkpasswd (package whois), pour fabriquer la chaîne de test qui sera stockée dans /etc/passwd ... ou plutôt dans /etc/shadow. En entrée : le password et un salt de 2 caractères. En utilisant toujours le même salt, on voit d’un coup celui qui n’a changé pas son password... pass=pas‘echo $1 | tail -c 5 | head -c 4‘ ssap=‘mkpasswd $pass 00‘ useradd -p $ssap -g samba -d /home/server/home/$1 -s /bin/false > -m -k /etc/smbskel $1 4. Ajout d’utilisateurs samba (a) en usage local, smbpasswd -a new_name (b) en usage distant, swat authentifié permet d’ajouter des utilisateurs avec mot de passe non vide (attention à une éventuelle conservation de l’authentification de root dans le user.pwl de la machine win98... car il ne semble pas s’enlever correctement avec pwledit). (c) swat -a ne permet pas d’ajouter des utilisateurs (identification nécessaire) !

12.4 Groupe [global] workgroup = MGROUP ; netbios name = MADRAS server string = SambA v=%v interfaces = 90.0.0.171/24 log file = /var/log/samba/log.%m ; loglevel = 3 security = USER

logon script = %U.bat domain logons = Yes domain master = True os level = 3 dns proxy = No wins support = Yes

encrypt passwords = Yes min passwd length = 0 passwd program = /usr/bin/passwd %u passwd chat = *new*password* %n\n *new*password* %n\n *succes*

keepalive = 30 read prediction = Yes read size = 8192 socket options = TCP_NODELAY character set = ISO8859-1

guest account = smb_guest create mask = 0770 directory mask = 0770 printcap name = /etc/printcap.smb print command = lpr -s -r -P %p %s Le logon_script doit être donné par son nom, et pas par son chemin Unix. Éditer ce fichier avec vi et pas avec kedit, qui retraduit les cr/lf ... printcap.smb est un fichier "miroir", décrivant les imprimantes exportées Le champs server string contient le commentaire affiché par win98 en mode détaillé. Équivaut au champ /réseau/identification/description sous win9x. De même pour les services avec le champ comment. Positionner encrypt passwords = yes est nécessaire.

97 12.5 Groupe [homes] 12 SAMBA VERS NULLIX

12.5 Groupe [homes]

comment = Repertoires_Utilisateurs path = /home/%u read only = No create mask = 0750 guest ok = Yes browseable = No

1. Avec browseable = No, il n’y a plus de pictogramme "homes", mais seulement le pictogramme "toto" 2. Avec %U, on a le nom tout en majuscules...

12.6 Groupe [netlogon]

comment = oh la la path = /home/server/home/netlogon.img guest ok = No read only = Yes browseable = No

File name handling : map hidden (map system) donne l’apparence d’un attribut hidden, ou system. Cette configuration suppose que le chemin /home/server/home/netlogon.img est composé de ré- pertoires lisibles (show entries) et exécutables (change into). Sans quoi, message "inaccessible". Attention : un fichier comme logon.bat (u=root, gr=root) peut être lu, mais pas réécrit par un autre utilisateur. Par contre, il peut être renommé et même supprimé, et ensuite être remplacé. Donc "non browseable" est tout indiqué. Il faut utiliser un script pour positionner correctement le propriétaire, le groupe et le mode d’exécu- tion du répertoire netlogon, de son contenu et de son chemin d’accès. Car avec les allers-retours win-unx, cela devient flou !

12.7 Groupe [cdrom]

path = /cdrom guest ok = Yes locking = No

12.8 Groupe [printers]

Ne pas oublier de positionner printcap name et print command dans la section [global].

[printers] comment = All Printers path = /tmp create mask = 0700 guest ok = Yes printable = Yes browseable = No [klein] comment = Exporte par madras path = /var/spool/lpd/mexico-lp-mexico read only = No create mask = 0700 printable = Yes printer name = mexico oplocks = No share modes = No

98 12 SAMBA VERS NULLIX 12.9 Commandes NET

12.9 Commandes NET NET description de la commande config Affiche les paramètres actuels de votre groupe de travail diag Exécute le programme de diagnostics réseau de Microsoft, qui permet d’afficher des informations de diagnostics concernant votre réseau help Fournit des informations concernant les commandes et les messages d’erreur init Charge les pilotes des protocoles et cartes réseau sans les lier au gestionnaire logoff Interrompt la connexion entre votre ordinateur et les ressources partages auxquelles celui-ci est connecté logon Permet de vous identifier en tant que membre d’un groupe de travail password Modifie votre mot de passe d’ouverture de session print Affiche des informations concernant les files d’attente d’impression et gère les tâches d’impression start Démarre les services stop Arrête les services time Affiche l’heure ou synchronise l’horloge de votre ordinateur par rapport à celle d’un serveur de temps Microsoft WfW, winNT, win 95 ou NetWare use Permet de se connecter à une ressource partagée, de se déconnecter de celle-ci, ou d’afficher des informations concernant les connexions. ver Affiche le type et le numéro de version du redirecteur du groupe de travail view Affiche la liste des ordinateurs qui partagent des ressources ou la liste des ressources partages sur un ordinateur spécifique

" Pour plus d’informations concernant une commande Microsoft NET particulière, entrez le nom de la commande suivi de /? (par exemple, NET VIEW /?)" .

12.9.1 Commandes NET USE Connecte ou déconnecte votre ordinateur des ressources partagées ou affiche des informations sur vos connexions. [lecteur: | *] [\\ordi\répert [password |?]] [/SAVEPW:NO] [/YES] [/NO] [port:] [\\ordi\printer [password | ?]] [/SAVEPW:NO] [/YES] [/NO] lecteur: | \\ordi\répert /DELETE [/YES] port: | \\ordi\printer /DELETE [/YES] * /DELETE [/YES] lecteur: | * /HOME

NET USE description de la commande lecteur Identifie le lecteur que vous affectez à un répertoire partagé * Identifie le lecteur suivant disponible. Utilisé avec le paramètre /DELETE, déconnecte l’ensemble de vos connexions port Précise le port parallèle (LPT) affecté à une imprimante partagée ? Le mot de passe de la ressource partage vous sera demandé Cette option n’est significative que si le mot de passe est optionnel /SAVEPW:NO Ne pas enregistrer le password entré dans votre fichier *.pwl. Vous devrez le retaper lors de votre prochain accès à cette ressource /YES Exécute la commande NET USE sans vous demander au préalable de fournir des informations ou de confirmer les opérations /DELETE Interrompt la connexion spécifiée sur une ressource partage /NO Exécute la commande NET USE, en répondant par NO automatiquement aux demandes de confirmation des opérations /HOME Effectue une connexion vers votre répertoire de base (spécifié dans votre compte utilisateur sur le gestionnaire réseau (LAN) ou WinNT no args NET USE sans paramètre affiche la liste des connexions en cours

12.9.2 Commandes NET TIME Affiche l’heure ou synchronise l’horloge de votre ordinateur par rapport à l’horloge partagée d’un serveur de temps Microsoft Windows pour Workgroups, Windows NT, Windows 95 ou NetWare.

99 12.10 Exemple de dialogue 13 PHP

NET TIME [\\ordinateur | /WORKGROUP:wgname] [/SET] [/YES]

NET TIME description de la commande ordinateur Identifie le serveur de temps interrogé, ou par rapport auquel vous souhaitez vous synchroniser /WORKGROUP Permet d’utiliser un serveur situé dans un autre groupe wgname Identifie le groupe incluant le serveur de temps interrogé, ou par rapport auquel vous souhaitez vous synchroniser Si plusieurs serveurs de temps sont présents dans ce groupe, NET TIME utilise le premier qu’il rencontre /SET Synchronise l’horloge de votre ordinateur par rapport à celle de l’ordinateur ou du groupe de travail désigné /YES Exécute la commande NET TIME sans vous demander d’entrer des informations ou de confirmer des opérations

12.10 Exemple de dialogue ... à écrire !!!

12.11 Autres remarques dans une fenêtre réseau, on voit une icône... et elle demande un mot de passe sur une machine et pas sur l’autre !!!

13 php

Tout ceci est écrit pour php5, sous SuSE − 42.1. 1. On peut tester en utilisant php xxx.php dans une console. Bien comprendre que tout se passe en server-side, et pas en user-side. Consulter les logs du serveur est utile. 2. Utilisation: pages de scripts pour diverses actions. Emplacements: (a) ~/public_html/etc (b) ~/public_html/wiki_scripts (c) ~/public_html/yeong Bien entendu, ces emplacements doivent être configurés localhost only. 3. Utilisation des routines curl(). Nécessite php5-curl (un reboot du serveur apache est néces- saire).

13.1 wikipedia api 1. include "class_http.php" ; // requires php5-curl package and a reboot of web-server 2. include "class_wikipediaapi.php" ; $wpapi = new wikipediaapi; 3. include "class_wikipediaindex.php" ; $wpi = new wikipediaindex; 4. include "class_wikipediaquery.php" ; $wpq = new wikipediaquery; 5. Passwords, etc dans include "cluebot3.config.php" ;

13.1.1 wikipediaapi

Exemple d’objet $wpapi s’écrit object(wikipediaapi)#2 (6) { ["http":"wikipediaapi":private] => &object(http)#3 (4) { ["ch":"http":private]=> resource(6) of type (curl) ["uid":"http":private]=> string(7) "1346008" ["postfollowredirs"]=> int(0) ["getfollowredirs"]=> int(1) }

100 14 PHPMYADMIN

["edittoken":"wikipediaapi":private]=> NULL ["tokencache":"wikipediaapi":private]=> NULL ["user":"wikipediaapi":private]=> NULL ["pass":"wikipediaapi":private]=> NULL ["apiurl"]=> string(34) "https://en.wikipedia.org/w/api.php" }

13.1.2 myrevi

myrevi ($page,2,’newer’,[false,null,true,false,true,false]) donne:

array(2) { ["continue"]=> array(2) { ["rvcontinue"]=> string(24) "20190207042715|882151069" ["continue"] => string(10) "||userinfo" } ["query"]=> array(2) { ["pages"]=> array(1) { [59856462]=> array(4) { ["pageid"]=> int(59856462) ["ns"]=> int(100) ["title"]=> string(14) "Portal:Walmart" ["revisions"]=> array(2) { [0]=> array(5) { ["revid"]=> int(881773461) ["parentid"]=> int(0) ["user"]=> string(6) "Gazamp" ["timestamp"]=> string(20) "2019-02-04T18:47:00Z" ["comment"]=> string(16) "Recreated portal" } [1]=> array(5) { ["revid"]=> int(881823449) ["parentid"]=> int(881773461) ["user"]=> string(15) "Dreamy Jazz Bot" ["timestamp"]=> string(20) "2019-02-05T01:21:42Z" ["comment"]=> string(144) "Portal needs incoming links... etc" } } } } ["userinfo"]=> array(2) { ["id"]=> int(10847608) ["name"]=> string(5) "Pldx1" } } } ------on pose $x[’query’][’pages’] as $key => $data $data[’revisions’][’ns’] = $data[’ns’]; $data[’revisions’][’title’] = $data[’title’]; $data[’revisions’][’currentuser’] = $x[’query’][’userinfo’][’name’]; $data[’revisions’][’continue’] = $x[’query-continue’][’revisions’][’rvstartid’]; ??? $data[’revisions’][’pageid’] = $key; return $data[’revisions’]

14 phpMyAdmin

Tout cela s’applique aussi pour SuSE − 13.1.

101 14.1 Lancer/Configurer mysql 14 PHPMYADMIN

14.1 Lancer/Configurer mysql 14.1.1 Attention aux droits et privilèges

Avant de passer au ’premier lancement’, voici la description de quelques manoeuvres de secours, testées sur SuSE − 11.3 et SuSE − 13.1. 1. Le démon mysqld doit être exécuté par l’utilisateur système mysql (#60). C’est ce qui se passe par défaut. Et donc, une utilisation par root est nocive: cela va créer des objets appartenant à root, que l’utilisateur mysql ne pourra plus supprimer. Le programme mysqld_safe sert à gérer cela. 2. Lorsque l’on a perdu le mot de passe du super-user: https://www.howtoforge.com/reset-forgotten-mysql-root-password

(a) commencer par arrêter mysql avec

/etc/init.d/mysql stop

(b) lancer une version de secours par:

mysqld_safe --skip-grant-tables --skip-networking &

(c) changer le password de root par: (le deuxième mysql est le nom de la base de gestion)

mysql --user=root mysql mysql> update user set password=PASSWORD("NEW-PASSWORD") where User=’root’; mysql> flush privileges; mysql> quit

(d) arrêter, puis relancer.

$cfg[’Servers’][$i][’pma__table_uiprefs’] = ’pma__table_uiprefs’;

14.1.2 Premier lancement

1. Le répertoire contenant la base maga a été placé en /var/lib/mysql/ 2. Si l’on utilise YaST et les run-levels pour ce premier lancement... on ne voit rien. Si l’on utilise /etc/init.d/mysql start, on voit s’afficher les messages suivants :

(a) Creating MySQL privilege database... (b) Installing MySQL system tables... OK (c) Filling help tables... OK (d) PLEASE run: /usr/bin/mysql_secure_installation which will also give you the option of removing the test databases and anonymous user created by default. This is strongly recommended for production servers. See the manual for more instructions. (e) Looking for ’mysql’ in: /usr/bin/mysql... OK

3. De SuSE − 11.3 à SuSE − 13.1: utiliser /usr/bin/mysql_secure_installation (une fois le serveur lancé). La première connexion est sans mot de passe. Puis on choisit le mot de passe de root. En outre, limiter les connections de root au seul localhost (peut-il alors se connecter avec un ssh ???).

4. Créer les utilisateurs nécessaires pour amarok, etc et wiki par

GRANT ALL ON amarokdb.* TO ’amarokuser’@’localhost’ IDENTIFIED BY ’password’; GRANT ALL ON etc.* TO ’etcetc’@’localhost’ IDENTIFIED BY ’password’; GRANT ALL ON thewikidb.* TO ’thewikiuser’@’localhost’ IDENTIFIED BY ’password’; GRANT ALL ON arbcomdb.* TO ’arbu’@’localhost’ IDENTIFIED BY ’password’; FLUSH PRIVILEGES;

102 14 PHPMYADMIN 14.2 Installation/Configuration de phpMyAdmin

14.1.3 Configuration de mysql 1. Quand mysql "déraille" et que l’on veut tout recharger, il faut aussi supprimer le répertoire /var/lib/mysql. 2. Les deux commandes suivantes sont données "pour mémoire". Le changement du password du control-user se fait tout aussi bien par mysql_secure_installation (la première fois) ou par phpMyAdmin. 3. Pour tester un password avec mysqladmin, utiliser la commande (défaut -u : celui qui lance la commande, defaut -h : localhost, defaut -p : passwd vide) : /usr/bin/mysqladmin -u "the_user" -h full_qualified_name_of_host --password="the_old_passwd" ping 4. Pour changer un password avec mysqladmin, utiliser la commande /usr/bin/mysqladmin -u "the_user" -h full_qualified_name_of_host --password="the_old_passwd" password "the_new_passwd"

14.1.4 Pour mémoire (tentatives de bricolage de mysql) 1. Ce qui suit constitue une tentative... et n’est pas une configuration requise. Au contraire, laisser des passwd en clair est toujours nocif : ne rien faire. 2. Dans /etc/my.cnf, il y a la possibilité des commandes suivantes (qui, entre autres, créent /var/lib/mysql/master.info): CHANGE MASTER TO MASTER_HOST=’localhost’, MASTER_PORT=3306, MASTER_USER=’admin_php’, MASTER_PASSWORD=’toto’; ## et pas : master-user = ; master-password =

14.2 Installation/Configuration de phpMyAdmin 14.2.1 Installation 1. Fait à nouveau partie de la distribution standard dans la SuSE − 42.1. 2. N’était plus fourni dans la SuSE − 11.3. Il fallait donc passer par l’adresse: http://software.opensuse.org/search?q=phpmyadmin&baseproject=openSUSE%3A11.3&lang= en# On obtient, au choix, soit le *.rmp, soit un "one click install". Le "one click install" est un YUM, contenant entre autres http://download.opensuse.org/repositories/server:/php:/applications/openSUSE_11. 3/ Il est alors proposé d’inclure cette adresse dans la liste des dépositaires agréés (mécanisme YUM, demandant l’accord de root). Le serveur apache s’installe s’il n’existait pas encore (se reporter à Section 10 pour tester la mise en service du serveur apache). 3. Le barnum phpMyAdmin s’installe en /srv/www/htdocs/phpMyAdmin. Une copie de la doc se trouve en /usr/share/doc/packages/phpMyAdmin. 4. Lancer le serveur web. Vérifier les restrictions d’accès au répertoire racine. Par exemple, dans un fichier .htaccess, les deux lignes suivantes ne produisent pas le même effet : RedirectMatch 303 ^/[a-hj-oqs-z].* somewhere (seulement à la racine) RedirectMatch 303 /[a-hj-oqs-z].* somewhere (tout fichier) 5. Le fichier /etc/apache2/conf.d/phpmyadmin.conf est créé automatiquement par YaST. Il contient : php_admin_flag register_globals off php_admin_flag magic_quotes_gpc off php_admin_flag allow_url_include off php_admin_flag allow_url_fopen off php_admin_value open_basedir "/srv/www/htdocs/phpMyAdmin:/tmp"

103 14.3 Propriétés étendues 14 PHPMYADMIN

14.2.2 Configuration

1. Un appel en http://localhost/phpMyAdmin conduit à l’écran de base si et seulement si le fichier de configuration existe. La doc est accessible à partir de cet écran. 2. Le fichier de configuration est /etc/phpMyAdmin/config.inc.php. S’il n’existe pas, on peut se servir de /srv/www/htdocs/phpMyAdmin/config.sample.inc.php 3. Création de l’utilisateur ipse@%, par copie de root, en utilisant phpMyAdmin. Bilan : pas de password et pas de privilèges. On recommence avec host=localhost. Et cela marche.  Problèmes avec /etc/phpMyAdmin/config.inc.php. La ligne 191 doit être $cfg[’Servers’][$i][’pma__table_uiprefs’] = ’pma__table_uiprefs’; et pas [’table_uiprefs’]... $cfg[’Servers’][$i][’recent’] = ”; et pas ’pma__recent’

14.3 Propriétés étendues 1. When $cfg[’Servers’][$i][’controluser’] = ” and $cfg[’Servers’][$i][’controlpass’] = ” i.e. at the beginning, we get the message: The phpMyAdmin configuration storage is not com- pletely configured, some extended features have been deactivated. To find out why click here. 2. Il faut distinguer control-user et user. Le premier est l’utilisateur privilégié qui se connecte à mysql pour exécuter phpmyadmin. Cet utilisateur est imposé, et se règle dans le fichier config.inc.php. Le second est le simple utilisateur, désigné dans le cookie.

$cfg[’blowfish_secret’] = ’zoravedo’; /* MUST be filled in for cookie auth! */ $cfg[’Servers’][$i][’controluser’] = ’zoraroot’; $cfg[’Servers’][$i][’controlpass’] = ’zorapass’; 3. Nous avons besoin d’une base de données et d’une activation

GRANT ALL ON phpmyadmin.* TO ’zoraroot’@’localhost’ IDENTIFIED BY ’zorapass’; 4. **************** not functionnal **********************

14.4 La base de données maga 14.4.1 La table in_tabliss_scott 1. Création CREATE TABLE ‘in_tablis_scot‘ ( ‘rcs‘ VARCHAR(9) NOT NULL, ‘owner‘ TEXT NOT NULL, ‘type‘ TEXT NOT NULL, ‘cod_txt‘ TEXT NOT NULL, ‘cod_num‘ TEXT NOT NULL, ‘adresse‘ TEXT NOT NULL, ‘cp‘ VARCHAR(5) NOT NULL, ‘ville‘ TEXT NOT NULL ) ENGINE = myisam CHARACTER SET utf8 COLLATE utf8_unicode_ci; 2. Alimentation

14.5 La base de données ETC-Kimberling Ne pas oublier: GRANT FILE ON *.* TO ’arbu’@’localhost’

104 15 TRANSFERT DE FICHIERS 14.6 La base de données yeong (Yeonguijeong)

14.6 La base de données yeong (Yeonguijeong)

1. mysql doit pouvoir écrire dans .../yeong

14.7 La base de données trager 14.8 thewiki

Trying to use mediawiki. 1. Autorisation

GRANT ALL ON thewikidb.* TO ’thewikiuser’@’localhost’ IDENTIFIED BY ’password’;

2. Configuration

name=LocalWiki username=LocalUser password= account_required no_outbound_mail SyntaxHighlight_GeSHi file_upload=yes Instant_Commons=yes caching=no

3. Cela crée 49 tables... 4. Importer LocalSettings.php dans your_base_dir_of_mediawiki/.

15 Transfert de fichiers

15.1 fish

Réalise un ftp sur base de ssh. Les icônes "remote view" se trouvent en $ipse/.kde4/share/apps/ remoteview. Depuis (au moins) SuSE − 11.4, on peut les modifier directement sous konqueror (pro- priétés). Vérifié SuSE − 42.1.

15.2 Synchronisation : unison

1. L’idée même de synchronisation est dangereuse. Synchroniser ne dispense pas des sauvegardes, au contraire.

15.2.1 Installation de la version du package

1. La machine locale et la machine distante jouent des rôles qui ne sont pas totalement symé- triques. Le programme local s’exécute à travers un frontal graphique (unison) ou bien en mode batch (unison -ui text). Pour établir la connexion, le processus local lance la commande ssh distant unison -server. Il en résulte un processus distant dont la première action est de renvoyer le résultat de unison -version. 2. Lorsque les deux processus n’ont pas le même numéro de version, le dialogue échoue. Quoiqu’en pensent ceux qui pensent autrement, cette disposition est une bonne décision : safety first. Les données ne seront pas redonnées... 3. Une première étape est donc d’installer la version fournie par la distrib puis de renommer le fichier /usr/bin/unison avec son nom complet + architecture et de poser un lien. Voici les versions que nous avons rencontré :

105 15.2 Synchronisation : unison 15 TRANSFERT DE FICHIERS

unison-2.09.1-32 SuSE − 8.1 1,597,068 unison-2.17.1-32 SuSE − 10.2 2,133,260 unison-2.17.1-64 SuSE − 10.2 2,656,448 unison-2.27.57-32 SuSE − 11.0 2,172,120 unison-2.27.57-64 SuSE − 11.0 2,688,136 unison-2.32.52-64 SuSE − 11.3 3,470,832 unison-2.32.52-64 SuSE − 11.4 3,505,880 unison-2.40.102-64 SuSE − 13.1 4,812,256  Pour SuSE −10.2 (et les précédentes), le filepif n’était pas fourni dans le package. Le placer dans /usr/share/applications et le pictogramme dans /usr/share/pixmaps/unison.png.

15.2.2 Compatibilité vers le passé

Cela consiste à utiliser l’exécutable (ou la *.rpm) d’une version ancienne sur une machine nouvelle. 1. Dans cet ordre d’idées, il est donc raisonnable de télécharger d’avance l’exécutable winxx pour chaque version et de le tester. Cf http://www.cis.upenn.edu/~bcpierce/home.html Installation de la 2.9.1 1. La version 2.9.1 date de la SuSE − 8.1. Son nom complet est /usr/bin/unison-2.09.1-linux- gtkui2, 1597068 octets. 2. Elle s’installe simplement sur SuSE − 10.2 par recopie de l’exécutable. 3. Pour SuSE − 11.0, il faut charger les packages libgtk1 (de la distrib). En effet, unison-2.27.57 (version native à SuSE − 11.0) utilise libgtk2. Installation de la 2.17.1 1. Attention à ne pas confondre les versions 32 et 64 bits. Le batch unison-tous permet de s’y retrouver : for qui in /usr/bin/unison* ; do if test $qui == "/usr/bin/unison-tous" ; then continue ; fi echo -n "$qui -> "; $qui -version 2> /dev/null || echo done 2. Elle s’installe simplement sur SuSE − 11.3 par recopie de l’exécutable.  Pour la SuSE − 11.4, une recopie de l’exécutable conduit à un résultat asymétrique. La machine peut être appelée, mais elle ne parvient plus à appeler elle-même (le processus ssh tourne en boucle). Installation de la 2.32.52, avec la *.rpm de la SuSE − 11.4  La machine locale n’arrive pas non plus à appeler (même en utilisant la version de la distribution). Pour SuSE − 13.1, aucune des versions précédentes ne réussit au lancement du ssh (alors qu’un lance- ment direct de la commande ssh réussit).

15.2.3 Compatibilité vers le futur

Tenter d’installer un *.rpm plus récent sur une machine plus ancienne conduit à une chasse à la librairie manquante. On tente donc d’installer depuis les sources. 1. Les nombreuses versions sont archivées et accessibles. Par exemple : http://www.seas.upenn.edu/~bcpierce/unison//download/releases/unison-2.40.102/ Charger cela (et le manuel) dans un répertoire local, par exemple /home/distrib/unison/unison- 2.40.102 2. Prérequis: Il faut : Gnu-make. Taper make --version pour vérifier. Objective Caml, i.e. ocaml, lablgtk2, lablgtk2-devel lpng14 , i.e. libpng14 et libpng14-devel 3. Lancer la compilation, commande make. Cela donne un exécutable et root le place là où il faut. Lui donner le nom unison-2.40.102-64. Cela fonctionne avec SuSE − 11.3 (mahjong) et SuSE − 11.4 (mirabel).

106 15 TRANSFERT DE FICHIERS 15.3 Clients ftp

4. Lorsque le lien "unison" de la machine distante ne pointe pas vers la version voulue, il suffit alors de lancer unison-verx -servercmd unison-verx 5. x.

15.2.4 Utilisation

1. Les arborescences sont décrites dans par les fichiers ~/.unison/*.prf. Cela permet en particulier de synchroniser des taches dont les fichiers se trouvent dans plusieurs répertoires. 2. Il est utile d’indiquer dans le nom de chaque fichier *.prf quel est le sens du transfert (pour pouvoir copier ces fichiers d’une machine à l’autre sans embrouiller les réglages). 3. Utiliser time=true ne fonctionne fiablement que si les toutes les machines sont en utc (Universal Time for Computers). De toutes façons, il faut absolument utiliser cette option. 4. Utiliser users=true ne fonctionne fiablement que si les userid (de /etc/passwd) sont synchronisés. Bien entendu, il faut disposer des droits en écriture (tester tout cela en détail avant d’y croire vraiment)

15.3 Clients ftp 15.3.1 Accès par un navigateur

1. Utiliser l’url ftp://hostname donne accès à la racine publique du serveur. Pour accéder à l’ar- borescence d’une personne, utiliser ftp://user@passwd:hostname. 2. Ce à quoi on accède est dépend de la configuration (chrooted ou non) du serveur.

15.3.2 Client ftp dans une console unix 1. Quelques commandes nom exécution distante exécution locale where pwd !pwd cd cd lcd transfert put / mput get / mget On insiste : get transfère depuis l’autre machine vers la machine qui exécute le client ftp. Si ce client est exécuté sur la machine distante...  comment faire un effacement (sur place) un caractère au prompt ftp (à part utiliser backspace) ?

15.3.3 Client gftp

1. Ce programme s’installe en /opt/gnome/bin/gftp. Si ce répertoire a été viré du path, il faut créer un lien dans $ipse/bin. Pour SuSE − 10.2, le pictogramme est dans menu_kde/System/File_ Manager. Pour SuSE −9.3, un pictogramme se crée dans le sous-menu menu_kde/internet, mais on ne le voit pas (le sous-menu ne s’ouvre pas quand il n’existe qu’un seul item...). 2. S’exécute en mode graphique ou en ligne de commande selon le contexte. Intérêt principal : multithread, conservation de la date par download, rappel automatique réglable. 3. Edit_bookmarks : ok sert à terminer. Pour éditer un site, cli-click. Un souligné devant une lettre sert à donner un raccourci. 4. Les bookmarks se trouvent dans ~/.gftp/bookmarks. Déplacer tous les liens fournis vers un répertoire global par la commande : sed -e "s¶\[¶[_Z-archive/¶"  Pour une raison pas claire, il faut déclarer ssh comme protocole entre monalisa et midnight pour bénéficier de la vitesse voulue. D’ailleurs, c’est le bon protocole.  Ne veut pas transférer /usr/bin/unison vers .... /home/distrib/extra/unison. Alors que ftp veut bien. Plus généralement, ne transfère pas les fichiers dont je ne suis pas propriétaire, même s’ils ont l’attribut readable. 5. Remarques à compléter, datant de la SuSE − 8.1 :

107 15.4 Serveurs ftp 15 TRANSFERT DE FICHIERS

 Ne compare pas les sous-répertoires lors d’une comparaison de fichiers.  Lors d’un upload, copie le contenu des liens et pas le lien lui-même, y compris quand le fichier lié existe.  La synchronisation est mal gérée. Un transfert entre deux machines utilisant des dates CET donne lieu à un décalage car les dates à distance ne sont pas converties tandis que les dates locales le sont. Préférer unison pour synchroniser.  Les passwords sont stockés en clair dans ~/.gftp/bookmarks. Avec la version 2.0.18 (SuSE−9.3) les passwords sont légèrement cachés par un algorithme bricolé.

15.3.4 Pour mémoire : Xftp Xftp est un client ftp avec fenêtre X. 1. N’est pas très efficace (pas de reprise sur erreur). 2. On peut faire des suppressions récursives en allant dans le fichier de configuration.

15.3.5 Pour mémoire : IglooFTP 1. Autre client ftp. La pub pour unix : IglooFTP PRO is an award winning FTP Client. Its main features are to be easy to use and intuitive when used by novice, but powerful and fully configurable in the hand of experienced users. IglooFTP PRO makes full usage of the GTK+ library and offers much more features than any other graphical client available on Unix based systems including FXP transfers, secure FTP connections through the Secure Sockets Layer (SSL v2/v3), Transport Layer Security (TLS v1), and Stanford SRP protocols, MD4 / MD5 / SHA1 encrypted passwords, advanced FTP operations, full transfer resume, Remote Directory Caching, URL clipboard monitoring, enhanced Firewall support, Drag & Drop, and much, much more... IglooFTP PRO fully supports secure FTP connections through SSL, TLS and SRP protocols. 2. Une version de démonstration est la version 0.6.1-453 (alpha), distribuée avec la SuSE − 8.0. Elle est située CD3/xap3, et fait partie du groupe /Productivity/Networking/Ftp/Clients. 3. Téléchargement : ftp://iglooftp.com/pub/linux/IglooFTP-PRO-1.2.3-1.i386.rpm. 4. Essaie de ressembler à WS_FTP. La synchronisation des répertoires (F11) ne fonctionne pas très bien.  Pas de préservation de la date lors d’un upload. Lors d’un download, la date n’est préservée que si le fichier destination n’existait pas. Sinon : date du jour.

15.3.6 Pour (mauvaise) mémoire : kbear

1. Disponible à l’adresse: http://kbear.sourceforge.net/. On y trouve en particulier un *.rpm pour SuSE − 8.1 et KdE 3.0.3.  Le système d’aide ne se déroule pas jusqu’au bout (lien foireux).  Rien ne semble prévu quant aux dates des fichiers.  La fonction "synchroniser" est foireuse : pile de boites d’erreurs quand appliquée aux suse/patches ; dix fichiers détruits lors d’une tentative madras/moonlight  Les raccourcis claviers sont foireux. Exemple : [M − up] ne s’applique pas à la fenêtre qui a le focus, mais à la dernière fenêtre connexion crée. Puis, une fois à la racine, à l’autre fenêtre.

15.4 Serveurs ftp 15.4.1 Généralités 1. Ce service suppose... l’installation du package contenant le serveur... 2. Ce service est lancé par xinetd, lui même activé dans les runlevels. 3. Ce service ne fonctionne... que s’il est autorisé par les firewalls des deux machines concernées 4. Commencer par des tests en local. 5. Il vaut mieux envoyer le traçage des opérations vers un fichier *.log spécifique au serveur. En connexion anonymous

108 15 TRANSFERT DE FICHIERS 15.5 Torrents

1. Le répertoire de base est /srv/ftp. Il était autrefois /usr/local/ftp. Y placer un marqueur racine_ftp. 2. Les droits de ce répertoire sont root:root rwxr-xr-x. Les opérations qui ont lieu sur ce réper- toire sont exécutées au nom de ftp:daemon. Les autorisations doivent être données en consé- quence. 3. En particulier, il faut un répertoire incomming, avec pour droits root:root rwx-wx-wx. L’utilisa- teur anonyme peut donc y écrire des fichiers. Mais les droits relatifs à ces fichiers sont ftp:daemon rw-r–––, et l’utilisateur anonyme ne peut pas les lire (ni même les voir). En connexion nominale 1. Il faut un compte avec un mot de passe non vide, et ne pas être root.

15.4.2 Serveur in.ftpd 15.4.3 Serveur vsftpd

Ce serveur est apparu avec la SuSE −8.0. La configuration décrite Alg. 17 nous semble intéressante.

Incl. 17 Configuration de vsftpd. anon_upload_enable=YES anon_world_readable_only=YES anonymous_enable=YES chown_uploads=YES chown_username=ftpsecure chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list chroot_local_user=YES connect_from_port_20=YES dirmessage_enable=YES ftpd_banner="Here is xxxxx \n Unauthorised login prohibited." local_enable=YES local_umask=022 nopriv_user=ftp pam_service_name=vsftpd syslog_enable=YES vsftpd_log_file=/var/log/vsftpd.log write_enable=YES xferlog_enable=YES

1. appliquer le mécanisme chroot à tout le monde (sauf peut-être aux utilisateurs décrits dans chroot_list).

15.5 Torrents 15.5.1 Quelques remarquesp

Principe http://en.wikipedia.org/wiki/BitTorrent Crétin.fr http://wiki.vuze.com/w/Bad_ISPs#France ktorrent SuSE − 10.2 . Qt: 3.3.7 KDE: 3.5.5 "release 45.4" KTorrent: 2.0.3. Fourni par défaut. S’installe banalement (*.rpm). Possibilité DHT. Par defaut, utilise les ports tcp 6886, udp 6886, udp-dht 6881. azureus Le "meilleur quand ça marche".

15.5.2 azureus (installation)

1. Si l’on veut gérer plusieurs versions, les placer toutes dans /opt et positionner un lien vers la version active nommé /opt/vuze.

109 15.5 Torrents 15 TRANSFERT DE FICHIERS

2.5.0.4 SuSE − 9.3 3.0.2.2. SuSE − 10.2 4.5.0.2 SuSE − 11.3 (et aussi 4.6.0.4) 4.7.2.0 SuSE − 13.1 5.7.3.0 SuSE − 42.1 2. Implémenté en java. Ne fonctionne pas mieux que java. Si java n’est pas trouvé automatiquement, indiquer le répertoire qui convient aux lignes 4-5 du script /opt/vuze/vuze. SCRIPT_NOT_CHANGED=1 # protect your script against overwritting ! JAVA_PROGRAM_DIR="/opt/jre/bin/" # use full path to java bin dir 3. Pour la version SuSE − 11.3, il existait un fichier *.rpm 4.5.0.2-1.1-noarch sur Packman. Cela dispensait de créer les icônes et les pictogrammes. Pour les autres versions (y compris SuSE − 42.1), il faut fournir une icône (en /usr/share/applications/) [Desktop Entry] Categories=Qt;KDE;Network;FileTransfer; DocPath=azureus/index.html Exec=vuze %i %m -caption "%c" Icon=/opt/vuze/azureus-small.png MimeType=application/x-torrent; Name=Azureus Type=Application et un batch (en /usr/bin/) cd /opt/vuze ./vuze ### malheur à qui oublie le ./, créant une boucle infinie ! 4. En cas de besoin, désactiver ktorrent en commentant la ligne mimetype dans /usr/share/applications/kde4/ktorrent.desktop 5. Problème avec le téléchargement automatique des mises à jour (autorisations). Télécharger le fichier 4.5.1.0 *arch.tar.bz2 qui va bien. Décompacter tout cela dans /opt/vuze-4.5.1.0 et changer le lien.  Paquet de messages d’erreur

List_entry_MimeType, List_Entry_Categories in /opt/azureus/vuze.desktop is not compliant with XDG standard (missing trailing semicolon).  Le batch azureus devrait être un simple lien sur vuze.

15.5.3 azureus (configuration) 1. Le firewall doit accepter les ports tcp/udp nécessaires. Pour une machine qui est en même temps le firewall, le plus efficace est de renseigner la ligne FW_CONFIGURATIONS_EXT="ntp sshd vuze" dans /etc/sysconfig/SuSEfirewall2 puis de fournir le fichier /etc/sysconfig/SuSEfirewall2.d/services/vuze 2. Dans ce fichier annexe du firewall, on positionne TCP="9091 4442 52116 46962" # 9091=vuze-web-remote, 4442=vuze, 52116=vuze(alt), 46962=emule ## 4443=dht-vuze UDP=" 4442 52116 46962 46965" # 9091=vuze-web-remote, 4442=vuze, 52116=vuze(alt), 46962=emule 3. Pour une machine qui n’est pas le firewall, il faut prévoir des ports supplémentaires, et les forwarder. Le fichier SuSEfirewall2 contient alors une ligne FW_FORWARD_MASQ="0/0,192.168.50.##,tcp,xxx à la place de la ligne

110 15 TRANSFERT DE FICHIERS 15.5 Torrents

FW_SERVICES_EXT_TCP=”xxx”

et de même pour udp. 4. Configuration du client. Il n’y a qu’un seul client azureus par machine. Par contre, le fichier de configuration dépend de qui lance le programme. L’essentiel est de configurer les ports correcte- ment.

Mode Advanced Connection tcp: ### le port de base. Connection udp: ### le port de base. Faut-il cocher "préférer les connections udp" ? Connection/Advanced/bind_to_local laisser 0 (default) Connection/Pairing Defaut=désactivé !!! Files le répertoire par défaut (cocher automatique) Files/Torrent le répertoire (cocher mode stopped par defaut) Files/Perfs cache: 4MB par defaut, 32MB est-ce mieux ? Interface/Display Option_view not in separate window ; see Share, Nat, Ddb Plugins/dht tcp:### le port dht Plugins/friends nickname= + Boost Plugins/LanPeer enable, automatically/local= enable Plugins/MediaServer disable Plugins/VWRemote ### le port remote ; ip_range=192.168.50.1-192.168.50.254 ; login, passwd

 Au moins une fois: message "authorization failed". On constate qu’un autre utilisateur n’a pas de souci. Renommer l’arborescence .azureus, et la laisser se reconstituer.

15.5.4 azureus (fonctionnement)

1. Incantation pour récupérer une liste de torrents

for qui in $(cat torr01.txt) ; do curl -L -o toto.gz $qui; gunzip toto.gz ; mv toto $(basename $qui) ; done

2. Le share ratio dépend du fichier /ipse/.azureus/azureus.statistics. 3. Pour un contrôle à distance, Pairing donne un code alphanumérique de 6 caractères.

(a) Utilisé sur http://pair.vuze.com/pairing/web/viez?ac=xxxxxx on obtient

Last updated Mon, 01 Oct 2012 10:24:16 GMT - Client IP is ’adresse_ip_réelle de demandeur’, Original was ’10.210.151.33’ (’Real-IP’ request header was ’81.66.203.33’) Global Attributes Access code: XXXXXX Client detected public IPv4: adresse_ip_réelle de la cible Client detected local IPv4: 192.168.50.xx Server detected public IPv4: adresse_ip_réelle Services sid: xmwebui protocol=HTTP port=9091 c_v4 o_v4

(b) Utilisation normale sur remote.vuze.com qui fournit une interface web

4. On peut faire la même chose sans enregistrement global, à travers le plugin/VuzeWebRemote. Nécessite de connaître l’adresse ip de la machine cible.

111 15.6 Capturer le cache de mozilla 16 MAIL

15.5.5 ktorrent

1. From the news : "SuSE − 10.2 ships a crippled version of KTorrent, that happens to be crippled by removing DHT functionality that was found to have a crash bug". 2. Tentative de contournement :

(a) Une tentative pour utiliser une autre rpm échoue. Causes possibles : le numéro est inférieur, ou l’architecture (32 bits) n’est pas la bonne. Les tentatives de recompiler échouent : le préfixe n’est pas bon, ou Qt n’est pas le bon ou KdE n’est pas quelque chose. (b) Finalement, on place :

ktorrent-2.0.3-1.i586.rpm 1986406 2007-02-03 11:35 et ktorrent-debuginfo-2.0.3-1.i586.rpm 3069181 2007-02-03 18:36

dans le répertoire /home/nodistrib. On indique comme sources la source YaST et ce réper- toire. (c) Et on demande de charger ktorrent-debuginfo-2.0.3-1.i586.rpm. Alors l’autre *.rpm est appelée pour compatibilité, on valide le changement d’architecture, on charge la librairie demandée et tout va bien.

3. De toutes façons, quand azureus fonctionne...

15.5.6 emule

1. Il existe une implémentation en java+linux. Cela s’appelle jmule. Cela crée des répertoires variés à la racine de l’utilisateur. Éviter. 2. eMule 0.50a ———————– - Apr, 5. 2010. Cela donne un fichier emule.exe. Placement en /opt/emule. Ce fichier s’exécute avec wine emule.exe. Le lancement est lent à venir (il se crée tout un tas de choses). 3. On utilise le port 46963 plutôt que le port officiel 4663. Autoriser sur le firewall, ou bien forwarder depuis le firewall. Cela fonctionne. Utiliser iptable -L | grep 4696 pour vérifier ce qui se passe. 4. Répertoires temporaires dans /opt/emule.

15.6 Capturer le cache de mozilla

1. Get and install Cache Status as a Firefox plugin. Activate the add-on bar (the has been Status Bar). Use it to clear the cache when a capture begins. 2. Get, install and launch (through wine) MozillaCacheView 3. Declare the Firefox cache directory Z:~ipse/.mozilla/firefox/n5ofksyx.default/Cache

16 Mail

16.1 Les formats

1. Loger le répertoire de base en homedir/Mail. Cela donne une meilleure visibilité, et facilite les synchronisations. 2. Linux base: xxxx, [cur][new][tmp]. Et alors [cur] contient un fichier par message. En cas de sous-répertoires: xxxx.directory reprend la même structure. 3. Linux_plus: un seul (gros) fichier yyyy contient l’équivalent de [cur]. Et un répertoire externe yyyy.sbd reprend la même structure avec les sous-boites 4. MH: trois fichiers cachés, puis les messages, numérotés, et des sous-répertoires (inclus) pour les sous-boites. Et donc changer de logiciel impose (souvent) de recompiler les archives. Et (toujours) de réécrire les filtres. On se place donc en ipse/mail_new et l’on exécute

112 16 MAIL 16.2 kmail

dir="Booking"; mkdir -p $dir".plus"; for qui in ipse/mail_src/"."$dir.directory/* ; do qqj=$dir".plus/"$(basename $qui); echo $qui, $qqj; ./md2mb.py $qui $qqj; done

16.2 kmail 16.2.1 Installation

1. Remplacer le répertoire homedir/.kde4/share/apps/kmail/mail par un lien sur homedir/Mail. Cela donne une meilleure visibilité, et facilite les synchronisations. 2. Mettre le fichier de signature à la racine du compte.

16.2.2 Configuration 1. Avec SuSE −11.3 et la version 1.13.5, les filtres deviennent exportables/importables. Cela servira pour la prochaine fois ! 2. View . Message list . Thème . Classic permet de disposer d’un listing triable par sujet, émetteur, date. Les nouveaux thèmes manquent fortement d’ergonomie.  Avec SuSE − 11.3 et la version 1.13.5, le programme ne se lance pas sans akonadi, et cette merveille tombe en panne de temps en temps. Il suffit de tout supprimer et réinstaller.  Le pictogramme kmail a été remplacé par un truc illisible. On revient aux anciens pictogrammes.

16.2.3 Utilisation

1. Tout ce qui est dans ~/Mail/ est traité comme une boite à lettre. Dans un tel fichier les messages sont séparés par le texte [début de ligne]From aaa@aaa , qui est la modification du champ From sender du message d’origine. Ne pas confondre ce champ avec le champ From: expéditeur qui est un simple élément de l’en-tête. 2. Les raccourcis de kmail sont donnés ci-dessous. On remarquera la possibilité de refiltrer une boite à lettre en fonction de nouveaux critères. F1 Contents + NextUnread - PreviousUnread Ctrl+C Copy Ctrl+Enter Send Ctrl+F Find Ctrl+J ApplyFilters Ctrl+L CheckMail Ctrl+N NewComposer Ctrl+P Print Ctrl+Q Quit Ctrl+R Replace Ctrl+S SaveAs Ctrl+V Paste Ctrl+W Close Ctrl+X Cut A ReplyAll D Delete F Forward K MarkAll

113 16.3 spamassassin 17 GRAPHISME

M Move N Next P Previous R Reply S Copy T Edit

16.3 spamassassin

1. S’intègre à kmail par un ensemble de filtres. 2. Chaque message est augmenté d’une ligne d’en-tête "spam"

17 Graphisme

17.1 Édition des pictogrammes

L’éditeur de pictogrammes kiconedit (Suse62) se comporte un peu mieux que le Suse61, mais il est toujours instable : le lancer à partir d’un nouveau terminal (et pas avec l’option & !) et tuer le terminal dès qu’une bouffée délirante de warnings se produit. Des thumbnails sont créés comme prévisualisation (stockés dans .xvpics ) et forment des images de bonne taille (1657 octets) par rapport aux originaux (300 octets), mais il faut dire que les pictogrammes revues par kiconedit font 1889 octets ! Comme rien n’est simple, kiconedit sort des fichiers *.xpm (même quand l’extension est *.gif !). Traduction par gipm. Placer les pictogrammes dans un répertoire spécial, à la racine du site. Quant à kview, il ne sait ni sélectionner, ni convertir !

17.2 Gimp

1. Zoom : = pour plus gros, - pour moins gros 2. Un clic dans le haut du menu contextuel permet de le bloquer ouvert. 3. Crop : S-c pour crop and resize 4. Utiliser Windows . Single-Window-View

17.3 Kover 17.3.1 Version actuelle

1. Kover est un éditeur de pochettes pour les CDrom. Tout change à chaque version, mais on arrive plus ou moins à tout transcrire (la version n+1 lit la version n, et la recode). SuSE − 7.2 : la version 0.4.1 est vérolée et la 0.8.1 ne se compile pas SuSE − 8.1 : version 2.8.6 (using kde 3.0.3) SuSE − 9.3 et SuSE − 10.2 : version 2.9.3 (using kde 3.4.0b, and kde 3.5.5-45.4) 2. Maintenant, le MimeType application/x-kover est créé par défaut, et est lié à kover. En outre, le répertoire de lancement est (enfin) le répertoire par défaut. 3. pictogramme normalisé : image 128 × 128. Problèmes avec le format *.xpm ? 4. ccdb ne fonctionne que pour les cdrom, pas pour les dvd.

 SuSE − 11.4 : version 4.24.1. En sortant directement sur imprimante, en sortie PostScript : les textes sont foireux . abandonner en sortie pdf (landscape). Ouvrir avec okular et imprimer portrait.

17.3.2 Pour mémoire : problèmes anciens

 font FE15

114 18 MUSIQUE, VIDÉO ET TV SERIES

% Standard Qt prolog ··· /FE0[/.notdef ··· /at/A ··· /Uacute ··· /yacute/thorn/ydieresis]def /F1 FE0/Times-Roman MF /F2 48/F1 DF % wanted font encoding 15 /F3 FE15/Helvetica MF /F4 12/F3 DF %%EndProlog Contournement : sortir dans un fichier, puis filtrer. Plus précisément : juste après le commentaire /% wanted font encoding 15/ créer une définition de fonte bidon en insérant /FE15[/.notdef/ ··· sur le modèle de F0. Dans certains fichiers, FE0 est définie avant FE15, et il suffirait de remplacer. Mais dans d’autres, FE0 est définie après. Pour traiter tous les cas, on est obligé de créer FE15. Comme d’habitude, on encapsule tout cela dans un batch  Les impressions se passent stupidement : il faut imprimer dans un fichier, enlever la mention landscape, puis imprimer...

18 Musique, vidéo et TV series

18.1 A propos du matériel

1. Les lecteurs abstraits comme /dev/dvd et /dev/cdrom sont liés à des lecteurs physiques. A partir de la SuSE −11.3, le lien se fait au boot donnant, par exemple, /dev/cdrom -> sr0. Et alors, le système se charge de l’expansion de ce nom en /dev/sr0. On peut tester cela en lançant eject -v depuis une console.  Pour les versions antérieures (et en tout cas pour la SuSE − 10.2), le lien se faisait à l’ins- tallation. Et il fallait le recréer soi-même en /dev/cdrom -> /dev/hdd, car le mécanisme d’expansion ne se produisait pas.

18.1.1 Carte graphique

1. Il faut "plein" de mémoire graphique et un processeur adéquat pour espérer obtenir quoi que ce soit. Seuil de pauvreté = 128Mo. 2. Il faut les bons drivers pour la carte graphique. Pour une carte qui n’est pas de la marque nvidia (nvidia=never ever), il ne faut jamais ajouter le "Nvidia Repository". Ainsi, pour une carte

ASUSTeK EN9800GT 10de:0614, sub 1043:8319

le driver par défaut, c’est à dire le driver nouveau (nv), est le bon (même si cette carte utilise un shipset nvidia).

18.1.2 Son

1. Pour SuSE − 42.1, un clic direct sur l’icône son donne trois potentiomètres

capture Audio Analog (le jack vert derrière l’ordinateur) Audio Digital (par le cable HDMI de la carte graphique)

2. Un clic gauche lance un équivalent de KMix. On a les choix: Input Devices . front micro, rear micro, line_in Output Devices, Analog . line_out, headphones Output Devices, Digital . one or another HDMI outputs (on video card) Pour madiran (SuSE − 42.1): hdmi4. 3. Par Settings . Hardware . Multimedia, on accède à Phonon qui choisit les sorties en fonction du type de l’application. Le deuxième onglet permet parfois d’écouter gauche et droite.

115 18.2 Encodage des vidéos 18 MUSIQUE, VIDÉO ET TV SERIES

18.1.3 Codecs

1. Les codecs utiles ne sont pas sur la distribution OpenSuse. Selon http://opensuse-guide.org/codecs.php

zypper addrepo -f http://packman.inode.at/suse/openSUSE_Leap_42.1/ packman zypper addrepo -f http://opensuse-guide.org/repo/openSUSE_Leap_42.1/ dvd zypper install k3b-codecs ffmpeg lame packman-gstreamer-meta-package libdvdcss2

2. En outre, passer tous les fichiers système dans leur version packman. Pour cela, ouvrir la vue par repositories et cliquer sur le lien qui fait cela (le premier à gauche).

18.2 Encodage des vidéos

1. Un fichier *.avi contient des images, du son et les informations qui permettent de faire coexister le tout. En utilisant

MPlayer dev-SVN-r31930-4.5-openSUSE Linux 11.3 (x86_64)-Packman (C) 2000-2010 MPlayer Team

on peut récupérer les informations par :

mplayer $vid -identify -frames 0 2> /dev/null | grep ID_ | sort -u

2. En cas de fichier cassé, on peut utiliser

mencoder xxx.avi -forceidx -o yyy.avi -oac copy -ovc copy

3. En première approche, nous avons les axiomes suivants.

(a) Les programmes de compression aiment bien les blocs 16 × 16. (b) Les écrans "à l’ancienne" sont au format 4/3. (c) Les écrans "large" sont au format 16/9.

4. Pour coder les images d’un écran plus large, on peut (à nombre de lignes égal) utiliser plus de pixels par ligne ou bien utiliser le même nombre de pixels en changeant la forme des pixels (rectangulaires au lieu de carrés).

w × h blocs ratio pixel 640 × 480 40 × 30 4/3 4/3 720 × 480 45 × 30 3/2 32/27 1280 × 720 80 × 45 16/9 1 1280 × 1024 80 × 64 5/4 64/45 135 1920 × 1080 120 × 2 16/9 1

Table 15: Des pixels à géométrie variable

18.3 Montage de vidéos 18.3.1 Montage avec kdenlive

1. Version 15.12.3 (SuSE − 42.1) 2. Commencer par tester le son (amarok), puis les videos en général (mplayer). 3. Dispose d’un mécanisme d’avance rapide. Puis on peut avancer frame par frame 4. Utiliser pour repérer les morceaux à garder, sous la forme hh:mm:ss.xx - hh:mm:ss.xx 5. Préférer ffmpeg pour faire les coupures.

116 18 MUSIQUE, VIDÉO ET TV SERIES 18.4 Gestion des sous-titres

18.3.2 Rogner les pubs avec ffmpeg 1. Sélectionner les morceaux avec ffmpeg -i $qui -ss $deb1 -t $long1 -vcodec copy -acodec copy part1.$tag (en utilisant le format hh:mm:ss.xx pour -ss et -t) 2. Assembler les morceaux avec ffmpeg -f concat -i tmp_list -c copy $vers 3. Le $tag des morceaux doit décrire le type de fichiers utilisés. Et donc la liste tmp_list dépend de ce type. Contient par exemple file ’part1.avi’, etc. 4. Il faut placer les paramètres -ss et -t "en sortie" c’est à dire entre le fichier source et le fichier destination. Si on les place en "entrée", la précision des coupures est moins bonne. 5. Bien entendu, les longueurs sont calculées par programme et, pendant que l’on y est, on prépare le travail sur les sous-titres en donnant les dates des raccords, et la durée de décalage à utiliser.

18.4 Gestion des sous-titres 18.4.1 Problématique 1. Lors du sous-titrage d’un film en version originelle, il est efficace de sous-titrer pour traduire la bande son, et de sur-titrer pour traduire les incrustations de texte dans la bande image originelle. 2. La plupart des sous-titres sont livrés au format srt. Ce format utilise plusieurs lignes pour un seul sous titre. 3. Par contre, dans le format ssa, il y a exactement une ligne par sous-titre. Cela permet de trier avec un traitement de texte, et cela rend possible des traitements par batch. Actuellement (SuSE − 42.1), la "bonne" solution pour le transcodage srt 7→ ssa est gaupol (cf infra, traitement de tout un répertoire en une fois). 4. On obtient un sur-titre en plaçant le code {\ a6} dans la ligne de texte (exactement comme cela, avec accolades et anti-slash, appelé code A6 par la suite). Remarque: les lecteurs de vidéo ne gèrent pas très bien ce code A6 lorsqu’il est placé dans un fichier *.srt (raison de plus pour les transcoder). 5. Recherche des incrustations. Nécessite une avance très rapide. (a) Sous mplayer, utiliser deux fois [}] cela donne du 4x. Retour à la normale par []. Dans les versions antérieures, cela broutait grave. (b) N’est pas fournie dans gnome-subtitles. (c) Avec SuSE − 42.1, on peut aussi utiliser kdenlive.

18.4.2 Ecraser les pubs

{\p1}{\pbo-100} m 0 50 l 680 50 680 150 0 150{\p0} 1. pbo definit la ligne de base (ici: 100 pixels vers le haut, à partir du bas de l’écran 2. Puis une commande move (m) horz vert 3. Puis trois commandes lines (l) horz vert. Pas besoin de répéter le (l) dans une liste de mouvements. 4. A la fin, cela se referme automatiquement. 5. Avec les réglages actuels, cela produit un rectangle jaune, bordé de noir.

18.4.3 gnome-subtitles

1. L’aide s’obtient par gnome-help /usr/share/gnome/help/gnome-subtitles/C/gnome-subtitles.xml... mais cette aide ne dit pas grand chose. Uses mplayer as the backend. Automatically select video when opening subtitles. Set subtitle timings based on video position. 2. Configuration. Dépend lourdement des codecs, mais ne semble pas utiliser exactement les mêmes que mplayer. Sous SuSE − 42.1, la manoeuvre Packman fournit tout ce qui est nécessaire.

117 18.4 Gestion des sous-titres 18 MUSIQUE, VIDÉO ET TV SERIES

3. Les fichiers *.ssa contiennent un en-tête descriptif (fontes, couleurs, etc.) qui prend le contrôle sur les options globales du lecteur. Malheureusement, cet en-tête est systématiquement écrasé à chaque réouverture par gnome-subtitles( SuSE − 11.3, SuSE − 42.1). Contournement. On lance la lecture des vidéos par un batch qui teste l’existence d’un fichier *.ssa. Si le fichier n’existe pas, le transcodage est lancé. Si le fichier existe, l’en-tête est réécrit avant de procéder au lançage normal. 4. Préférences. Sauve par défaut *.ssa ; Pas de "line length" ; newline=Unix

18.4.4 gaupol

Ressemble très fort à gnome-subtitles. Mais

1. ScriptType

(a) La ligne Script Type: v4.00 est acceptée par gnome-subtitles, mais pas par gaupol (b) La ligne ScriptType: v4.00 est acceptée par gaupol et par gnome-subtitles. Mais gnome- subtitles rajoute l’espace désastreux...

2. Sorting by time

(a) GS ne remarque rien, et ne modifie pas (b) Gup en fait la remarque. Et modifie

3. Titre (est-ce que cela sert à quoi que ce soit ?)

(a) GS donne l’impression de pouvoir le modifier. Mais conserve l’ancienne version. (b) Gup le conserve. Mais il ne semble pas que l’on y accède.

4. Spelling: fonctionne in Gup, ne va pas in GS. 5. Type et fin de ligne (tels que proposés au moment de sauvegarder)

(a) GS dispose d’un défaut modifiable (choisi: cr=unix, type=ssa) dans préférences (b) Gup dispose d’un fichier de configuration ~/.config/gaupol/gaupol.conf. Ne s’applique qu’aux fichiers nouveaux. Avec un dièse: tel que c’est écrit. Sans dièse: conserve le souvenir du dernier fichier utilisé.

6. Bilan: gaupol permet de recoder srt 7→ ssa une série de fichiers. Les ouvrir tous (cela retrie les fichiers qui en ont besoin), puis sauvegarder (type=ssa, cr=unix). Les extensions des fichiers sont modifiées en ssa (comportement attendu). Les champs Name et Effect sont créés vides. Si l’on ouvre, modifie, sauvegarde sous GS, ces champs contiendront NTP et !Effect.

18.4.5 aegisub

1. SuSE − 42.1 propose la version 3.2.2. Il faut charger à la main les bibliothèques suivantes:

libboost_locale.so.1.54.0 libffms2.so.4 libwx_baseu_xml-suse.so.1 libwx_gtk2u_adv-suse.so.1 libwx_gtk2u_gl-suse.so.1 libwx_gtk2u_stc-suse.so.1 libwx_gtk2u_stc-suse.so.1

2. Docs= http://docs.aegisub.org/3.2/Main_Page/

118 18 MUSIQUE, VIDÉO ET TV SERIES 18.5 mplayer

1 [Script Info] [Script Info] 2 ; Script generated by Aegisub 3.2.2 3 ; http://www.aegisub.org/ 4 Title: Title: 5 Original Script: Original Script: 6 Script Type: v4.00 Script Type: v4.00 7 PlayResX: 1280 PlayResX:1280 8 PlayResY: 720 PlayResY:720 9 PlayDepth: 0 PlayDepth: 0 11 [V4 Styles] [V4 Styles] 12 Format: Name, Fontname, Fontsize, Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, MarginL, MarginR, MarginV, AlphaLevel, Encoding Encoding 13 Style: Default,DejaVu Style: Default,DejaVu Sans ,26, 55773, Sans,26,55773,14277888,0,0,0,0,1,6,0,2,10,10,10,0,014277888, 14221533, 0, 0, 0, 1, 6, 0, 2,10,10,10, 0, 0 15 [Fonts] 17 [Graphics] 19 [Events] [Events]

18.5 mplayer 18.5.1 installation

1. Le lecteur de vidéo en ligne de commande est mplayer. 2. Fichiers de configuration en /etc/mplayer/* (modèle à laisser vide) et en ~/.mplayer/*. Le fichier config concerne la ligne de commande (tandis que le fichier gui.conf concerne le frontal). 3. Il faut fournir un choix pertinent pour vidéo output (le paramètre -vo). Sinon, pas de fenêtre graphique... et pas de message non plus. 4. Pour SuSE − 11.3, le package MPlayer-1.0rc4_r31930-1.pm.3.4.x86_64.rpm, qui s’affiche donc en tant que MPlayer dans YaST contient ensemble mplayer et gmplayer (malgré ce que dit la documentation du package). La version utilisée de libass est libass4-0.9.7-7.2.x86_64.rpm. 5. Pour SuSE − 11.4, le package MPlayer-1.0rc4_r33321-1.pm.1.3.x86_64.rpm ne contient plus que mplayer, le frontal étant rejeté dans un autre package. La version fournie imprime les sur- titres en dessous. Ceci ne semble pas lié à la seule bibliothèque libass. Plutôt que de faire la chasse à l’erreur, on désinstalle le barnum mplayer+gmplayer+libass et on revient à la version SuSE − 11.3. Il faut aussi copier à la main les fichiers

/usr/lib64/directfb-1.2-9/{gfxdrivers,systems,wm,interfaces,inputdrivers}/* /usr/lib64/libdirect-1.2.so.9 . /usr/lib64/libdirect-1.2.so.9.0.0 /usr/lib64/libdirectfb-1.2.so.9 . /usr/lib64/libdirectfb-1.2.so.9.0.0 /usr/lib64/libfusion-1.2.so.9 . /usr/lib64/libfusion-1.2.so.9.0.0 /usr/lib64/libx264.so.107 6. Comme de juste, faire une sauvegarde de cela dans /home/distrib/mplayer. Et même un batch pour copier puis lier les fichiers

7. Pour SuSE − 42.1, le 1.2.r37548-6.5 et les codecs décrits en Subsection 18.1.3 suffisent.

18.5.2 Batch de commande 1. Comme il y a toujours des choses à configurer d’une série TV à une autre, il semble plus efficace de placer cette configuration dans un batch, plutôt que de cliquer sur un frontal. 2. Pour avoir les sous-titres à la mode, avec en haut ce qui va en haut, il faut des fichiers *.ass. Le batch utilise alors des commandes -ass. Il y a ainsi moyen de créer une zone noire où peuvent aller les sous titres :

119 18.6 audacity 18 MUSIQUE, VIDÉO ET TV SERIES

-ass-use-margins -ass-top-margin 30 -ass-bottom-margin 30. 3. Un bon choix de police semble être : Adobe Helvetica Bold 11, color 9fb9b9, shadow. 4. Un exemple d’exécution automatique zzh=$(($myw*10000/17777)) cro=$(( ($myh-$zzh)/2 )) if test ! $cro == 0; then croparg="-vf crop=$myw:$zzh:0:$cro" ; fi assarg= -ass -ass-border-color 33000033 -ass-force-style \ FontName=DroidSans,Default.Bold=1 -ass-font-scale 1.2 mplayer -ss $timx -ao alsa -quiet -fs $assarg $croparg -sub $sub $vid 5. Option -noautosub pour ne pas avoir de sous-titres

18.6 audacity 1. Input = usb, output= default;

18.7 amarok 18.7.1 Manips depuis un fichier *.mp4 1. Utiliser vlc pour capturer en *.mp4 2. Puis passer de mp4 à mp3: ffmpeg -i xxx.mp4 xxx.mp3 3. Couper "aux silences": mp3splt -s -o toto@n xxx.mp3 4. Et quand cela résiste mp3splt -s -p th=-34,nt=7 -o toto@n Alternative.mp3 5. Indiquer les points de coupure (il faut début et fin) mp3splt -a 0.0 3.40 7.10 9.50 16.10 -o totou@n toto1.mp3

18.7.2 SuSE − 42.1 (version 2.8.2) 1. Duplicates. On fait une copie des fichiers depuis la machine précédente. Quatre files sont détec- tées comme duplicates lors de la construction de la base de données sur madiran. Pas de cause clairement identifiée. Au passage, on constate que certains fichiers n’ont pas été copiés "d’une machine à l’autre", pour des raisons de noms de fichiers non ascii pur. On les récupère depuis la copie d’origine. Cela touche surtout les noms espagnols (ceux qui ne sont pas iso-qqq-15). 2. Le tag "Album artist" est celui qui sert à classer les "various artists" dans la collection locale. 3. Les .directory contiennent un lien vers une image (dans l’arborescence .kde). S’affiche sous dol- phin, mais pas sous konqueror.

18.7.3 Description rapide 1. Media player pour fichiers *.mp3. 2. Gestion des tags mp3. Gestion de collection : déplacement de fichiers, arborescence artistes/al- bums 3. Facilite l’interrogation des lyrics. Utiliser [Edit] pour stocker un texte repris sur le net. 4. Onglet interrogation Wikipedia 5. Onglet interrogation lyrc 6. Interrogation d’une base ccdb (freedb.freedb.org) pour identifier un disque 7. Interrogation d’une base de pochettes (cover).

120 18 MUSIQUE, VIDÉO ET TV SERIES 18.7 amarok

18.7.4 La version 1.4.9 1. Cette version fournissait une interface raisonnable. Il faut attendre 2.8.2 pour que cela revienne.

18.7.5 Problèmes d’installation 1. SuSE − 11.4 fournit la version 2.4.0. Cela fonctionne (lyrics, covers, brainz, etc). Possibilité d’éditer plusieurs pistes à la suite (les sélectionner, puis cocher la case "per track" dans le dialogue qui apparaît. Néanmoins l’affichage de la playlist continue d’être bien inférieur à celui de la version 1.4.9.1 fournie avec la SuSE − 11.0. Récupérer amarok-1.4.9.1-27.1.x86_64.rpm depuis l’ancienne distrib. Le placer dans un répertoire "repository". Installer depuis YaST. Il manque alors une bibliothèque "ipod" (c’est pas grave). Puis il y a des liens à placer sur certaines bibliothèques. Puis ... rien ne va (engine void). Donc, il faut se résigner.  Les liaisons internet (lyrics, cover, wikipedia) se bloquent lorsque konqueror est configuré pour envoyer son identification. De toutes façons, konqueror aussi est bloqué... Donc, configurer konqueror adéquatement. La raison de ce comportement n’a pas été examinée. 2. SuSE − 11.3 fournit la version 3.3.0-7.1 d’amarok. L’édition des tags des enregistrements ne semble plus intéresser les développeurs. Ne sont plus éditables en masse dans la playlist, et sont difficiles à obtenir à partir des noms de fichiers. Par contre, une interface avec mysql pour collecter ces tags a été développée... Bilan: ne pas installer et en rester à la version 1.4.9.1 fournie avec la SuSE − 11.0 qui utilise KdE_3.5. Tout un barnum s’installe dans /opt/kde3/bin, mais tant pis. 3. Remarque. Si l’on a installé la version 3.3, il reste possible d’installer au moins une fois la version 1.4. Par contre, il ne semble pas possible de faire coexister les deux versions, et un ensemble de va-et-vient a conduit à la nécessité de tout refaire. 4. Un lecteur de musique ne fonctionne qu’avec les bons codecs. Ces codecs sont disponibles sur "Pa- ckman Repository". La prise en compte des nouveaux codecs nécessite un redémarrage (complet) de amarok. (a) Avec la SuSE − 11.3, le plus simple est de déclarer au préalable le "Packman Repository" parmi les sources de YaST. Sinon, on peut le faire par la suite, et amarok lance l’installation des codecs (ceci s’applique aux versions 1.4.9.1 et 3.3.0-7.1). (b) Installation (SuSE − 11.0) de libmp3lame0, libtwolame0, libxine1, libxine1-codecs, amarok-xine. (c) Installation (SuSE − 10.2) de lame, libxine1, libmp4v2-1.4.1 permet le fonctionnement. Mais (faute du bon test) il n’est pas sur qu’ils soient tous néces- saires. (d) L’installation (SuSE − 10.2) de libxine1 demande libcaca, libcaca0 et libcucul. En freudien dans le texte. 5. Installer les lyrics de wiki-lyrics (besoin du package ruby-tk). 6. La playlist est plus agréable en font=12. 7. Installer le script gestionnaire de pochettes 8. MusicBrainz nécessite libtunepimp.

18.7.6 Base dans phpMyAdmin

1. Autorisation GRANT ALL ON amarok.* TO ’amarok’@’localhost’ IDENTIFIED BY ’password’; 2. Ne pas oublier de faire un update de ’phpMyAdmin’ avant de se plaindre de la non-apparition de la base ! 3. On voit apparaitre les artistes, les albums, etc.

121 18.8 cueape 19 SON (TRÈS VIEILLES CHOSES)

18.8 cueape Transforme des fichiers *.ape en fichiers *.mp3. 1. Script écrit par mailto: rafadev_*@gmail.com. Nécessite : mac ape7→waw. Monkey’s Audio Console Front End (SuSE − 11.0 = v 3.99) lame waw7→mp3. http://www.mp3dev.org/ (SuSE − 11.0 =v 3.98.2) mp3splt mp3 en block7→plusieurs mp3 using libmp3splt (SuSE − 11.0 = v 2.2) Et tous ces packages se trouvent dans "Packman Repository" 2. Les noms de fichiers avec des espaces ne vont pas bien. Il y a des quotes à rajouter dans le script. Mais il est possible aussi de renommer les fichiers ... (en particulier le fichier *.cue). 3. Un format préféré pour amarok est "artiste - album / track - title". D’où -o "@n - @t", modifié dans le script. 4. Pour renuméroter les tracks de CD2 à la suite des tracks de CD1, il ne sert à rien de modifier le fichier *.cue. Les numéros sont attribués à partir de 1 par mp3splt.

18.9 xine 1. Bibliothèque : non pas xine-lib mais libxine1 2. Frontal : xine-ui 3. Les modules xine : [Spec] amarok-xine 1.4.4-111.guru.suse102 [Spec] libxine1, libxine1-arts, libxine1-devel, libxine1-dvb [Keep] xine-extra 1.1.2-39 [Keep] xine-ui 0.99.4-72 [DoNt] kaffeine 0.8.2-35 [DoNt] kdemultimedia3-video-xine 3.5.5-30 [DoNt] xine-devel, xine-lib

18.10 kaffeine 1. Frontal pour xine 2. Diagnostic d’installation ok= xine, kde, dvd, suse=i586 ko= win32codecs, libdvdcss, dvb 3. Opinion SuSE − 9.3 : inutile, désinstaller. Opinion SuSE − 11.0 : intéressant. Mais ne semble pas gérer les sous-titres. Opinion SuSE − 11.4 : ne gère pas les sur-titres. Rien de mieux que mplayer. Désinstaller.

18.11 vlc 1. Semblait intéressant (SuSE − 11.0). En tout cas, le site Packmann propose un package complet, avec les codecs. 2. Pour SuSE − 11.3, moins bien que mplayer.  Perte des sous-titres lorsque l’on utilise la barre navigation (c)  Les sur-titres restent en bas. 3. La version sans gui s’appelle cvlc. Permet de configurer le timer : action beepp.sh, ce dernier fichier contenant cvlc ~/ZicMu/wav/PICCOLO.WAV ~/ZicMu/wav/PAGODA.WAV

19 Son (très vieilles choses)

Très vieilles choses (SuSE − 7.0). La gestion des cartes son n’est pas (encore) considérée comme une fonctionnalité de base, et n’est pas proposée à l’installation. Il reste à se débrouiller après coup pour faire fonctionner la chose. On a alors le "choix" entre recompiler le noyau, utiliser un package commercial ou "jouer aux modules".

122 19 SON (TRÈS VIEILLES CHOSES) 19.1 Le gang O$$

19.1 Le gang O$$ En fait l’installation d’une carte son sous linux nous renvoie quelques années en arrière, lorsque l’installation d’une nouvelle carte d’interface dans un ordinateur tournait généralement à la prise de tête. Le manque de clarté des documentations et les "conflits matériels" étaient tels qu’il n’était pas rare de devoir essayer une par une les diverses combinaisons possibles avec un nombre variable de cavaliers... et cela avec, à chaque fois, arrêt de la machine, démontage de la carte et redémarrage. Des raisons commerciales évidentes ont fait apparaître les cartes configurables par logiciel, et les "cavaliers" se sont transformés en octets dans une mémoire stable. Puis sont apparues les cartes PnP (plug and play), qui voient leurs interruptions et autres ports d’entrée sortie attribués par le système lors du démarrage. Il est clair que la toute première qualité de win98 en tant que système d’exploitation est la base de données qui contient les drivers de quasiment toutes les cartes existant ou ayant existé. Le "monde linux" est encore bien loin de disposer d’une telle base de données. La version officielle de la chose est que d’une part les vilains fabricants de cartes ne veulent pas publier leurs drivers et que d’autre part, le PnP serait à la fois instable et inutile, et serait mieux nommé plug and pray, etc. Toutes ces fadaises sont démenties par le fait que O$$ s’installe automatiquement, en reconnaissant les cartes son... et les autres, afin de pouvoir gérer les conflits. A part cela, O$$ est nommé open sound system par antiphrase, car ces braves gens tentent "d’abuser de leur position dominante" pour faire cracher le client au bassinet. Se trouve-t-il tant de pigeons pour commencer par payer 800 fr de RedHat pour avoir le plaisir de payer à nouveau pour les drivers des cartes complémentaires ?  Réponse : oui, bien sûr. Car le pigeon est grégaire.

19.2 Expérimentation avec O$$

1. Décompresser l’archive dans /tmp/xx.oss (08 pour oss.8.1, 09 pour oss-demo, 10 pour la version téléchargée, 11 pour oss-demo SuSE − 6.3, etc), puis lancer ./oss_install. Les fichiers sont décompressés dans /opt/oss puis soundconf est exécuté en mode semi-graphique. 2. Avec ALS100, on obtient " non supporté" sous 08oss, tandis que 09oss donne :

/SECUREAUDIO OFF /IRQEXCLUDE 3 4 /DMAEXCLUDE 2 -ALS0001 #Generic ALS100 based soundcard *BETA* /PNPDEV @@@0001 P220 I5 D1 D5 /PNPDEV @X@0001 P330 I5 /PNPDEV @H@0001 P388 SBPNP OPNP P220 I5 D1 d5 SBMPU OPNP P330 OPL3 OPNP P388 PNP  pourquoi n’y a-t-il pas INT 09 pour le MPU401 (comme sous win98) ? 3. Avec la carte Creative Vibra16X. Au préalable, configuration sous win98 pour éviter les conflits avec le reste. On remarque qu’il n’y a qu’une interruption (05) sous win98 (pas comme ci-dessus).

/SECUREAUDIO OFF /IRQEXCLUDE 3 4 /DMAEXCLUDE 2 -CTL00F0 #Creative ViBRA16X PnP /PNPDEV CTL0043 P220 P330 P388 I5 D1 D1 SBPNP OPNP P220 I5 D1 d3 SBMPU OPNP P330 OPL3 OPNP P388 PNP 4. Les fichiers /dev : /dev/dsp : digital sampling device /dev/mixer : /dev/music : high-level sequencer

123 19.3 Tentative alsasound 19 SON (TRÈS VIEILLES CHOSES)

/dev/sequencer : low level midi, fm and gus access /dev/midi0x : raw midi port /dev/sndstat fonction /dev/sndstat item hard Audio devices 0: Creative ViBRA16X PnP (4.16) 0x220 irq 5 drq 1,1 Synth devices 0: Yamaha OPL-3 FM 0x388 Midi devices 0: Sound Blaster 16 MPU-401 0x330 irq 5 Mixers 0: Sound Blaster Timers 0: System clock 5. On remarque que le lecteur de cd (kscd) fonctionne indépendamment du "barnum" oss.  Le son présente des à coups pendant les "mouvements écran"  Parfois kmidi (6-2) se met à souffler : cela semble arriver aux enchaînements de morceaux. Si l’on saute le morceau, cela repart... ou bien le programme plante.  Le barnum O$$ ne joue que 20 mn : il faut le décharger puis le recharger, et donc fermer les applications qui l’utilisaient, puis les ré-ouvrir... En un mot, cela est tout juste bon à jouer "The Microsoft Sound" lors de l’ouverture d’une session.

19.3 Tentative alsasound Il n’y a pas beaucoup de cartes *.pci qui sont reconnues par linux. Mais il est bien connu que "presque toutes les cartes sont en isa", même si les cartes-mères contiennent de moins en moins de slots isa... et de plus en plus de cartes son intégrées. Bref, une carte FM801 ne convient pas. Mais on peut se rabattre sur une carte Yamaha OPL3-SA3. 1. Installer (YaST) le package alsa 2. Exécuter (root) alsaconf, qui détecte la carte et met à jour /etc/modules.conf (cf Table 16). options snd snd_major=116 snd_cards_limit=1 snd_device_mode=0660 . snd_device_gid=17 snd_device_uid=0 options snd-card-opl3sa2

alias char-major-14 soundcore alias char-major-116 snd alias snd-card-0 snd-card-opl3sa2 alias sound-slot-0 snd-card-0 alias sound-service-0-0 snd-mixer-oss alias sound-service-0-1 snd-seq-oss alias sound-service-0-3 snd-pcm1-oss alias sound-service-0-12 snd-pcm1-oss

port sb_port wss_port midi_port fm_port irq dma1 sz dma2 sz 370 370 530 330 388 5 1 16 3 16

Table 16: Configuration alsasound

 Comment est lancée la commande rcalsasound (c’est à dire /etc/init.d/alsasound) lors de démarrage système ?  La boite à son kmidi présente des à coups pendant les "mouvements écran" et tout ce qui demande de la puissance de calcul. En fait ce "midi player" semble utiliser timidity, qui est un convertisseur midi -> wav.  Par contre, le vrai "midi player", c’est à dire Adlib FM, FM801 etc. n’est pas disponible. Le device /dev/sequencer n’est pas disponible pour kmid, ni pour jazz et d’ailleurs n’est pas disponible dans les devices "son". On est donc revenu cinq ans en arrière, puisque le processeur principal est chargé de "tout faire tout seul"...

19.4 kmidi

 La boîte à son n’est pas efficace : comment choisir une sélection déjà enregistrée ? (contournement : recopier cette sélection dans $ipse/.kde/share/apps/kmidi/default).

124 RÉFÉRENCES

20 Problèmes précédemment posés 20.1 Windows émulateur : wine

 wine ne trouve pas "c:\windows\Program Files\Games\winmine"  Qu’est ce que les messages "Fixme" dans la konsole pendant wine ???

21 Plantages

Tentative de description des nombreux plantages de ce magnifique système "qui ne plante jamais".

21.1 Plantages klyx 1. Systématiquement : à la lecture d’un document dont les {} ne sont pas équilibrées : tout plante, même les documents déjà ouverts. Ressemble à un kill issu du système.

21.2 Plantages généraux Il n’y a plus aucun moyen de reprendre la main, on ne peut même pas lancer une console, aucune réaction, ni au clavier ni à la souris. Il n’y a même pas d’écran bleu. Reset et fschk (si le disque a survécu). 1. Cause inconnue. En cours : 3 fenêtres kfm, 2 terminaux, 2 fenêtres klyx. Un clic pour mettre une fenêtre kfm en avant. PG. 2. Cause inconnue. En cours : 10 fenêtres, dont 5 en suroot. Lancement de gimp. PG. 3. Plantage causé par kiconedit (lancé en direct, et non pas à travers un terminal comme recom- mandé ici même). Le temps d’un ps -lax | grep icon et d’un kill, quelques 400 messages d’erreur engendrés. En tuant le processus kiconedit (depuis une console texte), on "voit" les fenêtres se fermer les unes après les autres... mais à la fin : PG. 4. Systématiquement : l’exécution de latex2html sur certains fichiers (équations) engendre un swap intensif.  La situation précédente ne s’améliore pas avec 120 Mo de mémoire. 5. 15/02/00 : cause inconnue. mount /old_nux. PG. 6. 17/08/00 : avec klyx en cours : PG, swap intensif, reset. 7. 20/10/01. PG juste après un login graphique, sur un système tout juste installé. 8. On peut toujours essayer un telnet depuis une machine distante... pour tuer quelques process au hasard avant de faire un shutdown (trou de sécurité évident).  La possibilité de restaurer une session est à manier avec prudence, car cela restaure aussi les zombies. Par exemple un file manager ouvert sur une adresse qui n’existe plus (démontée, ou supprimée). En pareil cas, tuer tout ce qui dort et faire alors un " sauvegarder la session" de façon à repartir à vide.

Références

Apache. Apache mpm common directives. In Apache HTTP Server Version 2.2 Documentation (The Apache Software Fundation) (2007). URL http://httpd.apache.org/docs/2.2/mod/mpm_common. html.

125