Journal Mini tutoriel sur la configuration SVN/HTTPS & LDAP avec SUSE 9.2 ou 9.3

Posté par  .
Étiquettes : aucune
0
16
juil.
2005
Comme j'ai un du faire pas mal de compilation d'article pour effectuer l'installation de subversion avec apache et openldap pour la distribution SUSE, j'ai décidé de rédiger un mini tutoriel.

Installation de SVN avec Apache

1. Récupérer les packages Subversion

rpm -Uvh http://search.belnet.be/mirror/ftp.suse.com/suse/i386/9.2/suse/i586(...) 
rpm -Uvh http://search.belnet.be/mirror/ftp.suse.com/suse/i386/9.2/suse/i586(...)
rpm -Uvh http://ftp.suse.com/pub/suse/i386/9.2/suse/i586/subversion-server-1(...)


2.Créer le répertoire de subversion et lui donner les droits d'accès pour le serveur web

svnadmin create /svn 
chown -R wwwrun:wwwrun /svn/


3.Définir les droits d'accès SVN aux arborescences

vi /svn/conf/accessfile.conf

-----------------------------------
[/] 
linus = rw
cox = rw
[/kernel24]
marcello = rw
[/kernel26]
peter = rw
* = r

-----------------------------------

4.Ajouter les modules nécessaires dans la configuration Apache2 et activer le mode SSL
A noter que l'ordre des modules est important (surtout au niveau dav et svn).

/etc/sysconfig # vi apache2

-----------------------------------
APACHE_MODULES="suexec access actions alias auth auth_dbm autoindex cgi dir env expires include log_config mime negotiation setenvif userdir auth_digest ldap auth_ldap ssl php4 python dav dav_svn authz_svn" 

APACHE_SERVER_FLAGS="-D SSL"

-----------------------------------

5.Éditer la configuration Apache et paramétrer le module DAV

Dans la configuration ci dessous l'annuaire est indiqué via l'URL ldap://serveur:389/ou=monorg,dc=domain,dc=fr?sAMAccountName?sub?(objectClass=user)
Il s'agit pour le coup d'un annuaire de type Active Directory (recherche sur sAMAccountName)
Pour OpenLDAP l'URL est de type (voir plus loin la configuration OpenLDAP) :
ldap://localhost:389/ou=people,dc=domain,dc=com?uid?sub?(objectClass=*)
Il y a sûrement moyen d'optimiser la requête au niveau des filtres ;)
Les sections AuthLDAPBindDN et AuthLDAPBindPassword permettent de définir le couple DN/password pour se connecter à l'annuaire (généralement la connexion anonyme suffit pour l'authentification).

cd /etc/apache2/ 
vi default-server.conf

-----------------------------------
<Location /svn> 
DAV svn
SVNPath /svn
SVNAutoversioning on
AuthzSVNAccessFile /svn/conf/accessfile.conf

AuthLDAPEnabled on
AuthLDAPURL ldap://10.1.5.13:389/ou=monorg,dc=domain,dc=com?sAMAccountName?sub?(objectClass=user)
#AuthLDAPBindDN
#AuthLDAPBindPassword
#AuthLDAPAuthoritative on
require valid-user
AuthType Basic
AuthName "Subversion Read-only Repository"
<LimitExcept GET PROPFIND OPTIONS REPORT>
Satisfy all
SSLRequireSSL
</LimitExcept>


-----------------------------------

6.Générer un certificat SSL

/usr/bin/gensslcert -c fr -s TN -l "Paris" -o monorganisation -n "134.157.55.44" 


7. Éditer la configuration serveur SSL

cd vhosts.d/ 
cp vhost-ssl.template vhost-ssl.conf
vi vhost-ssl.conf

-----------------------------------
# General setup for the virtual host 
DocumentRoot "/srv/www/htdocs"
ServerName 134.157.55.44:443
#ServerAdmin webmaster@example.com
ErrorLog /var/log/apache2/error_log
TransferLog /var/log/apache2/access_log

# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on

-----------------------------------


Configuration OpenLDAP

1.Éditer la configuration LDAP

vi /etc/openldap/ldap.conf

-----------------------------------
BASE    dc=domain, dc=com 
URI ldap://ldap.domain.com


2.Créer un mot de passe pour l'accès à l'annuaire

slappasswd

