Précédent Remonter Suivant
Une erreur à corriger, une suggestion à faire, une contribution à apporter ? N'hésitez-plus ! Just write it!

Chapitre 9  Démons et services





9.1  Niveaux de démarrage



9.1.1  Généralités

Tout les scripts exécutés lors de l'initialisation du système sont situés dans /etc/init.d. Les répertoires /etc/rc?.d (? = S, 0..6) contiennent des liens symboliques vers ces scripts. Ces scripts sont nommés de la manière suivante : S<2 chiffres><nom> (S pour "S"tart/début) ou K<2 chiffres><nom> (K pour "K"ill/arrêt).

(Exemple )

Si le nom d'un script est suffixé ".sh", le script est un "bourne shell" et peut être utilisée de manière optimale. Le comportement de l'exécution optimale n'est différent en aucune manière de celui d'une exécution normale.

Les niveaux de démarrage (runlevels) suivants sont définis :
N Démarrage du système (bootup/ "N"ONE)
S Mode utilisateur unique ("S"ingle user)
0 Arrêt (halt)
1 Mode utilisateur unique
2..5 Mode multi-utilisateurs
6 Redémarrage (reboot)

9.1.2  Démarrage

Le niveau de démarrage correspondant est "N" (none ou bootup).

Lorsque le système s'initialise, les scripts de /etc/init.d/rcS sont exécutés. Ce qui se traduit par l'exécutions des scripts dénommés S* par ordre alphabétique (c'est à dire numérique!) . Les scripts sont exécutés avec comme premier argument 'start'.


9.1.3  Passage multi-utilisateurs

Après les exécutions précédentes, 'init' bascule vers le niveau de démarrage par défaut spécifié dans /etc/inittab , en général le niveau 2 (multi-utilisateurs).

Le programme 'init' exécute alors le script /etc/init.d/rc qui se charge de démarrer les services définis dans /etc/rc2.d par des scripts dénommé S<2 chiffres><nom>

Ici encore, les scripts sont exécutés par ordre alphabétique avec comme premier argument 'start'.


9.1.4  Changement entre niveaux

Lorsque l'on change (par exemple) du niveau 2 au niveau 3, /etc/init.d/rc exécute
  1. d'abord tous les scripts d'arrêt pour le niveau 3 (les scripts /etc/rc3.d/Knn<nom>) avec le premier argument 'stop',
  2. ensuite tous les scripts de démarrage du niveau 3 (les scripts /etc/rc3.d/Snn<nom>) avec le premier argument 'start'.

9.1.5  Lancer un script lors du démarrage

Plusieurs solutions :
    1. placer le script dans /etc/init.d/rc.boot
    1. placer le script dans /etc/init.d
    2. puis utiliser update-rc.d
    1. étudier l'exemple /etc/init.d/skeleton
    2. puis utiliser update-rc.d
Application :
Appliquer au démarrage des paramètres d' optimisation des accès disques (hdparm ).

  • Anthony FACCHIN
  • créer le fichier /etc/init.d/hdparm.sh et y placer les commandes de réglage des périphériques
  • mettre les droits d' exécution :
    chmod 755 /etc/init.d/hdparm.sh


  • dans notre cas, on veut
    1. exécuter le script /etc/init.d/hdparm.sh à chaque démarrage. On a donc besoin d'un lien symbolique dans le répertoire /etc/rcS.d

    2. ensuite, nous voulons que le script s'exécute vers la fin de la série ; nous lui donnerons donc le numéro d'ordre 60 par exemple. Enfin, le nom du lien doit commencer par la lettre S.


  • créer le lien symbolique, en passant par le script Debian update-rc.d :
    update-rc.d hdparm.sh start 60 S .
NB
L' installation des paquets hwtools , hdparm suggère le nom hwtools (au lieu de hdparm.sh comme ci-dessus). Ce nom est effectivement plus générique, et le fichier exemple fourni comporte plusieurs sections



.95

#!/bin/sh
#
#       /etc/init.d/hwtools (previously /etc/rc.boot/hwtools)
#

# Optimize interrupts. You might want to add parameters if you want
# to favor ttyS1 or ttyS0 or something else.
if command -v irqtune >/dev/null 2>&1; then
#   irqtune [PUT ARGS HERE]
   true
fi

# hdparm optimization
# Switches on interrupts during transfers and does multi sector transfers
if command -v hdparm >/dev/null 2>&1; then
#   hdparm -q [PUT ARGS HERE]
   true
fi

# configure QIC-02 interface
# see qic02conf(8)
# qic02conf --card= --port= --dma= --irq=

9.1.6  En savoir plus

9.2  Service NTP



  • Frédéric Massot (avril 2002)

9.2.1  Le protocole NTP

NTP est un protocole permettant aux ordinateurs reliés en réseau de ce synchroniser par rapport à une machine de référence. La précision de la synchronisation est de l'ordre de la dizaine de milli-seconde pour un serveur de strate 3.

Il y a plusieurs méthodes pour mettre en place cette machine de référence :
  • Connection à un récepteur GPS pour se synchroniser aux horloges atomique des satellites du système GPS.

  • Connection à une horloges pilotées par des émetteurs de radio-diffusion publiques, comme celui de TDF diffusant France Inter

  • Connexion à une horloges pilotées par des signaux radio émis par des émetteurs spécialisés.

  • Connexion via l'internet à un serveur NTP publique.
Ici, nous nous intéresserons à ce dernier cas.

Un réseau de serveurs NTP est constitué en strates :
  • Les serveurs primaires, strate 1 (stratum 1) sont directement reliés à une référence de temps (récepteur GPS, récepteur radio, horloge atomique, ...);
  • Les serveurs secondaires, strate 2 (stratum 2) se synchronisent aux serveurs de strate 1 via le protocole NTP;
Pour mettre en place un serveur NTP au sein de votre réseau local, il est important pour bien répartir la charge sur les serveurs NTP publiques de vous placez sur la strate 3. C'est à dire de se synchroniser aux serveurs NTP publiques de strate 2.

Les machines de votre réseau local se synchroniseront sur ce serveur NTP de strate 3.

Il est recommandé de se synchroniser sur trois serveurs. Si la synchronisation sur un des serveurs échoue, votre serveur NTP en utilisera un autre.

Il est souvent conseillé (par politesse :-) ) d'envoyer un petit mail à l'administrateur du serveur NTP sur lequel on se synchronise.


