SERVICES(5)

NOM
services - Liste des services internet.

DESCRIPTION
services est un fichier de texte ASCII fournissant une correspondance entre un nom intelligible decrivant un service internet et l'ensemble numero de port / protocole utilise. Chaque programme reseau devrait consulter ce fichier pour obtenir le numero de port et le protocole sous-jacent au service qu'il fournit. Les fonctions de la bibliotheque C getservent(3), getservbyname(3), getservbyport(3), setservent(3), et endservent(3) permettent d'interroger ce fichier depuis un programme. Les numeros de ports sont affectes par le IANA (Internet Assigned Numbers Authority), et leur politique actuelle consiste a assigner a la fois les protocoles TCP et UDP a chaque numero de port. Ainsi la plupart des services auront deux entrees, meme si elles n'utilisent que le protocole TCP. Les numeros de ports en-dessous de 1024 ne peuvent etre assignes a une socket que par un programme Super-User (voir bind(2), tcp(7), and udp(7).) C'est ainsi que les clients se connectant sur ces ports de petits numeros peuvent etre surs que le service correspondant est une implementation standard et non pas le bricolage d'un utilisateur. Normalement les ports biens connus (well-known) affectes par le IANA se situent dans cet espace reserve au Super-User. La presence d'une ligne indiquant un service dans le fichier services ne signifie pas necessairement que le service en question est disponible sur la machine. Voir inetd.conf(5) pour la configuration des services Internet offerts. Notez que tous les services reseau ne sont pas oligatoirement lances par inetd(8), et n'apparaitront donc pas toujours dans inetd.conf(5). En particulier les serveurs de News (NNTP) et de courrier (SMTP) sont souvent initialises par le systeme dans les scripts de demarrage. L'emplacement du fichier services est defini par la constante _PATH_SERVICES dans /usr/include/netdb.h. C'est generalement /etc/services. Chaque ligne decrivant un service est de la forme

    service-name port/protocole [alias ...]

where:

service-name
    est le nom intelligible du service. La difference majscule/minuscule est importante. Souvent le programme client possede un nom rappelant celui du service.

port
    est le numero de port (en decimal) utilise pour ce service.

protocol
    est le type de protocole utilise, il doit s'agir d'un nom declare dans le fichier protocols(5). Les protocoles les plus courants sont tcp et udp.

alias
    est une liste eventuelle d'autres noms se referant au meme service, separes par des espaces ou des tabulations (voir section BUGS plus bas). Encore une fois, la difference majuscule/minuscule est importante.

Les differents champs sont separes par des espaces ou des tabulations. Un signe # debute un commentaire, qui s'etendra jusqu'a la fin de la ligne. Les lignes blanches sont ignorees. Le champ service-name doit debuter a la premiere colonne du fichier, car les espaces en tete de ligne ne sont pas elimines. service-name peut contenir n'importe quel caractere imprimable, sauf espace et tabulation. Il est neanmoins deconseille d'utiliser d'autres caracteres que a-z, 0-9, et le tiret (-). Les lignes ne se conformant pas a ce format sont ignorees silencieusement par getservent(3), getservbyname(3), et getservbyport(3), mais ce comportement peut changer. A titre de compatibilite avec les versions precedentes, le slash (/) entre le numero de port et le nom du protocole peut etre egalement remplace par une virgule, mais c'est deconseille. Ce fichier peut etre diffuse sur le reseau en utilisant des services comme Yellow Pages/NIS ou BIND/Hesiod.

EXEMPLE
$ ls -l /etc/services
-rw-r--r--   1 root   root   3432 Feb 16  1996 /etc/services
$ cat /etc/services
   ...
netstat         15/tcp
qotd            17/tcp          quote
msp             18/tcp          # message send protocol
msp             18/udp          # message send protocol
chargen         19/tcp          ttytst source
chargen         19/udp          ttytst source
ftp             21/tcp
# 22 - unassigned
telnet          23/tcp
   ...
$

BUGS
Il y a un maximum de 35 alias par service a cause des limitations de getservent(3). Les lignes plus longues que BUFSIZ (actuellement 1024) sont ignorees par getservent(3), getservbyname(3), et getservbyport(3). De plus la ligne suivante sera mal interpretee.

FICHIERS

/etc/services
    La liste des services internet.

/usr/include/netdb.h
    Definition de _PATH_SERVICES.

VOIR AUSSI
getservent(3), getservbyname(3), getservbyport(3), setservent(3), endservent(3), protocols(5), listen(2), inetd.conf(5), inetd(8). RFC "Assigned Numbers", actuellement RFC 1700, (AKA STD0002) Guide to Yellow Pages Service Guide to BIND/Hesiod Service