Skip to content

Linux Attitude

Le libre est un état d'esprit

Archive

Tag: Standard

Niveau :      
Résumé : ^] et ~.

Telnet et son successeur sécurisé ssh sont des clients permettant un accès distant. Tout caractère tapé dans le client est aussitôt transmis au système distant, qui aura la charge de l'interpréter. Tous ! Non, quelques caractères résistent encore et toujours au transfert sauvage.

En effet, il est possible de donner des commandes directement au client avec le clavier. Pour que celles-ci fonctionnent, il faut que certains caractères ne soient pas envoyés au serveur mais interprétés par le client lui-même. Ce sont des caractères de contrôle. Nous allons voir le cas particulier du caractère d'échappement.

Telnet

Le caractère d'échappement de telnet est par défaut ^] (ou ctrl-] selon l'écriture choisie, ou ctrl-$ si vous êtes sur putty). Tapez ensuite "help<return>" pour avoir la liste des commandes que peut comprendre telnet. La plus importante à connaître est quit.

Elle est utile lorsque vous tentez de vous connecter à une machine avec telnet et que votre connexion est bloquée pour une raison ou pour une autre. Ex :

$ telnet localhost imap
> Trying 127.0.0.1...
> Connected to localhost.
> Escape character is '^]'.

Si on ne connaît pas le protocole, on ne peut plus sortir de telnet car l'imap demande une séquence bien particulière pour vous déconnecter. De plus une fois connecté le ctrl-c ne fonctionne plus car il est envoyé comme tout autre caractère. Il vous faut donc donc taper "^]quit<return>" pour forcer la déconnexion.

Note : le caractère de contrôle ^E (ou ctrl-E) permet de désactiver l'affichage de ce qu'on est en train de taper, c'est parfois utile si le serveur répète ce que vous écrivez.

Ssh

Le caractère d'échappement de ssh est par défaut ~ attention, il ne fonctionne qu'après un retour à la ligne. L'aide est cette fois disponible avec la séquence ~? et la commande la plus importante est ~. qui permet comme avec telnet de couper la connexion et de quitter ssh.

Par exemple si vous lancez un processus qui bloque votre shell ou si le serveur distant ne répond plus, vous ne pouvez plus rien faire. La séquence permet d'arreter directement le client ssh sans attendre un timeout.

Une autre commande particulièrement utile de ssh est ~C elle permet de rentrer dans un mode commande de ssh. Help vous donnera plus d'infos, mais cette commande permet surtout d'ajouter ou de supprimer des tunnels directement comme vous l'auriez fait avec les options -L et -R, mais cette fois sans relancer ssh.

Niveau :      
Résumé : /srv /opt /media

FHS

Un standard a plusieurs buts. Tout d'abord il vous propose une solution réfléchie à un problème, laquelle surpassera nécessairement la première idée qui vous passe par la tête. Ensuite, il permet de faire en sorte que tout le monde utilise les mêmes outils ou les mêmes méthodes. L'intérêt est de permettre à monsieur Y de ne pas être perdu lorsqu'il passe d'un système à un autre.

La FHS (Filesystem Hierarchy Standard) définit comment les fichiers devraient être organisés sur un système unix. Elle se base sur des pratiques établies depuis longtemps, c'est pourquoi récent ici signifie environ 10 à 20 ans.

Évitons de parler des hyper connus /etc /bin /lib ... Intéressons-nous plutôt à ceux qui sont plus rares ou plus récents.

/media vs /mnt

/media est une invention relativement "récente", il sert à héberger les points de montage des media temporaires comme un CD ou une clé usb. On peut aussi y trouver des points de montage un peu moins temporaires comme une partition de stockage de données.

Cette fonction a pendant quelque temps été attribuée à /mnt qui contenait des sous répertoire pour ces points de montage. Mais /mnt a été créé pour fournir un point de montage temporaire, par exemple pour tester un disque. Il doit donc rester vide lorsqu'il n'est pas monté.

/opt vs /usr/local

/opt est aussi une invention "récente", contrairement à /usr/local.