NTP Liste des serveurs NTP publiques de strate 2
http://www.eecis.udel.edu/~mills/ntp/clock2.htm

9.2.2  Mise en place

Il existe pour la distribution Debian version Potato trois paquets pour installer un client et/ou un serveur NTP ; Pour la Woody, il y en a cinq car le paquet ntp a été découpé en trois paquets1.
Potato Woody
ntp ntp
  ntp-simple
  ntp-refclock
ntpdate ntpdate
ntp-doc ntp-doc

Le paquet ntp-doc
Installe une documentation complète (en HTML) sur les paquets ntp et ntpdate dans le répertoire /usr/share/doc/ntp-doc

Le paquet ntpdate
Installe le client ntpdate et les pages de manuel.
ntpdate

synchronise brutalement l'horloge système (option -b). Il peut être utile lors de décalage trop important, le daemon ntpd refusant alors de se synchroniser. ntpdate est aussi utile pour les connexions intermittentes.
Le paquet ntp (version Potato)
Installe le client/serveur ntpd, le script de lancement, les scripts de rotation des logs, divers outils de contrôle et de debugage, et les pages de manuel.

Lors de l'installation un écran vous demande de saisir le nom des serveurs ntp sur lesquels vous voulez vous synchroniser. Toute la configuration est dans
/etc/ntp.conf .

A la fin de l'installation, le daemon ntpd est lancé. On peut s'en apercevoir à l'aide de la commande
ps aux |grep ntp

  root  359 ... SL ... /usr/sbin/ntpd
Le "L" indique que le daemon est bloqué en RAM, il ne sera jamais swapé, n'oubliez pas que ntp doit synchroniser la machine à quelques milli-secondes prêts.

Le daemon ntpd synchronise la machine progressivement, sans perturber le système, il accélère ou ralentie l'horloge système. Cette synchronisation prends plus d'un quart d'heure.

Si le décalage est trop important, le daemon ntpd refusera de synchroniser l'horloge système, il sera alors nécessaire d'utiliser le client ntpdate.


Le paquet ntp (version Woody) :
Installe divers outils de contrôle et de debugage, et leurs pages de manuel.

/usr/bin/ntpq
/usr/bin/ntpdc
/usr/bin/ntptrace
/usr/bin/ntpsweep
/usr/sbin/ntp-wait
/usr/sbin/ntptime
/usr/sbin/tickadj
/usr/sbin/ntp-genkeys
Le paquet ntp-simple (version Woody) :
Installe le client/serveur ntpd sans les drivers pour les horloges radio. Installe aussi le script de lancement, les scripts de rotation des logs, et la page de manuel du daemon ntpd.

Le paquet ntp-refclock (version Woody) :
Installe le client/serveur ntpd avec les drivers pour les horloges radio ou d'autres périphériques de synchronisation horaires. Installe aussi le script de lancement, des scripts de rotation des logs, et la page de manuel du daemon ntpd.

Configuration du daemon ntpd


# /etc/ntp.conf, configuration for ntpd

# ntpd will use syslog() if logfile is not defined
# Fichier d'historique
logfile /var/log/ntpd.log

# Fichier contenant la deviation moyenne
driftfile /var/lib/ntp/ntp.drift

# Repertoire contenant les statistiques d'utilisation
statsdir /var/log/ntpstats/

# Statistiques desirees
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

# Liste des serveurs NTP de référence

server ntp.via.ecp.fr 
server ntp.obspm.fr 
server ntp.univ-lyon1.fr



Pour l'utilisation du protocole NTP au sein d'un réseau local, l'utilisation de la directive "broadcast adresse_broadcast" pour le serveur permet de transmettre les paquets de synchronisation en broadcast. On utilisera la directive "broadcastclient" pour les clients. La précision est un peu plus faible en broadcast.

Pour les clients :


# /etc/ntp.conf, configuration for ntpd

# ntpd will use syslog() if logfile is not defined
# Fichier d'historique
logfile /var/log/ntpd.log

# Fichier contenant la deviation moyenne
driftfile /var/lib/ntp/ntp.drift

# Repertoire contenant les statistiques d'utilisation
statsdir /var/log/ntpstats/

# Statistiques desirees
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

# Liste des serveurs NTP de référence

server ntp.via.ecp.fr 
server ntp.obspm.fr 
server ntp.univ-lyon1.fr



Configuration du client ntpdate

