ldapmodifyuser 替换为 base64

ldapmodifyuser 替换为 base64

我想修改 LDAP 中的某些条目。在 gecos 字段中,目前一些用户只有用户名,我想用他们的全名替换。一般来说这不是问题,但我想用纯文本来做这件事,名称中包含特殊字符(如重音符号)不是一个好主意,这就是为什么我想将它们编码为 base64。现在我知道它在理论上应该如何工作,但它只会给我一个错误。我做了:

ldapmodifyuser user
changetype: modify
replace: gecos
gecos:: YmFzZTY0LVRleHQK

Ctrl-d

这只会给我一个非常神秘的Error modifying user entry uid=username,ou=people,dc=domain,dc=de in LDAP。我做错了什么?使用纯文本 gecos 修改用户时会成功,只有在尝试插入 base64 时才会失败,因为双冒号是必要的,以指示不可打印的文本。

答案1

gecos属性通常包含一行值,但您的 Base64 编码数据包含 0x0A“换行符”(即\n)。某些 LDAP 服务器可能配置为拒绝这种情况,理由是多行值无法以传统的 /etc/passwd 格式表示。

$ echo YmFzZTY0LVRleHQK | base64 -d | hexdump -C
00000000  62 61 73 65 36 34 2d 54  65 78 74 0a              |base64-Text.|
                                            ^^                          ^
py3.10 >>> import base64
py3.10 >>> base64.b64decode("YmFzZTY0LVRleHQK")
b'base64-Text\n'
             ^^

相关内容