/usr/local à pour but de laisser à l'administrateur le choix d'installer des paquets qui ne sont pas gérés par sa distribution tout en gardant la hiérarchie habituelle d'une distribution. C'est pourquoi on trouve dans /usr/local la même arborescence que dans /usr. C'est à ça que sert l'option --prefix= lorsque vous utilisez un script ./configure pour compiler vos outils.

/opt lui ressemble dans le principe, installer un paquet non géré par la distribution, mais il est différent dans le fonctionnement. /opt à été pensé pour le vendeur de logiciel. Chaque paquet doit s'installer dans /opt/<paquet> ou /opt/<vendeur> et ainsi être totalement indépendant. Un tel paquet ne peut et ne doit pas interférer avec les autres paquets du système.


continue reading...

Niveau :      
Résumé : /etc/{hosts,ethers,protocols,services}

Comme nous venons de le voir la bibliothèque libnss permet de faire la correspondance entre des noms et des identifiants. Cette correspondance peut être faite par des services réseaux automatisés ou par des fichiers qui se trouvent sur votre système. Détaillons les fichiers du système, notez que c'est le fichier /etc/nsswitch.conf qui détermine s'ils sont utilisé et avec quelle priorité.

IANA

L'IANA est l'organisme chargé d'attribuer des numéros dans toutes sortes de domaines sur internet. On va le trouver un peu partout ici.

Protocols

Dans /etc/protocols on trouve la liste des identifiants des protocoles de communication comme TCP ou IP. Les plus importants à connaître sont IP(4), TCP(6) et UDP(17). En pratique vous ne les rencontrerez que rarement sauf si vous faites du réseau mais ça peut toujours servir. La liste des valeurs à jour se trouve sur le site de l'iana.

Services

Dans /etc/services se trouve la liste des associations port/service ainsi que le type de transfert associé (tcp ou udp). Je pourrais vous en citer un grand nombre d'important www (80), smtp(25), pop(110) ... mais limitons-nous. Il est très utile de les connaître lors de l'écriture d'un firewall ou la capture d'un flux. Le fichier /etc/services sera toujours votre aide mémoire en cas de port inconnu ou compliqué. Et pour toujours être à jour, il y a le site de l'iana.

Notons à propos de ces numéros que tous les ports inférieurs à 1024 sur un serveur unix ne peuvent être ouverts que par l'utilisateur root, donc un administrateur légèrement (si peu) plus digne de confiance qu'un simple utilisateur. De nos jour la différence ne se remarque (presque) plus car tout le monde est administrateur sur sa propre machine..

Cette correspondance peut se faire automatiquement dans la plupart des cas. Ainsi les 2 lignes suivantes sont équivalentes :

$ telnet 127.0.0.1 80
$ telnet 127.0.0.1 www

continue reading...

Niveau :      
Résumé : telnet pop.mail.net 110

Connaître le protocole

Connaître un protocole peut toujours servir.

  1. Vous pourrez ainsi tester les services que vous mettez en place
  2. Vous pourrez diagnostiquer le problème quand un ami vous dira "Ça marche pas !"
  3. Si vous-même avez un problème vous pourrez probablement le résoudre à la main.

Hier je me suis retrouvé à devoir télécharger 32000 mails sur un serveur pop et mon pauvre client (hé oui fetchmail n'est pas le seul client) est un peu oublié du côté de la résistance aux crash et n'a pas supporté. Le problème c'est qu'il n'a pas effacé les 15000 premiers mails qu'il a réussi à télécharger. Merci la boulette, après 30mn on n'a pas trop envie de tout reprendre au début.

Connaître le protocole POP

Je ne vais vous parler que des bases. Pour la suite, lisez la RFC 1939 :)

Une session POP est relativement simple (ce que vous tapez est en capitale, sauf les +OK) :

$ telnet pop.mail.net 110
Trying 127.0.0.1...
Connected to pop.mail.net.
Escape character is '^]'.
+OK &lt;23594.1175023984@pop.mail.net>
USER toto
+OK
PASS xxx
+OK
LIST
+OK
1 1235
.
RETR 1
[...]
+OK
DELE 1
+OK
QUIT
Connection closed by foreign host.

[...] étant remplacé par le contenu du mail. Pour le reste je pense que vous avez compris.

Maintenant automatisons la suppression des mails.


continue reading...