Décommentez une ligne dans le fichier "/etc/init.d/ntpdate".

9.2.3  Le protocole ntp et les firewalls

Le protocole ntp utilise pour la synchronisation le port UDP/123.

Le daemon ntpd ce connecte du port UDP/123 vers le ou les serveurs de références sur leurs ports UDP/123.

La règle suivante pour iptables permet au serveur NTP interne de se synchroniser à un serveur NTP de référence extérieur :

  # Autoriser l'acces au serveur NTP numéro 1 (UDP 123)

  iptables -A FORWARD -i $INTERNAL_INTERFACE -o $EXTERNAL_INTERFACE
           -p udp 
           -s $SERVEUR_NTP_INTERNE --sport 123 
           -d $NTP_SERVEUR_REFERENCE_1 --dport 123 
           -m state --state NEW -j ACCEPT
Cette règle ne permet pas les connexions de l'utilitaire ntptrace vers l'extérieur. ntptrace ce connecte d'un port UDP non privilégié (supérieur à 1024) vers le ou les serveurs de références sur leurs ports UDP/123.

9.2.4  Vérification et debugage

Le premier point à vérifier, est que le daemon ntpd fonctionne. Un simple "ps aux |grep ntp" suffit, vous devez obtenir une ligne de la forme :

  root  359 ... SL ... /usr/sbin/ntpd
Puis vous pouvez utiliser les utilitaires ntptrace et ntpdc du paquet ntp.

La synchronisation prend un peu de temps, il ne faut pas essayer ntpdc juste après avoir lancé ntpd.

L'utilitaire ntpdc permet d'obtenir une foultitude d'informations sur l'état du daemon ntpd.

Par défaut, ntpdc se connecte à la machine locale. La commande host de ntpdc permet de se connecter à une autre machine, par exemple un serveur, si le serveur l'autorise. La commande help de ntpdc est très utile.

Pour le debugage regardez aussi dans les logs. Ils indiquent les dérives et les corrections apportés, le syslog indique la perte de synchronisations en cas de coupure de la connexion Internet.

9.2.5  L'alternative chrony

  • Laurent Picouleau
Le paquet chrony présente une autre implémentations du même protocole.

On peut même mettre un démon chronyd et un démon ntpd (sur deux machines différentes) en peers l'un de l'autre sans problème (je précise juste au V4 que l'autre est V3). Les différences se font sur la façon dont l'horloge RTC du pc est gérée et sur la prise en compte des connexions intermittentes. Pour la partie NTP elle même, les algorithmes implémentés sont ceux décrits de manière détaillée dans le RFC.

Pour le fichier de conf, celui proposé par le mainteneur du paquet est bien fait, il y a juste à préciser le(s) serveur(s) que l'on souhaite utiliser et une ou deux lignes à décommenter si on veut utiliser /dev/rtc
.

Le pendant de ntpdc est chronyc. Il n'y a pas, sauf erreur, d'équivalents de ntpq et ntptrace. La documentation est au format info au lieu d'être en HTML et chrony prend en compte la gestion des connexions intermittentes ce qui le rend particulièrement adapté au cas des utilisateurs de ppp.

Voilà l'essentiel des différences impactant l'utilisateur du paquet. Si on regarde en détail,
  • chrony n'est pas porté sur autant de plateformes que ntpd,
  • il n'utilise probablement pas l'API PPS,
  • sait-il utiliser un noyau gérant les nanosecondes ?
  • il ne gère pas les références matérielles
mais tout ceci ne concerne pas la personne qui installe et configure le serveur et encore moins celui qui veut juste synchroniser une machine.

9.2.6  Cas pratique

Un serveur local S (i.e de sous-réseau) maître de plusieurs clients Ci. Tous en connexion permanente.
  Rôle Paquets Remarques
S serveur local ntp, ntpdate à synchroniser sur plusieurs serveurs NTP externes, proches (hop/ping)
Ci client fixe ntp, [ntpdate] à synchroniser sur A

9.2.7  Astuces

Auto-synchronisation NTP
Un bon truc pour faire un serveur qui répond même si les supérieurs sont injoignables (utile si la connectivité est défaillante) :

# Synchronize on myself (127.127 = myself, 1 = local clock)
server 127.127.1.0
# Stratum 10 (arbitrary)
fudge 127.127.1.0 stratum 10

9.2.8  Pour en savoir plus...


RFC 1305 Network Time Protocol (V3)
http://www.ietf.org/rfc/rfc1305.txt


NTP Le site de référence
http://www.eecis.udel.edu/~ntp


NTP La liste des serveurs publiques primaires
http://www.eecis.udel.edu/~mills/ntp/clock1.htm


NTP La liste des serveurs publiques secondaires
http://www.eecis.udel.edu/~mills/ntp/clock2.htm


NTP De la doc en français
http://www.cru.fr/NTP


NTP Doc sur l'émetteur de TDF
http://www.eecis.udel.edu/~mills/ntp/tdf.htm

9.3  Service CUPS



  • Frédéric Massot
  • Josselin Mouette

9.3.1  Le modèle client-serveur de CUPS

CUPS (Common Unix Printing System) fonctionne sur le principe du client et du serveur cher à Unix. Toutefois, il n'utilise pas le vieillissant protocole d'impression de lpd, mais un nouveau procédé nommé IPP (Internet Printing Protocol). Il permet une bien plus grande souplesse, tout en réduisant la charge requise pour une impression au niveau du client.

L'agencement des paquets dans Debian est le suivant :


Côté serveur

Le paquet qui contient le serveur CUPS est cupsys . Il comprend le serveur d'impression et l'interface web (qui sont en fait une seule et même chose, IPP étant basé sur HTTP). L'ensemble accepte les connexions sur le port 631.

Par contre, ce serveur est fourni avec très peu de drivers, et qui, à part le driver PostScript, ne serviront pas aux possesseurs d'imprimantes récentes. Il est donc conseillé d'installer un duo de paquets contenant à eux deux des drivers de très bonne qualité pour quasiment toutes les imprimantes du marché :
cupsys-driver-gimpprint et cupsomatic-ppd .

Certaines imprimantes sont gérées par les deux drivers, à vous de choisir celui qui vous convient le mieux : gimp-print est un peu plus lent, mais la sortie est de meilleure qualité pour les images bitmap.


Côté client

Une fois un serveur disponible, les machines clientes se contentent de s'y connecter pour envoyer un fichier à imprimer et n'ont donc besoin que des paquets suivants :

9.3.2  Installation rapide

Pour faire très rapide, la mise en place d'une imprimante sous CUPS requiert : Ensuite, l'imprimante que vous aurez configuré sera opérationnelle via la commande lpr, qui est aussi utilisée de manière transparente par les applications.

9.3.3  Configuration d'une imprimante

Accéder à http://localhost:631/admin/?op=add-printer pour effectuer l'installation d'une imprimante sur le serveur par l'interface web.

Il faut commencer par entrer un nom. Celui-ci n'a d'importance que si vous configurez plusieurs imprimantes ; il apparaît dans les options des programmes d'impression, ou dans l'option -P
de lpr.

Ensuite, pour faire les choses proprement et complètement, vous avez la possibilité de saisir un emplacement et une description.

Les caractéristiques logiques et physiques des imprimantes seront définies dans les pages de saisie suivantes...


Une imprimante locale

Page suivante, il faut choisir un protocole d'impression sur le port parallèle . Des protocoles spéciaux sont proposés pour les imprimantes de marques Epson ou Canon. Ensuite, à l'écran suivant on entre la marque de l'imprimante, et au dernier, son modèle.

Une imprimante locale en port USB

Il nécessaire d'avoir inclut dans le noyau le support pour l'USB :
  • Preliminary USB device filesystem
  • Le support du controleur USB idoine : USB Controllers
  • USB Printer support
Ensuite, installer le paquet hotplug , les scripts qu'il contient permettent une gestion transparente des périphériques hotplug.

La configuration de l'imprimante se déroule via le menu de CUPS à l'adresse :


http://localhost:631/admin/?op=add-printer

La configuration est identique quelque soit le type de connectique reliant l'imprimante au serveur CUPS, USB, série, parallèle.

Choix des drivers

Parfois, plusieurs drivers sont proposés pour la même imprimante, par exemple un driver cupsomatic et un driver gimp-print. Vous pouvez faire des essais pour voir ce qui vous convient le mieux. Pour les imprimantes Epson, le driver gimp-print offre une qualité supérieure, pour les autres à vous de voir.

Après ça, l'imprimante est prête à fonctionner. Vous pouvez
  • imprimer une page de test
  • ou cliquer sur Configure printer pour régler les options d'impression par défaut :
    • résolution,
    • taille du papier (en France, c'est A4),
    • options graphiques (si vous utilisez gimp-print, l'option Adaptative Hybrid) est recommandée)
    • ...
Toutes les options de configuration peuvent être ensuite personnalisées par chaque utilisateur (dans son environnement).

9.3.4  Imprimer sur un serveur

Serveur CUPS distant

Sur chaque client GNU/linux, éditer le fichier /etc/cups/client.conf et indiquer le nom du serveur CUPS (directive ServerName).

Serveur LPD distant

Si vous voulez imprimer sur un serveur Unix utilisant LPD ou sur une imprimante en réseau compatible avec ce protocole, il faut choisir le protocole LPD/LPR. Par la suite, il vous est demandé une URI, de la forme

lpd://serveur/imprimante

Le point épineux est le modèle. S'il s'agit d'une imprimante Postscript réseau, sa marque et son modèle sont en général présents, sinon choisissez une imprimante PostScript générique (par exemple, HP Laserjet ou Color Laserjet quelquechose + Postscript). S'il s'agit d'un serveur LPD, il faut déterminer ses capacités. La plupart n'acceptent que le Postscript, auquel cas il faut utiliser là aussi un driver Postscript générique.


Serveur Windows distant

Pour imprimer vers une imprimante partagée par un serveur NT, le serveur CUPS utilise samba, et plus précisément le programme smbspool disponible dans le paquet smbclient .

L'imprimante doit donc être installée avec une adresse de la forme :


smb://login:password@GROUP/serveur/imprimante

(login, password, et GROUP sont optionnels).

Ensuite, il faut impérativement sélectionner le driver de l'imprimante située à l'autre bout du serveur, car Windows ne fait pas de retraitement.

Plusieurs personnes signalent des problèmes en imprimant vers des serveurs Windows 2000 ou Windows NT, engendrant dans
http://localhost:631/printers/ des messages d'erreur du type
CUPS Unable to connect to SAMBA host

En attendant que ce problème soit réglé dans samba, il est possible d'imprimer en remplaçant le fichier smbspool par celui que vous pourrez trouver sur


http://people.debian.org/~joss/misc/smbspool .

Astuce
Si l'impression ne fonctionne pas, essayer d'abord d'imprimer un simple fichier texte directement en utilisant smbspool (cf man smbspool pour les arguments, tout les arguments sont obligatoires).

Les classes d'imprimantes

Les classes d'imprimantes ne sont pas très utiles au tout-venant, mais sont indispensables dans certaines circonstances.

Imaginez que vous ayiez une batterie de 12 imprimantes dans un local dédié et qu'une centaine de personnes s'en servent. Vous voulez donc répartir la charge. Il serait trop compliqué d'associer une imprimante à chaque utilisateur, et pas très pratique de laisser l'utilisateur choisir (suivant quels critères ?).

CUPS apporte une solution très simple avec les classes.

Allez sur
http://localhost:631/classes et cliquez sur « Add Class ». Il vous est alors demandé le nom de la classe, telle qu'elle apparaîtra (à savoir comme une autre imprimante), puis le nom des imprimantes à associer à cette classe. Par la suite, les travaux d'impression envoyés sur l'imprimante virtuelle qui représente cette classe seront répartis entre les différentes files d'attente de manière à répartir la charge.

9.3.5  Impression à partir de clients non UNIX

Client Windows 95 ou Windows 98

L'impression à partir de ces OS requière la présence sur le serveur CUPS du serveur SAMBA (paquets samba-common et samba).

L'impression s'effectue en mode "raw".

C'est à dire que Windows par l'intermédiaire des pilotes d'impressions génère un fichier directement compréhensible par l'imprimante. Windows communique ce fichier au serveur Samba, qui le transmet à CUPS. CUPS l'envoie à l'imprimante en mode "raw".

Dans le fichier
/etc/samba/smb.conf , vous devez avoir les paramètres suivants :

[global]
   printing = cups
   printcap name = /etc/printcap.cups
   load printers = yes

[printers]
   comment = All printers
   browseable = yes
   path = /tmp
   printable = yes
   public = yes
   writable = yes
   create mode = 0700
   guest ok = yes

Dans le fichier /etc/cups/mime.convs , vous devez avoir la ligne suivante décommantée :

application/octet-stream   application/vnd.cups-raw   0   -
Dans le fichier /etc/cups/mime.types , vous devez avoir la ligne suivante décommantée :

application/octet-stream
Sur le poste Windows aller dans le panneau de gestion des imprimantes, et cliquer sur "ajouter une imprimante". Selectionner une imprimante en réseau et suivre les instructions. Cette installation requière les pilotes d'impression pour Windows.

Parfois, les pilotes d'impression refusent de comprendre que l'imprimante est distante, ils ne fonctionnent que lorsque l'imprimante est reliée directement au poste client.

La solution, est d'utiliser un pilote générique Postscript, ce pilote est disponible à l'adresse :


http://www.adobe.com/support/downloads/main.html#Printer

Il est à remarquer que ce pilote fonctionne parfois mieux avec CUPS que les pilotes d'impression natifs. Ce pilote génère un fichier postscript niveau 2 ou 3 compréhensible par CUPS.

Le fichier téléchargé sur le site d'Adobe est un executable pour Windows. Ce programme permet de selectionner une imprimante réseau, visible via le serveur Samba. Il installe et configure les pilotes d'impressions pour Windows.


Client Windows 2000 ou Windows XP

Windows 2000 et Windows XP savent gérer de façon native le protocole IPP. L'installation nécessite les pilotes d'impressions pour Windows 2000 ou XP.

L'installation d'une imprimante distante s'effectue via le panneau de configuration des imprimantes. Il faut cliquer sur "ajouter une imprimante", selectionner une imprimante en réseau et suivre les instructions.

Le problème est que si on fournit le chemin de l'imprimante distante tel quel, Windows ne la detecte pas.

Exemple de chemin d'imprimante :

http://monserveur:631/printers/monimprimante

La solution est d'ajouter l'imprimante dans une classe et de fournir à Windows le chemin de la classe :

http://monserveur:631/classes/maclasse

(Alexandre Ratti) Ce bug est apparemment corrigé par le Service Pack 1.


Client Macintoch (version 9)

L'impression à partir d'un Mac nécessite la présence sur le serveur CUPS du serveur NETATALK (paquet netatalk). Linux doit être compilé avec le support réseau "Appletalk protocol support".

L'impression s'effectue en mode "raw" (cf. Impression d'un client Windows 95 ou 98).

Dans le fichier /etc/netatalk/papd.conf, vous devez configurer chaques imprimantes (exemple pour une imprimante Brother) :

Brother:\
        :pr=|/usr/bin/lpr -P Brother:\
        :op=lp:\
        :pd=/etc/cups/ppd/Brother.ppd:
Sur le Mac, vous devez télécharger les drivers génériques Postscript fournit par Adobe, à l'adresse :

http://www.adobe.com/support/downloads/main.html#Printer

Le fichier téléchargé sur le site d'Adobe est un executable pour Macintoch. Ce programme permet de selectionner une imprimante réseau, visible via le serveur Netatalk. Il installe et configure les pilotes d'impressions pour Macintoch.

Ces pilotes génèrent des fichiers postscript niveau 2 ou 3 compréhensible par CUPS.


Client Macintoch (version X)

Apple a acheté une license pour CUPS auprès de Easy Software Products . CUPS est intégré dans MacOS X version 10.2.

Je n'ai à l'heure actuel pas testé la version 10.2 de MacOS X.

Pour MacOS X antèrieur à la version 10.2, il existe plusieurs solutions pour pouvoir imprimer vers un serveur CUPS.

La première solution, est de se souvenir que MacOS X intègre la couche "classic" c'est à dire MacOS 9. On peut alors utiliser la méthode décrite précédement pour MacOS 9.

La deuxième solution est de configurer le serveur CUPS comme serveur LPD, en installant le paquet cupsys-bsd, et en autorisant la compatibilité avec les serveurs BSD LPD.

Cette manipulation modifie le fichier /etc/inetd.conf en ajoutant la ligne :

printer stream tcp nowait lp /usr/lib/cups/daemon/cups-lpd\
 cups-lpd -o document-format=application/octet-stream
Puis, sur la Mac, executer le "print center" dans le dossier "Applications/Utilities". Et ajouter une imprimante LPR en specifiant l'adresse IP ou le nom du serveur CUPS. Il faut aussi selectionner un fichier de description Postscript de l'imprimante (fichier PPD) ou un fichier PPD générique.

L'absence de fichier PPD pour l'imprimante réseau, ou la non impression de document via le fichier PPD générique, vous feront certainement préférer la première methode, ou passer à la version 10.2 de MacOS X.


9.3.6  Le point de vue de l'utilisateur

Comment imprimer

Comme expliqué en introduction, l'impression est lancée via la commande lpr. CUPS est capable d'imprimer directement les fichiers au format Postscript, PDF, texte brut, ainsi que les formats d'image les plus courants.

En mode graphique, les logiciels bien écrits sont capables de détecter les différentes imprimantes, les autres vous demanderont une commande à exécuter pour imprimer : donnez-leur lpr
pour imprimer sur l'imprimante par défaut, ou lpr -Pimprimante pour imprimer sur l'imprimante imprimante.

Personnalisation de l'impression

L'impression est configurable très simplement pour chaque utilisateur par le programme xpp, contenu dans le paquet du même nom. Il vous présente la liste des imprimantes disponibles, et on peut paramétrer l'impression pour chacune d'entre elles en cliquant sur Options (on s'en serait douté me direz-vous). N'oubliez tout de même pas de cliquer sur Save settings pour enregistrer vos modifications.

De plus, xpp permet de paramétrer facilement des « sous-configurations » (instances) personnelles pour CUPS. Ceci permet d'enregistrer différentes configurations fréquemment utilisées pour une imprimante.

Par exemple, si vous imprimez souvent en qualité « brouillon », il vous suffit de :
  • Cliquer sur «Instance» ;
  • Copier la configuration principale vers une configuration nommée « brouillon » ;
  • Sélectionner la configuration « brouillon » puis éditer ses options ;
  • Définir les options pour avoir une qualité brouillon ;
  • Sauvegarder les préférences.
Lorsque vous imprimerez avec xpp, vous pourrez directement sélectionner la configuration brouillon (cela fonctionne aussi avec lpr -Pbrouillon fichier).

Le défaut de xpp étant de ne pas être francisé, on pourra lui préférer gtklp
, suivant les goûts.

Il existe aussi qtcups
, dont la fonction première est de ressembler au panneau d'impression de Windows, ce qui peut servir à ne pas dérouter certains.

L'existence de
lpoptions 2 permet d'effectuer ces réglages en ligne de commande. On se réfèrera à la page de manuel pour une description plus complète.

9.3.7  Pour en savoir plus


CUPS Documentation en ligne (locale)
file://usr/share/doc/cupsys/online-docs


CUPS Documentation en ligne intégrée (http)
http://localhost:631/online-docs


CUPS Impressions sous Linux
http://www.linuxprinting.org/


CUPS serveur d'impression sur une Debian Woody
ttp://www.gabuzomeu.net/alex/doc/impression/

9.4  Service LDAP

  • d'après Pascal Pucci (20 Avril 2001 / www.pascalou.org/linux/doc)
  • intégration Georges Mariano (Décembre 2002)

9.4.1  Introduction


(FIXME) Une petite intro sur LDAP (rôle/avantages) ?

9.4.2  Installation de Openldap

Sous GNU/Debian :

apt-get install openldap

Suivez les instructions et validez à chaque étape. Nous modifierons ensuite le paramétrage.


9.4.3  Configuration de Openldap

Modifiez le fichier /etc/openldap/slapd.conf comme suit :

# This is the main ldapd configuration file.
# Schema and objectClass definitions
include /etc/openldap/slapd.at.conf
include /etc/openldap/slapd.oc.conf
# Schema for supporting Netscape Roaming
include /etc/openldap/netscape_roaming.at.conf
include /etc/openldap/netscape_roaming.oc.conf
# Schema for supporting Debian Package Directory entries
# include /etc/openldap/debian.at.conf
# include /etc/openldap/debian.oc.conf
# Schema check allows for forcing entries to
# match schemas for their objectClasses's
schemacheck off
# Where clients are refered to if no
# match is found locally
# referral ldap://ldap.four11.com
# Where the pid file is put. The init.d script
# will not stop the server if you change this.
pidfile /var/run/slapd.pid
# Read slapd.conf(5) for possible values
loglevel 0
############################
# ldbm database definitions 
############################
# The backend type, ldbm, is the default standard database ldbm
# The base of your directory
suffix "dc=exemple"
# Where the database file are physically stored
directory "/var/lib/openldap"
# Save the time that the entry gets modified
lastmod on
# By default, only read access is allowed
defaultaccess read
# For Netscape Roaming support, each user gets a roaming
# profile for which they have write
access to access to dn=".*,ou=Roaming,dc=exemple"
by dnattr=owner write 
# The userPassword by default can be changed
# by the entry owning it if they are authenticated.
# Others should not be able to see it, except the
# admin entry below
access to attribute=userPassword
by dn="cn=root,ou=People,dc=exemple"
write by self
write by * none
# The admin dn has full write access
access to * by dn="cn=root,ou=People,dc=exemple" write
# End of ldapd configuration file
# L'utilisateur "root" pour la branche "People, exemple" 
# a tout les droits.
rootdn "cn=root,ou=People,dc=exemple"
# Son mot de passe. (Il peut être en clair ou en crypté).
rootpw mon_password

9.4.4  Migration des utilisateurs vers LDAP

Je vous conseille d'utiliser les outils de migration de www.padl.com :

Une fois l'archive décompressée :
tar xvfz MigrationTools.tgz

configurez l'outil :


cd MigrationTools-37



éditez le fichier de configuration migrate_common.ph et remplacez

$DEFAULT_BASE = "dc=padl,dc=com" ; 
par :

$DEFAULT_BASE = "dc=exemple";
Ensuite construisez en mode super-utilisateur (root) votre base à partir de vos comptes unix existants :

./migrate_passwd.pl /etc/passwd > /tmp/arbre-exemple.ldif
Comme vous pouvez le voir en éditant le fichier /tmp/arbre-exemple.ldif, les utilisateurs ont été ajoutés dans une branche People, fille du noeud principale que nous avons défini à "dc=exemple" (pour l'exemple).

Il nous faut donc créer ces noeuds avant d'y ajouter nos utilisateurs. Pour ceci, ajoutons les lignes suivantes au début de notre fichier /tmp/arbre-exemple.ldif
:

dn: dc=exemple
objectclass: dcobject
dc: maison
dn: ou=People, dc=exemple
objectclass: organization
ou: People
Notre fichier de base est prêt. Initialisons notre annuaire.

9.4.5  Création de la base LDAP

Tapez en ligne de commande la ligne suivante :
ldapadd -h localhost -p 389 -D "cn=root,dc=exemple"
-w monpassword -f /tmp/arbre-exemple.ldif

Vérifiez ensuite que votre base LDAP a bien été remplie en faisant une recherche :
ldapsearch -L -h localhost -p 389 -b "dc=exemple" "(objectclass=*)"

ou testez l'utilisation d'un outil d'exploration de base LDAP (voir
9.4.9, page ??).

Nota Bene
Vous avez sans doute remarqué que le champ "userPassword" est crypté ({crypt}...). Le mot de passe peut rester en clair ou être crypté avec d'autres algorithmes d'encryptages : MD5, SHA, DES

9.4.6  Configuration PAM-LDAP

PAM (Pluggable Authentication Modules) permet un mode d'authentification modulaire facilement paramétrable. Il existe donc un module PAM pour LDAP fourni par le paquet libpam-ldap .

Après installation de ce paquet, paramétrons ce module :

9.4.7  Configuration PAM

Configuration

Vérifiez au préalable que vous possédez les bons paquets : Puis remplacez le contenu des modules d'authentification /etc/pam.d/*. Nous testerons ici avec rlogin, remplacez donc /etc/pam.d/rlogin par :

auth required pam_nologin.so
auth sufficient pam_ldap.so
auth required pam_pwdb.so shadow nodelay
account sufficient pam_ldap.so
account required pam_pwdb.so
password required pam_cracklib.so
password required pam_pwdb.so shadow nullok use_authtok
Si cette configuration vous parait un peu trop compliquée (sécurisée), vous pourrez utiliser la suivante :

auth required pam_ldap.so
account required pam_ldap.so
password required pam_ldap.so
session required pam_ldap.so

Configuration avec création automatique du répértoire personnel

On pourra grace au procédé PAM améliorer notre configuration par la création automatique des répertoires personnels au cas ou ils n'existeraient pas déjà.

Dans ce cas essayez d'ajouter à votre mode d'authentification /etc/pam.d/* le contenu suivant :

session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
session required pam_pwdb.so

Tests

Utilisez l'outil que vous avez configuré avec un utilisateur de la base LDAP :
rlogin -l ppucci localhost

9.4.8  Service de nommage (nsswitch librairies).

Exemple d'utilisation de ce service :
  • Savoir nommer le propriétaire d'un fichier si son propriétaire est dans une base LDAP.
Donc, il nous faut installer cette librairie pour LDAP :

apt-get install libnss-ldap

Puis, il nous suffira de configurer : :

9.4.9  Outils

Outils pour administrer, explorer des bases LDAP de manière ergonomique:

9.4.10  Pour en savoir plus

9.5  Service ADSL



9.5.1  Matériel

Ci-dessous, des indications précises concernant du matériel qui fonctionne.

Les noms des personnes ayant soumis l'info ne sont pas repris, prière de consulter
les archives de la liste.
Alcatel STH ethernet aucun problème avec le package pppoe de la woody.
easyconnect Diva 2430SE cher mais necessitant aucune configuration, juste 192.168.1.1 comme passerelle.
ECI Ethernet B-Focus Aucun problème de configuration de connexion avec pppoeconf
Modem ethernet
PPPOE PPPOECONF kernel 2.2.19 + Home Speed Touch (Alcatel) + carte ethernet Netgear FA310TX

9.5.2  Packages

Nous reprenons ici les noms de paquets utilisés (ou utilisables) ci-après. Attention, cette liste n'est pas nécessairement exhaustive.

9.5.3  Configuration pppoe rapide

  • La documentation (en anglais) de l'installation de pppoe sous Debian GNU/Linux "potato" se trouve dans le répertoire /usr/doc/pppoe .

    Ce qui suit en est une traduction et une adaptation.Il faut comprendre qu'il s'agit de modifier les scripts qui commandent et lancent l'exécutable ppp.Cette documentation est seulement valide pour une connexion sur carte ethernet et non avec un modem USB.
  • Sous Debian Potato (2.2.rx), premièrement, installez le package pppoe
    pap-secrets
    Allez dans le répertoire /etc/ppp/ et éditez le fichier pap-secrets . En bas du fichier, effacez la dernière ligne et tapez à la place le login de votre connexion, le nom de votre FAI et le mot de passe de votre connexion; ces renseignements doivent être sur la même ligne, séparés par un espace.

    dsl-provider
    Éditer le fichier /etc/ppp/peers/dsl-provider . Écrivez à la fin du script:


    user (suivi de votre login de connexion).


    networking
    Éditer /etc/init.d/networking , pour activer la carte ethernet reliée à votre modem, écrivez sur la deuxième ligne du script:

    ifconfig eth0 up


    provider
    Éditer le fichier /etc/init.d/ppp , ajoutez aux 2 occurences de provider le préfixe "dsl", suivi d'un tiret, pour avoir "dsl-provider".
  • Créez le fichier ppp_on_boot en passant par la commande touch /etc/ppp/ppp_on_boot
  • On lance enfin la commande clavier:
    /etc/init.d/ppp start

    pour lancer la connexion (qui sera automatique au prochain démarrage du système)..
Votre connexion ADSL sous Debian GNU/Linux est prête; regardons maintenant comment procéder sous Woody (Debian 3.0):
paquets
Assurez-vous d'avoir installé les 2 paquets pppoe et pppoeconf

pppoeconf
Lancez la procédure de configuration en tapant la commande pppoeconf dans une console. Vous devez avoir à votre disposition les renseignements fournis par votre fournisseur d'accès:
  1. login de connexion,
  2. mot de passe de connexion,
  3. et adresses DNS.

En principe, si vous avez installé vous-même votre distribution Debian, vous devez avoir donné quelques uns de ces renseignements, comme suit.
adresse1
L'adresse de votre machine, si vous n'êtes pas en réseau, doit être 127.0.0.1
masque
Le masque de réseau doit être 255.255.255.0 (même si vous n'êtes pas en réseau)
adresse2
Les adresses du serveur de votre fournisseur d'accès (DNS)doivent être indiquées dans le fichier /etc/resolv.conf et de la forme (exemple de Netissimo de France Telecom) 193.252.19.3 193.252.19.4
Voilà, avec cette rapide introduction, vous devriez avoir une connexion qui fonctionne. Pour la tester, rien de plus simple, il suffit de taper cette commande en tant que root :
pppd call dsl-provider

ou


/etc/init.d/ppp start

(si /etc/ppp/ppp_on_boot
existe) voire :
pon dsl-provider

Ensuite, il ne reste plus qu'à regarder si l'interface ppp0 est bien montée en tapant
ifconfig ppp0

(FIXME) De quelle forme doit être le résultat ?
et si il y a un problèmes, il faut aller voir le fichier /var/log/messages .

9.5.4  Connexion automatique au boot

Il existe un fichier appelé /etc/ppp/no_ppp_on_boot

Si le paquet pppoe a été installé, il existe un fichier /etc/ppp/ppp_on_boot.dsl


Il suffit de créer un lien :


ln -s /etc/ppp/ppp_on_boot.dsl /etc/ppp/ppp_on_boot



Bref, il faut le renommer en ppp_on_boot et l'éditer afin de l'adapter à votre configuration. Cette édition est très simple car il n'y a que deux pramètres à changer, que beaucoup parmis vous ne changeront même pas car leur valeur par défaut sera la bonne.
  1. Aller à la ligne PPPD=/usr/sbin/pppd et remplacer le chemin vers pppd par celui correspondant à votre installation.
  2. Puis aller à la ligne INTERFACE=eth0 et comme d'habitude, remplacer eth0 par l'interface connectée à votre modem ethernet.
Voilà, au prochain reboot de votre machine, votre machine se connectera toute seule au net!
(FIXME) Q: Doit-il être nécessaire de redémarrer la machine ??? R: Non (Adeimantos)

9.5.5  Consulter également


ADSL HOWTO modem ECI USB
http://eciadsl.sourceforge.net

Ce document s'adresse à tous les possesseurs du modem ADSL ECI USB voulant l'utiliser sous Linux.

9.6   Service Samba

9.6.1  Les paquets indispensables

9.6.2  Pour en savoir plus

Livre(s) sur Samba

(FIXME) URL du livre librement disponible sur Samba

Liste de diffusion Samba
samba-fr
http://listes.ujf-grenoble.fr/wws/info/samba-fr

Précédent Remonter Suivant