LDAPのデータ更新

毎回調べるのでメモ

# コマンド

|NO |コマンド|できること|備考|
|:--|:--|:--|:--|:--|
|1  | ldapadd     | エントリの追加  |以下と同じ<br>ldapmodifyの'changetype: add'<br>ldapmodifyの-aオプション|
|2  | ldapdelete  | エントリの削除  |以下と同じ<br>ldapmodifyの'changetype: delete'|
|3  | ldapmodify  | エントリの追加(changetype: add)<br>エントリの削除(changetype: delete)<br>エントリの更新(changetype: modify)<br>　- アトリビュート追加(add)<br>　- アトリビュート更新(replace)<br>　- アトリビュート削除(delete)  |ldifの'changetype'を省略した場合<br>-aオプションありは'changetype: add'<br>-aオプションなしは'changetype: modify'

ldapmodifyだけで一連の処理はできそうではある


#実例


###（１）ldapadd

####　＜エントリの追加＞

```sh
$ cat ./ldif
dn: dc=my-domain,dc=com                                                                                                                                                            
objectClass: dcObject                                                                                                                                                              
objectClass: organization                                                                                                                                                          
dc: my-domain
o: my-domain

$ ldapadd -D cn=Manager,dc=my-domain,dc=com -W -f ./ldif

```

###（２）ldapdelete

####　＜エントリの削除＞

```sh
$ cat ./ldif
dc=my-domain,dc=com                                                                                                                                                            

$ ldapdelete -D cn=Manager,dc=my-domain,dc=com -W -f ./ldif
```

###（３）ldapmodify

####　＜エントリの追加＞
- -aオプションを付与して実施

```sh
$ cat ./ldif
dn: dc=my-domain,dc=com                                                                                                                                                            
objectClass: dcObject                                                                                                                                                              
objectClass: organization                                                                                                                                                          
dc: my-domain
o: my-domain

$ ldapmodify -D cn=Manager,dc=my-domain,dc=com -W -f ./ldif -a 
```

- ldifに'changetype: add'を追加して実施

```sh
$ cat ./ldif
dn: dc=my-domain,dc=com                                                                                                                                                            
changetype: add
objectClass: dcObject                                                                                                                                                              
objectClass: organization                                                                                                                                                          
dc: my-domain
o: my-domain

$ ldapmodify -D cn=Manager,dc=my-domain,dc=com -W -f ./ldif
```

####　＜エントリの削除＞
- ldifに'changetype: delete'を記載して実施

```sh
$ cat ./ldif
dn: dc=my-domain,dc=com
changetype: delete

$ ldapmodify -D cn=Manager,dc=my-domain,dc=com -W -f ./ldif
```

####　＜エントリの更新＞

- アトリビュート追加(ldifに'changetype: modify', 'add' を記載して実施)

```sh
$ cat ./ldif
dn: dc=my-domain,dc=com
changetype: modify
add: description
description: aaaaaaaaaa

$ ldapmodify -D cn=Manager,dc=my-domain,dc=com -W -f ./ldif
```


- アトリビュート更新(ldifに'changetype: modify', 'replace'を記載して実施)

```sh
$ cat ./ldif
dn: dc=my-domain,dc=com
changetype: modify
replace: description
description: bbbbbbbbbb

$ ldapmodify -D cn=Manager,dc=my-domain,dc=com -W -f ./ldif
```


- アトリビュート削除(ldifに'changetype: modify', 'delete' を記載して実施)

```sh
$ cat ./ldif
dn: dc=my-domain,dc=com
changetype: modify
delete: description

$ ldapmodify -D cn=Manager,dc=my-domain,dc=com -W -f ./ldif
```

---
複数処理する場合
 - 同じdnの場合はハイフンで区切る 
 - 別のdnの場合は空行で区切る