[Résolu]Samba/WebDAV + LDAP

Samba/WebDAV + LDAP [Résolu] - Installation - Linux et OS Alternatifs

Marsh Posté le 22-12-2008 à 10:02:01    

Bonjour,
 
Je désire proposer à quelques utilisateurs (<10) la possibilité de mettre en ligne facilement des pages web sur mon serveur.
J'ai configuré Apache correctement et je cherche maintenant comment leur donner la possibilité d'uploader leur contenu facilement.
J'ai à disposition un annuaire LDAP et je désire l'utiliser afin des les authentifier, cela dit je n'en suis pas administrateur, les utilisateurs n'auront donc pas la possibilité de changer les informations contenues dans LDAP.
J'avais tout d'abord pensé leur créer un compte accessible via SSH et leur faire faire un SFTP, mais ça a l'inconvénient de nécessiter la mise en place d'une chrootcage pour qu'ils ne se baladent pas, et nécessite l'utilisation de softwares non inclus par défauts dans tous les OS.
J'ai donc pensé me tourner vers des partages Samba, mais voilà, je coince sur la mise en place.
J'ai cherché sur le net mais j'ai du mal comprendre parce que les logs Samba sont pleins de :  
 [2008/12/22 09:49:16,  0] lib/smbldap.c:smbldap_connect_system(952)
  ldap_connect_system: Failed to retrieve password from secrets.tdb
 
Voilà ce que j'ai rajouté dans smb.conf  

Citation :


security=user
passdb backend = ldapsam:ldap://ldap.serveur.ch
ldap suffix = c=serveur,o=ch


 
Normalement si je veux chercher un utilisateur dans LDAP je fais simplement :  
ldapsearch -h ldap.serveur.ch -b o=serveur,c=ch -x cn=Dupont
 
Qu'est-ce que j'ai fait faux?
 
Merci beaucoup


Message édité par esox_ch le 28-12-2008 à 23:07:33

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 22-12-2008 à 10:02:01   

Reply

Marsh Posté le 22-12-2008 à 10:28:06    

webdav + auth LDAP


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 22-12-2008 à 13:27:16    

Salut,
D'accord je regarde dans cette direction.
Par contre j'ai pas compris quelque chose : Comment je fais pour permettre à un utilisateur d'uploader des fichiers qui doivent être aussi accessibles comme une page web normale?
 
Parce que là je peux seulement me connecter à WebDAV mais plus au site web :D

 
Résolu en créant 2 Virtualhosts distincts


Message édité par esox_ch le 22-12-2008 à 14:15:17

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 22-12-2008 à 14:03:31    

En fait après tests, je me rend compte qu'il y a un os :
Quand je tape l'adresse dans FireFox, on me demande bien un login/password, mais après. je tombe systématiquement sur une erreur 500, et elle ne génère aucune ligne dans le error.log..
 
Voilà mon /etc/apache2/sites-enabled/webdav  

Citation :


<Directory "/var/www/php/">
        Options Indexes FollowSymLinks
        AllowOverride None
        order allow,deny
        allow from all
        AuthName "Development server"
        AuthType Basic
        AuthBasicProvider ldap
 
        PerlSetVar LDAPServer ldap.serveur.ch
        PerlSetVar BaseDN "c=serveur,o=ch"
        PerlSetVar UIDAttr uid
        PerlAuthzHandler Apache::AuthzNetLDAP
        require valid-user
</Directory>


 
Et le VirtualHost correspondant :
 

Citation :


<Virtualhost *:80>
 ServerName php.ccolomb
 DocumentRoot /var/www/php
</Virtualhost>


 
Des idées ?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 22-12-2008 à 15:07:14    

Ok j'ai avancé un peu, en modifiant ma configuration du fichier webdav est maintenant la suivante :
 

Citation :


<Virtualhost *:80>
 ServerName dav.serveur.ch
 DocumentRoot /var/www/php
 <Directory "/var/www/php/">
        AuthType Basic
        AuthBasicProvider ldap
 
        AuthName "Development server"
        AuthLDAPURL "ldap://ldap.serveur.ch:389/c=serveur,o=ch?uid" NONE
        AuthLDAPBindDN "c=epfl,o=ch"
        require user esox
 </Directory>
</Virtualhost>


 
Mais quand j'essaie de m'authentifier je vois dans les logs :
 

Citation :


[Mon Dec 22 15:04:37 2008] [debug] mod_authnz_ldap.c(377): [client 127.0.0.1] [11255] auth_ldap authenticate: using URL ldap://ldap.serveur.ch:389/c=serveur,o=ch?uid
[Mon Dec 22 15:04:37 2008] [warn] [client 127.0.0.1] [11255] auth_ldap authenticate: user esox authentication failed; URI / [ldap_search_ext_s() for user failed][No such object]
[Mon Dec 22 15:04:37 2008] [error] [client 127.0.0.1] user esox not found:  


 


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 22-12-2008 à 15:10:58    

tu as tes users à la racine de ton arbre ? surprenant...


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 23-12-2008 à 15:21:59    

Tu parles de l'arbre LDAP ?  
Je dois admettre ne rien y connaître à LDAP (heureusement que c'est pas moi qui doit m'en occuper du coup :D), tout ce que je sais, c'est que comme dit plus haut, je peux trouver les informations sur une personne en utilisant :  
 

Citation :


ldapsearch -h ldap.serveur.ch -b o=serveur,c=ch -x cn=Dupont  


 
Tu as une idée du pourquoi ça ne marche pas ?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 23-12-2008 à 15:23:02    

