Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b988176d09 | |||
| 1ed1dc114a | |||
| 30cf5d421b | |||
| b196a4c5d1 | |||
| 5216cba363 |
190
Readme.md
190
Readme.md
@@ -1,23 +1,177 @@
|
|||||||
## Prérequis:
|
# Interagir avec un serveur ldap
|
||||||
|
|
||||||
un serveur ldap de base
|
## Installation
|
||||||
|
|
||||||
fichier change_suffix_and_dit_admin.ldif
|
Assurez-vous que le paquet _openldap-clients_ soit installé sur votre système
|
||||||
|
|
||||||
schemas cosine.ldif core.ldif nis.ldif et inetorgperson.ldif
|
|
||||||
|
|
||||||
fichier root.ldif
|
|
||||||
|
|
||||||
# Préparation
|
|
||||||
|
|
||||||
Il est possible d'avoir un serveur ldap en cours de fonctionnement très rapidement:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo dnf install podman
|
sudo dnf install -y openldap-clients
|
||||||
sudo systemctl enable --now podman
|
```
|
||||||
sudo podman run -p 389:389 --name openldap-server --uts=private --hostname=localhost \
|
|
||||||
--env LDAP_ORGANISATION="example" --env LDAP_DOMAIN="example.fr" \
|
## Caractéristiques du serveur à interroger:
|
||||||
--env LDAP_ADMIN_PASSWORD="admin" --env LDAP_TLS=false \
|
|
||||||
--env LDAP_BASE_DN="cn=admin,dc=example,dc=fr" -d osixia/openldap:latest
|
* adresse: ldx1.formation.opendoor.fr
|
||||||
ldapadd -H ldap://localhost:389 -x -f data.ldif -D cn=admin,dc=example,dc=fr -wadmin -c
|
* port: 389
|
||||||
|
* dn de connexion: cn=admin,dc=example,dc=fr
|
||||||
|
* mot de passe: admin
|
||||||
|
* racine: dc=example,dc=fr
|
||||||
|
|
||||||
|
Il n'y a pas si longtemps, l'installation par défaut d'openldap acceptait les requètes anonymes en lecture-seule. Ce n'est désormais plus le cas.
|
||||||
|
|
||||||
|
Donc on va systèmatiquement utiliser les options suivantes:
|
||||||
|
|
||||||
|
ldap{add,search,modify,...} -H ldap://ldx1.formation.opendoor.fr -wadmin -xD cn=admin,dc=example,dc=fr
|
||||||
|
|
||||||
|
⚠️ Le mot de passe en clair sur la ligne de commande, ce n'est pas génial. on peut utiliser -W (la commande va nous demander le mot de passe) ou -y ~/.ldap.secret ( ~/.ldap.secret étant un fichier dans lequel on aura écrit notre mot de passe)
|
||||||
|
|
||||||
|
## Qui suis-je
|
||||||
|
|
||||||
|
Faire un _ldapwhoami_ en tant qu'utilisateur admin, puis thomas
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ldapwhoami -H ldap://ldx1.formation.opendoor.fr -xwadmin -D cn=admin,dc=example,dc=fr
|
||||||
|
ldapwhoami -H ldap://ldx1.formation.opendoor.fr -WxD uid=thomas,ou=users,dc=example,dc=fr
|
||||||
|
```
|
||||||
|
|
||||||
|
## Recherche
|
||||||
|
|
||||||
|
Faire une recherche anonyme sur l'ensemble de l'arbre
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ldapsearch -H ldap://ldx1.formation.opendoor.fr -x -b dc=example,dc=fr # Result 32 no such object
|
||||||
|
```
|
||||||
|
|
||||||
|
### Base de recherche
|
||||||
|
|
||||||
|
Faire une recherche à partir de la branche ou=users,dc=example,dc=fr.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ldapsearch -H ldap://ldx1.formation.opendoor.fr -wadmin -xD cn=admin,dc=example,dc=fr -b ou=users,dc=example,dc=fr
|
||||||
|
```
|
||||||
|
|
||||||
|
### Étendue
|
||||||
|
|
||||||
|
Faire une recherche à partir de la branche user en n'affichant que les enfants de premier niveau
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ldapsearch -H ldap://ldx1.formation.opendoor.fr -wadmin -xD cn=admin,dc=example,dc=fr -b ou=users,dc=example,dc=fr -s one
|
||||||
|
```
|
||||||
|
|
||||||
|
### Filtres
|
||||||
|
|
||||||
|
Trouvez les entrées ldap dont la classe d'objet est _posixAccount_
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ldapsearch -LLLH ldap://ldx1.formation.opendoor.fr -b dc=example,dc=fr -xwadmin -D cn=admin,dc=example,dc=fr objectclass=posixaccount
|
||||||
|
```
|
||||||
|
|
||||||
|
Trouvez les entrées ldap dont la classe d'objet est _posixAccount_ *et* dont le gidNumber est _1238_
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ldapsearch -LLLH ldap://ldx1.formation.opendoor.fr -b dc=example,dc=fr -xwadmin -D cn=admin,dc=example,dc=fr '(&(gidnumber=1238)(objectclass=posixaccount))'
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Préciser les attributs qui nous intéressent
|
||||||
|
|
||||||
|
Récupérer uniquement le _mail_ de l'entrée correspondant à la recherche précédente
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ldapsearch -LLLH ldap://ldx1.formation.opendoor.fr -b dc=example,dc=fr -xwadmin -D cn=admin,dc=example,dc=fr '(&(gidnumber=1238)(objectclass=posixaccount))' mail
|
||||||
|
```
|
||||||
|
|
||||||
|
Récupérer uniquement les attributs relatifs à la classe d'objet _person_
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ldapsearch -LLLH ldap://ldx1.formation.opendoor.fr -b dc=example,dc=fr -xwadmin -D cn=admin,dc=example,dc=fr '(&(gidnumber=1238)(objectclass=posixaccount))' @person
|
||||||
|
```
|
||||||
|
❗ Notre utilisateur est de la classe _inetOrgPerson_ qui dérive de _Person_
|
||||||
|
|
||||||
|
## Ajout
|
||||||
|
|
||||||
|
En vous aidant de https://www.zytrax.com/books/ldap/ape/nis.html#posixgroup, Identifiez et mettez au point les attributs nécessaires à la création du groupe suivant:
|
||||||
|
Créer un groupe avec les caractéristiques suivantes:
|
||||||
|
|
||||||
|
* branche: ou=groupes,dc=example,dc=fr
|
||||||
|
* nom: utilisateurs
|
||||||
|
* identifiant numérique: 1239
|
||||||
|
* membre: thomas
|
||||||
|
|
||||||
|
Voir fichier _group.ldif_:
|
||||||
|
|
||||||
|
```ldif
|
||||||
|
# Création du groupe _utilisateurs_, gid 1239 et membre "thomas"
|
||||||
|
dn: cn=utilisateurs,ou=groupes,dc=example,dc=fr
|
||||||
|
objectclass: posixGroup
|
||||||
|
gidnumber: 1239
|
||||||
|
memberuid: thomas
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ldapadd -H ldap://ldx1.formation.opendoor.fr -xwadmin -D cn=admin,dc=example,dc=fr -f groupe.ldif
|
||||||
|
```
|
||||||
|
|
||||||
|
## Modification d'un mot de passe
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ldappasswd -H ldap://ldx1.formation.opendoor.fr -xwadmin -D cn=admin,dc=example,dc=fr uid=thomas,ou=users,dc=example,dc=fr # génération d'un mot de passe aléatoire
|
||||||
|
|
||||||
|
ldappasswd -H ldap://ldx1.formation.opendoor.fr -xwadmin -D cn=admin,dc=example,dc=fr uid=thomas,ou=users,dc=example,dc=fr -s 123Soleil # ⚠️ mot de passe sur ligne de commande
|
||||||
|
|
||||||
|
ldappasswd -H ldap://ldx1.formation.opendoor.fr -xwadmin -D cn=admin,dc=example,dc=fr uid=thomas,ou=users,dc=example,dc=fr -S # définition du mot de passe par dialogue
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Modification
|
||||||
|
|
||||||
|
|
||||||
|
Modifiez le shell de l'utilisateur thomas à la valeur "/bin/fish"
|
||||||
|
|
||||||
|
Rajoutez lui l'attribut "description"
|
||||||
|
|
||||||
|
Vérifiez
|
||||||
|
|
||||||
|
|
||||||
|
Voir le fichier _modif_user.ldif_:
|
||||||
|
|
||||||
|
```ldif
|
||||||
|
dn: uid=thomas,ou=Users,dc=example,dc=fr
|
||||||
|
changetype: modify
|
||||||
|
add: description
|
||||||
|
description: this is my account
|
||||||
|
-
|
||||||
|
replace: loginShell
|
||||||
|
loginShell: /bin/fish
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ldapmodify -H ldap://ldx1.formation.opendoor.fr -xwadmin -D cn=admin,dc=example,dc=fr -f modif_user.ldif
|
||||||
|
```
|
||||||
|
|
||||||
|
## Déplacement / copie
|
||||||
|
|
||||||
|
Renommez le groupe utilisateurs en utilisateur·trice·s
|
||||||
|
|
||||||
|
Constatez le résultat.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ldapmodrdn -H ldap://ldx1.formation.opendoor.fr -xwadmin -D cn=admin,dc=example,dc=fr -r cn=utilisateurs,ou=groupes,dc=example,dc=fr cn=utilisateur·trice·s
|
||||||
|
|
||||||
|
echo 'Y249dXRpbGlzYXRldXLCt3RyaWNlwrdzLG91PUdyb3VwcyxkYz1leGFtcGxlLGRjPWNvbQ==' | base64 -d
|
||||||
|
cn=utilisateur·trice·s,ou=groupes,dc=example,dc=fr
|
||||||
|
```
|
||||||
|
|
||||||
|
## Suppression
|
||||||
|
|
||||||
|
Recrééz le groupe "utilisateurs",
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ldapadd -H ldap://ldx1.formation.opendoor.fr -xwadmin -D cn=admin,dc=example,dc=fr -f groupe.ldif
|
||||||
|
```
|
||||||
|
|
||||||
|
Supprimez le groupe "utilisateur·trice·s"
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ldapdelete -H ldap://ldx1.formation.opendoor.fr -xwadmin -D cn=admin,dc=example,dc=fr cn=utilisateur·trice·s,ou=groupes,dc=example,dc=fr
|
||||||
```
|
```
|
||||||
36
data.ldif
36
data.ldif
@@ -1,36 +0,0 @@
|
|||||||
# fichier à injecter dans le serveur de démo
|
|
||||||
|
|
||||||
dn: dc=example,dc=fr
|
|
||||||
objectClass: top
|
|
||||||
objectClass: dcObject
|
|
||||||
objectClass: organization
|
|
||||||
o: example
|
|
||||||
dc: example
|
|
||||||
|
|
||||||
dn: ou=hosts,dc=example,dc=fr
|
|
||||||
objectClass: organizationalUnit
|
|
||||||
ou: hosts
|
|
||||||
|
|
||||||
dn: ou=users,dc=example,dc=fr
|
|
||||||
objectClass: organizationalUnit
|
|
||||||
ou: users
|
|
||||||
|
|
||||||
dn: ou=groupes,dc=example,dc=fr
|
|
||||||
objectClass: organizationalUnit
|
|
||||||
ou: groupes
|
|
||||||
|
|
||||||
dn: uid=thomas,ou=users,dc=example,dc=fr
|
|
||||||
objectClass: inetOrgPerson
|
|
||||||
objectClass: posixAccount
|
|
||||||
displayName: Thomas Constans
|
|
||||||
givenName: Thomas
|
|
||||||
cn: Thomas
|
|
||||||
sn: Constans
|
|
||||||
mail: thomas@opendoor.fr
|
|
||||||
userPassword:: VmVudGlsYXRldXIyMiU=
|
|
||||||
gidNumber: 1238
|
|
||||||
uidNumber: 1234
|
|
||||||
homeDirectory: /home/thomas
|
|
||||||
loginShell: /bin/bash
|
|
||||||
uid: thomas
|
|
||||||
|
|
||||||
5
group.ldif
Normal file
5
group.ldif
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# Création du groupe _utilisateurs_, gid 1239 et membre "tom"
|
||||||
|
dn: cn=utilisateurs,ou=groupes,dc=example,dc=com
|
||||||
|
objectclass: posixGroup
|
||||||
|
gidnumber: 1239
|
||||||
|
memberuid: tom
|
||||||
7
modif_user.ldif
Normal file
7
modif_user.ldif
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
dn: uid=tom,ou=Users,dc=example,dc=com
|
||||||
|
changetype: modify
|
||||||
|
add: description
|
||||||
|
description: this is my account
|
||||||
|
-
|
||||||
|
replace: loginShell
|
||||||
|
loginShell: /bin/fish
|
||||||
23
root.ldif
Normal file
23
root.ldif
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# the root and top branches of our DIT
|
||||||
|
dn: dc=example,dc=fr
|
||||||
|
objectClass: top
|
||||||
|
objectClass: domain
|
||||||
|
dc: example
|
||||||
|
description: This is
|
||||||
|
the root of our DIT
|
||||||
|
|
||||||
|
dn: ou=Hosts,dc=example,dc=fr
|
||||||
|
ou: Hosts
|
||||||
|
objectClass: top
|
||||||
|
objectClass: organizationalUnit
|
||||||
|
|
||||||
|
dn: ou=Users,dc=example,dc=fr
|
||||||
|
ou: Users
|
||||||
|
objectClass: top
|
||||||
|
objectClass: organizationalUnit
|
||||||
|
|
||||||
|
dn: ou=Groups,dc=example,dc=fr
|
||||||
|
ou: Groups
|
||||||
|
objectClass: top
|
||||||
|
objectClass: organizationalUnit
|
||||||
|
|
||||||
15
user.ldif
Normal file
15
user.ldif
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# creation du compte utilisateur tom
|
||||||
|
dn: uid=tom,ou=users,dc=example,dc=com
|
||||||
|
uid: tom
|
||||||
|
displayName: Thomas Constans
|
||||||
|
givenName: Thomas
|
||||||
|
cn: Thomas
|
||||||
|
sn: Constans
|
||||||
|
mail: thomas@opendoor.fr
|
||||||
|
userPassword: 123Soleil
|
||||||
|
gidNumber: 1238
|
||||||
|
objectClass: inetOrgPerson
|
||||||
|
objectClass: posixAccount
|
||||||
|
uidNumber: 1234
|
||||||
|
homeDirectory: /home/tom
|
||||||
|
loginShell: /bin/bash
|
||||||
Reference in New Issue
Block a user