24 février 2007

Système: Installation d'un annuaire LDAP sous OpenBSD

LDAP est un protocole d'annuaire très répandu dont l'utilisation est très variée, du simple carnet d'adresse à un annuaire d'entreprise tel qu'Active Directory. Son implémentation la plus courante dans le monde libre est OpenLDAP.

OpenBSD est un système d'exploitation de type Unix dérivé de NetBSD, focalisé sur la sécurité. Il est connu pour être le berceau d'OpenSSH, implémentation libre du protocole crypté Secure Shell. Il intègre un firewall clair et efficace, pf, ainsi qu'un protocole permettant de répartir plusieurs serveurs sur une même adresse IP, CARP.


Installation du paquet OpenLDAP sous OpenBSD

Le serveur LDAP fourni avec OpenBSD sous forme de paquet binaire utilise un backend obsolète pour sa base de données (voir http://www.openldap.org/faq/data/cache/756.html). Il est donc préférable (mais pas indispensable) de le recompiler à partir des ports, ce qui donne l'occasion de mettre le nez dans ce système commun aux différents BSD.

L'arborescence des ports d'OpenBSD 4.0 se trouve ici. Elle consiste en un ensemble de répertoires permettant de compiler automatiquement des logiciels à partir de leurs sources. Voici comment procéder:

# installation du système de ports si ce n'est pas déjà fait
cd /usr/
tar xvzf ports.tar.gz

# installation d'OpenLDAP. On précise ici que l'on souhaite installer
# la version serveur avec avec SUBPACKAGE="-server", et que le
# paquet sera compilé avec les options nécessaires pour utiliser le
# backend bdb via
FLAVOR="bdb".
cd /usr/ports/databases/openldap
SUBPACKAGE="-server" FLAVOR="bdb" make install



Préparation du système

L'installation du serveur LDAP ne prépare pas le système à son utilisation, comme ce serait le cas par exemple avec une distribution linux classique. Il faut donc effectuer un certain nombre d'opérations:

# Préparation du répertoire où seront stockées les données
mkdir /var/openldap-data
chown -R _openldap:_openldap /var/openldap-data
chmod -R 700 /var/openldap-data


# Les fichiers d'informations sur le processus doivent être accessibles par
# le serveur qui sera lancé en tant qu'utilisateur _openldap
touch /var/run/slapd.args
chown _openldap:_openldap /var/run/slapd.args
touch /var/run/slapd.pid
chown _openldap:_openldap /var/run/slapd.pid



Configuration du serveur LDAP

La configuration du serveur se fait en éditant le fichier /etc/openldap/slapd.conf. En voici un exemple:

##
# slapd.conf
#

# Fichiers correspondant aux différents modèles d'objets stockés
# dans le répertoire LDAP
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/corba.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema

# Fichiers d'informations sur le processus du service
pidfile /var/run/slapd.pid
argsfile /var/run/slapd.args

#################################
# Définitions concernant la base de données
#################################

# Type de base de données (indiquer ici ldbm si on n'a pas recompilé LDAP)
database bdb

# Suffixe (correspondant ici à crevette.fr)
suffix "dc=crevette,dc=fr"

# Compte administrateur (ici, root)
rootdn "cn=root,dc=crevette,dc=fr"

# Mot de passe de l'administrateur
# (généré à partir de l'outil /usr/local/sbin/slappasswd)
rootpw {SSHA}9W7n9BfscO/g+B+tCva/GeSCGirpIMup

# Répertoire où les données sont stockées physiquement
directory /var/openldap-data



Démarrage du service LDAP

Le démon correspondant au service LDAP est slapd. On peut le démarrer de la manière suivante, afin de s'assurer qu'il n'y a pas d'erreur dans la configuration:
/usr/local/libexec/slapd -f /etc/openldap/slapd.conf -u _openldap -g _openldap -d 256 &


Ajouter des entrées dans le répertoire LDAP

Il est possible d'ajouter des informations dans le répertoire LDAP à l'aide de fichiers de type ldif. En voici un exemple:

##
# test.ldif
#

# Tout d'abord, création de l'organisation "Crevette et Compagnie"
dn: dc=crevette, dc=fr
objectClass: top
objectClass: dcObject
objectClass: organization
dc:crevette
o: Crevette et Compagnie

# Création de l'unité organisationnelle "people" où sera stocké le carnet d'adresses
dn: ou=people, dc=crevette, dc=fr
objectClass: top
objectClass: organizationalUnit
ou: people

# Ajout d'une personne dans ce carnet d'adresse
dn: cn=Jeanine Dupont, ou=people, dc=crevette, dc=fr
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: Jeanine Dupont
gn: Jeanine
sn: Dupont
mail: jeanine.dupont@crevette.fr
telephoneNumber: 01 45 87 97 02
mobile: 06 03 48 79 22


Pour ajouter ces informations à l'annuaire LDAP, exécuter la commande:
ldapadd -x -D 'cn=root,dc=crevette, dc=fr' -f test.ldif -W

Pour vérifier que l'opération s'est bien effectuée, lancer la commande:
ldapsearch -x -b 'dc=crevette, dc=fr' 'objectclass=*'

Il est à ce stade possible de se connecter au serveur LDAP avec un logiciel classique tel que Kontact ou Outlook.


Lancement d'LDAP lors du démarrage du système

Enfin, sous OpenBSD, il n'existe pas de système de niveaux d'exécution. Pour démarrer un service supplémentaire au démarrage, il faut donc éditer le script de démarrage /etc/rc.local et y ajouter les lignes suivantes:

if [ -x /usr/local/libexec/slapd ]; then
echo -n ' OpenLDAP'
touch /var/run/slapd.pid
chown _openldap:_openldap /var/run/slapd.pid
touch /var/run/slapd.args
chown _openldap:_openldap /var/run/slapd.args
/usr/local/libexec/slapd -u _openldap -g _openldap
fi


Références

http://www.bsdlife.org/viewtopic.php?pid=193
http://www.onlamp.com/pub/a/onlamp/2003/03/27/ldap_ab.html

Libellés : , ,


23 février 2007

Programmation: Equivalent du print_r en Javascript

La fonction print_r disponible en PHP est extrêmement pratique pour pourvoir afficher le contenu d'un objet ou d'un tableau. En cherchant un peu sur internet, on peut trouver des équivalents pour le langage Javascript. En voici cependant une variante qui permet d'afficher le résultat dans une nouvelle fenêtre.

/**
 * Equivalent du print_r pour javascript
 * original:
 * http://www.brandnewbox.co.uk/logbook/article/a_print_r_equivalent_for_javascript/
 */
 function print_r(obj) {
  win_print_r = window.open('about:blank', 'win_print_r');
  win_print_r.document.write('<html><body>');
  r_print_r(obj, win_print_r);
  win_print_r.document.write('</body></html>');
 }

 function r_print_r(theObj, win_print_r) {
  if(theObj.constructor == Array ||
   theObj.constructor == Object){
   if (win_print_r == null)
    win_print_r = window.open('about:blank', 'win_print_r');
   }
   for(var p in theObj){
    if(theObj[p].constructor == Array||
     theObj[p].constructor == Object){
     win_print_r.document.write("<li>["+p+"] =>"+typeof(theObj)+"</li>");
     win_print_r.document.write("<ul>")
     r_print_r(theObj[p], win_print_r);
     win_print_r.document.write("</ul>")
    } else {
     win_print_r.document.write("<li>["+p+"] =>"+theObj[p]+"</li>");
    }
   }
  win_print_r.document.write("</ul>")
 }



21 février 2007

Photos: Défilé d'ouverture du nouvel an chinois à Paris

La couleur est annoncée d'emblée: seule l'entité politique de la RPC sera représentée en force par une série de drapeaux, alors que cette fête concerne l'ensemble du monde chinois.

Cela n'est d'ailleurs pas sans rappeler la position discutable du chef de l'état en 2004 par rapport au référundum de Taiwan.
















Libellés : ,


Photos: du côté de Carmaux

Un petit tour à Ambialet.








Le fameux pont de Millau, ainsi que la ville susnommée.



Libellés : ,


02 février 2007

Utilise la Force, Luc



(source: manuel d'utilisation de Freebsd)

Libellés : ,


This page is powered by Blogger. Isn't yours?