parce que ta conf apache veut un "uid" alors que c'est un "cn" qui permet l'identification :o


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 23-12-2008 à 15:39:44    

salut,
C'est ma faute, j'ai mis un mauvais exemple. Il se trouve que  
 
ldapsearch -h ldap.serveur.ch -b o=serveur,c=ch -x uid=dupont
 
Marche aussi


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 23-12-2008 à 15:49:40    

c'est une recherche que tu fais, c'est que les 2 arguments sont présents :spamafote:
 
fait donc un "ldapsearch -h ldap.serveur.ch -b o=serveur,c=ch -x" et donne la tête de ton résultat entier :D


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 23-12-2008 à 15:49:40   

Reply

Marsh Posté le 23-12-2008 à 16:12:56    

Voilà le 1er résultat (y en a des milliers :D ), j'ai un peu changé les informations "sensibles" (nom, prénom, adresse du serveur) mais la structure n'a pas changé
 
# extended LDIF
#
# LDAPv3
# base <o=serveur,c=ch> with scope subtree
# filter: uid=esox
# requesting: ALL
#
 
# prénom nom, el-ma1, el-s, etu, serveur, ch
dn: cn=prénom nom,ou=el-ma1,ou=el-s,ou=etu,o=serveur,c=ch
cn: prénom nom
cn: nom
sn: nom
givenName: prénom
displayName: prénom nom
description: Etudiant
organizationalStatus: Etudiant
userClass:: Vm9pZSBEaXBsw7RtZQ==
personalTitle: Monsieur
ou:: U2VjdGlvbiBkZSBnw6luaWUgw6lsZWN0cmlxdWUgZXQgw6lsZWN0cm9uaXF1ZSAtIE1hc3Rlc
 iBzZW1lc3RyZSAx
ou: EL-MA1
employeeType: Etudiant
mail: prénom.nom@serveur.ch
labeledURI: http://personnes.serveur.ch/prénom.nom Personal profile
l: Lausanne
uniqueIdentifier: 170470
uid: esox
uid: esox@el-ma1
uidNumber: 71470
gidNumber: 30215
gecos: prénom nom
homeDirectory: /home/esox
loginShell: /bin/tcsh
objectClass: posixAccount
objectClass: shadowAccount
objectClass: swissEduPerson
objectClass: person
objectClass: organizationalPerson
objectClass: serveurorganizationalPerson
objectClass: inetOrgPerson
memberOf: inbc
memberOf: students_min_mte
swissEduPersonUniqueID: 170470@serveur.ch
eduPersonAffiliation: student
 
 
# search result
search: 2
result: 0 Success
 
# numResponses: 2
# numEntries: 1


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 23-12-2008 à 18:45:23    

c'est parce que tu pointes pas au bon endroit. Ton ldapsearch est récursif, pas la requête faite par apache (et accesoirement y'a des o= et des c= inversés...

 


<Virtualhost *:80>
 ServerName dav.serveur.ch
 DocumentRoot /var/www/php
 <Directory "/var/www/php/">
        AuthType Basic
        AuthBasicProvider ldap

 

       AuthName "Development server"
#        AuthLDAPURL "ldap://ldap.serveur.ch:389/
        AuthLDAPURL "ldap://ldap.serveur.ch:389/ou=el-ma1,ou=el-s,ou=etu,o=serveur,c=ch?cn" NONE
        AuthLDAPBindDN "c=epfl,o=ch"
        require user esox
 </Directory>
</Virtualhost>

 

par exemple... mais là ça va être le souk dans ton arbre... perso j'ai une organisation du style

 


ou=staff
|--ou=ssdom.domaine.tld
   |--ou=admins
      |--uid=nico
      |--uid=robert
   |--ou=users
      |--uid=louis
      |--uid=pierre
      |--uid=paul
|--ou=ssdom2.domaine.tld
......

 

ici je duplique des données certes, mais comme de toute façon je change les password pour chaque accès....


Message édité par black_lord le 23-12-2008 à 18:45:40

---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 23-12-2008 à 18:51:36    

Salut,
 
Ce que je ne comprend pas, c'est que j'utilise en ce moment un script Ruby basé sur NET::LDAP qui se connecte "simplement" sur ldap.serveur.ch:389 .. Et pas de soucis de récursivité & co.  
Parce que là le problème c'est que l'arbre va être TRÈS différent d'un utilisateur à un autre (étudiants, chercheurs, techniciens,...) et donc il faut absolument quelque chose de récursif


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 23-12-2008 à 20:40:05    

alors regarde dans la doc d'apache :D


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 28-12-2008 à 11:07:20    

Salut,
 
Alors j'ai résolu le problème :

Code :
  1. <Virtualhost *:80>
  2. ServerName dav.ccolomb
  3. DocumentRoot /var/www/php
  4. <Directory "/var/www/php">
  5.         DAV on
  6.         Options Indexes FollowSymLinks
  7.         AuthType Basic
  8.         AuthBasicProvider ldap
  9.         AuthzLDAPAuthoritative off
  10.         AuthName "Titan DAV server"
  11.         AuthLDAPURL "ldap://ldap.serveur.ch:389/o=serveur,c=ch?uid" NONE
  12.         require user esox
  13. </Directory>
  14. </Virtualhost>


 
Problème résolu
Merci


Message édité par esox_ch le 28-12-2008 à 23:07:20

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed