This commit is contained in:
2022-10-12 12:26:13 +02:00
parent ed68e304f1
commit 5216cba363
4 changed files with 135 additions and 12 deletions

120
Readme.md
View File

@@ -4,74 +4,170 @@
Assurez-vous que le paquet _openldap-clients_ soit installé sur votre système
```bash
sudo dnf install -y openldap-clients
```
## Caractéristiques du serveur à interroger:
* adresse:
* # port:
* dn de connexion:
* mot de passe:
* racine:
* adresse: localhost
* # port: 389
* dn de connexion: cn=admin,dc=example,dc=com
* mot de passe: admin
* racine: dc=example,dc=com
Donc on va systèmatiquement utiliser les options suivantes:
ldap{add,search,modify,...} -H ldap:/// -wadmin -xD cn=admin,dc=example,dc=com
A 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 tom
```bash
ldapwhoami -H ldap://localhost -xwadmin -D cn=admin,dc=example,dc=com
ldapwhoami -H ldap://localhost -WxD uid=tom,ou=users,dc=example,dc=com
```
## Recherche
Faire une recherche anonyme sur l'ensemble de l'arbre
```bash
ldapsearch -H ldap:/// -x -b dc=example,dc=com
```
### Base de recherche
Faire une recherche à partir de la branche ou=users,dc=example,dc=fr.
Faire une recherche à partir de la branche ou=users,dc=example,dc=com.
```bash
ldapsearch -H ldap:/// -wadmin -xD cn=admin,dc=example,dc=com -b ou=users,dc=example,dc=com
```
### Étendue
Faire une recherche à partir de la branche user en n'affichant que les enfants.
Faire une recherche à partir de la branche user en n'affichant que les enfants de premier niveau
```bash
ldapsearch -H ldap:/// -wadmin -xD cn=admin,dc=example,dc=com -b ou=users,dc=example,dc=com -s one
```
### Filtres
Trouvez les entrées ldap dont la classe d'objet est _posixAccount_
Trouvez les entrées ldap dont la classe d'objet est _posixAccount_ *et* dont le gidNumber est 1238
```bash
ldapsearch -LLLH ldap://localhost -b dc=example,dc=com -xwadmin -D cn=admin,dc=example,dc=com objectclass=posixaccount
```
Trouvez les entrées ldap dont la classe d'objet est _posixAccount_ *et* dont le gidNumber est _1238_
```bash
ldapsearch -LLLH ldap://localhost -b dc=example,dc=com -xwadmin -D cn=admin,dc=example,dc=com '(&(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://localhost -b dc=example,dc=com -xwadmin -D cn=admin,dc=example,dc=com '(&(gidnumber=1238)(objectclass=posixaccount))' mail
```
Récupérer uniquement les attributs relatifs à la classe d'objet _person_
```bash
ldapsearch -LLLH ldap://localhost -b dc=example,dc=com -xwadmin -D cn=admin,dc=example,dc=com '(&(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
* branche: ou=groupes,dc=example,dc=com
* nom: utilisateurs
* identifiant numérique: 1239
* membre: tom
Voir fichier _group.ldif_
```ldif
# Création du groupe _utilisateurs_, gid 1239 et membre "tom"
dn: cn=utilisateurs,ou=groups,dc=example,dc=com
objectclass: posixGroup
gidnumber: 1239
memberuid: tom
```
```bash
ldapadd -H ldap://localhost -xwadmin -D cn=admin,dc=example,dc=com -f groupe.ldif
```
## Modification d'un mot de passe
Modifiez le mot de passe de l'utilisateur _tom_ à une valeur de votre choix.
```bash
ldappasswd -H ldap://localhost -xwadmin -D cn=admin,dc=example,dc=com uid=tom,ou=users,dc=example,dc=com # génération d'un mot de passe aléatoire
ldappasswd -H ldap://localhost -xwadmin -D cn=admin,dc=example,dc=com uid=tom,ou=users,dc=example,dc=com -S # définition du mot de passe par dialogue
```
Validez en faisant un ldapwhoami -H ldap://localhost -WxD uid=tom,ou=users,dc=example,dc=com
## Modification
Modifiez le shell de l'utilisateur tom à la valeur "/bin/fish"
Rajoutez lui l'attribut "description"
Vérifiez
```ldif
dn: uid=tom,ou=Users,dc=example,dc=com
changetype: modify
add: description
description: this is my account
-
replace: loginShell
loginShell: /bin/fish
```
Voir le fichier _modif_user.ldif_
```bash
ldapmodify -H ldap://localhost -xwadmin -D cn=admin,dc=example,dc=com -f modif_user.ldif
```
## Déplacement / copie
Renommez le groupe utilisateurs en utilisateur·trice·s
Constatez le résultat.
```bash
ldapmodrdn -H ldap://localhost -xwadmin -D cn=admin,dc=example,dc=com -r cn=utilisateurs,ou=groups,dc=example,dc=com cn=utilisateur·trice·s
echo 'Y249dXRpbGlzYXRldXLCt3RyaWNlwrdzLG91PUdyb3VwcyxkYz1leGFtcGxlLGRjPWNvbQ==' | base64 -d
cn=utilisateur·trice·s,ou=Groups,dc=example,dc=com
```
## Suppression
Recrééz le groupe "utilisateurs",
Supprimez le groupe "utilisateur·trice·s"
```bash
ldapadd -H ldap://localhost -xwadmin -D cn=admin,dc=example,dc=com -f groupe.ldif
```
Supprimez le groupe "utilisateur·trice·s"
```bash
ldapdelete -H ldap://localhost -xwadmin -D cn=admin,dc=example,dc=com cn=utilisateur·trice·s,ou=Groups,dc=example,dc=com
```