Qui produit un pass hash que nous allons coller dans le fichier de configuration slapd.conf à la section rootpw.

3.Éditer le fichier de configuration slapd.conf

Au passage on inclut le schéma samba3.schema (pour le cas ou on voudra également gérer des comptes samba3) et on spécifie les index pour objectClass et uid (afin d'accélérer les requêtes de recherche).

vi /etc/openldap/slapd.conf 

-----------------------------------
include         /etc/openldap/schema/samba3.schema                                                                   
...
suffix "dc=domain,dc=com"
rootdn "cn=root,dc=domain,dc=com"
# Cleartext passwords, especially for the rootdn, should
# be avoid. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw {SSHA}jgKeR7/tKxVERYlkQPIPO6/tE3zr/2B+
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory /var/lib/ldap
# Indices to maintain
index objectClass eq
index uid pres,sub,eq

-----------------------------------

4.Vider la Base de données LDAP

Dans mon cas j'ai du effectuer cette opération pour pouvoir redémarrer OpenLDAP avec les nouveaux index. Il existe sûrement il commande plus propre.

cd /var/lib/ldap/ 
rm *


5.Ajout du point d'entrée dans l'annuaire

ldapadd -h localhost -x -D 'cn=root,dc=domain,dc=com' -W -f top.ldif 


(voir le contenu du fichier plus bas)

On vérifie l'opération

ldapsearch -h localhost -x -b 'dc=domain,dc=com' 


6.Ajout des utilisateurs

A priori YAST permet la gestion des utilisateurs de l'annuaire et semble bien faire son travail, mais il est toujours possible de passer par la ligne de commande.

ldapadd -h localhost -x -D 'cn=root,dc=domain,dc=com' -W -f user.ldif 


7.Modification d'un password utilisateur

ldappasswd -h localhost -x -v -S -W -D 'cn=root,dc=domain,dc=com' 'uid=linus,ou=people,dc=domain,dc=com'


8.Opérations diverses

Récupération des passwords

ldapsearch -H "ldap://localhost:389/" -x -s sub "(objectClass=person)" -W -D 'cn=root,dc=domain,dc=com' -LLL userPassword 


Suppression d'une entrée

ldapdelete -h localhost -x -D 'cn=root,dc=domain,dc=com' -W 'dn=uid=linus,ou=people,dc=domain,dc=com' 


9.Fichier top.ldif

dn: dc=domain, dc=com
objectclass: dcObject
objectclass: organization
o: Mon Orga
dc: domain

dn: cn=root, dc=domain, dc=com
objectclass: organizationalRole
cn: root

dn: ou=people, dc=domain, dc=com
ou: people
objectclass: organizationalUnit

dn: ou=group, dc=domain, dc=com
ou: group
objectclass: organizationalUnit


10. Fichier user.ldif

# linus, people, domain.com
dn: uid=linus,ou=people,dc=domain,dc=com
uid:linus
cn: Linus Tor
gecos: Linus Tor
uidNumber: 100
gidNumber: 1000
homeDirectory: /home/linus
loginShell: /bin/bash
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
shadowInactive: 0
shadowLastChange: 12955
shadowMax: 0
shadowMin: 0
shadowWarning: 0
userPassword:: e1TRESDROLEOZk1uRzZVSTIrNldiUkJwMmpzSUI1MnlrPQ==
# users, group, domain.com
dn: cn=users,ou=group,dc=domain,dc=com
cn: users
gidNumber: 1000
member: uid=linus,ou=people,dc=domain,dc=com
objectClass: top
objectClass: posixGroup
objectClass: groupOfNames


11. Divers

J'ai également récupéré phpldapadmin, qui semble pas trop mal fonctionner.
http://phpldapadmin.sourceforge.net/(...)
  • # tutoriel

    Posté par  . Évalué à 3.

    Salut,

    Pourquoi ne pas proposer ce tutoriel a un site tel que www.lea-linux.org ou www.trustonme.net ?

    Julien
    • [^] # Re: tutoriel

      Posté par  . Évalué à 2.

      Bien vu, c'est juste que comme j'ai un compte sur linuxfr et que je voulais refiler l'info (ayant eu du mal à faire la compil) je n'ai pas cherché très loin. Avec du bol, un moteur de recherche va indexer le contenu et ca pourra depanner le quidam.
      Bon je vais quand meme voir ce que je peux faire ;)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.