Не уверен, принадлежит ли это больше к serverfault или нет ...
ЗАДНИЙ ПЛАН:
Я использую openldap и pam / nss / ldap для аутентификации на моем сервере (веб-почта и т. Д.).
Мои файлы, которые нормально работают:
/etc/openldap/slapd.conf:
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
allow bind_v2
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd.args
loglevel 0
access to attrs=userPassword,shadowLastChange
by dn="cn=Admin,dc=MYDOMAIN,dc=com" write
by anonymous auth
by self write
by * none
access to *
by dn="cn=Admin,dc=MYDOMAIN,dc=com" write
by * read
database bdb
suffix dc=MYDOMAIN,dc=com
rootdn cn=Manager,dc=MYDOMAIN,dc=com
directory /var/lib/ldap
index objectClass eq,pres
index ou,cn,mail,surname,givenname eq,pres,sub
index uidNumber,gidNumber,loginShell eq,pres
index uid,memberUid eq,pres,sub
index nisMapName,nisMapEntry eq,pres,sub
Но когда я меняю доступ к:
access to *
by self write
by users read
by anonymous auth
access to attrs=userPassword
by self write
by anonymous auth
by * none
Я больше не могу войти в систему. Как я могу написать это, чтобы я мог входить в систему, но чтобы все в мире не читали и записывали?
Я обнаружил, что, по крайней мере, для samba на debian вы должны предоставить * доступ для чтения к нескольким атрибутам в учетных записях для входа:
access to attrs=userPassword
by anonymous auth
by * none
access to dn.subtree="ou=People,dc=MYDOMAIN,dc=com"
attrs=dc,cn,uid,gecos,entry
by * read
access to *
by dn="cn=admin,dc=MYDOMAIN,dc=com" write
by peername.ip=127.0.0.1 read
by * none
dn.subtree = "ou = ..." добавляет дополнительную безопасность, так что вы открываете анониму только то, что действительно неизбежно. Это означает, что анонимный пользователь не может искать / просматривать это поддерево, кстати, он / она может только «угадывать» правильный dc, cn, независимо от того, что нужно вашему приложению / услуге.
By peername.ip = 127 ... следует избегать, если вы создадите все приложения / службы, которые используют вход в систему с учетной записью администратора, или если вам нужен доступ только для чтения для своих приложений, вы можете сделать для этого специальный DNS, вы можете затем пропустите строфу peername.ip.
Я думаю, если вы это сделаете:
access to attrs=userPassword,shadowLastChange
by dn="cn=Admin,dc=MYDOMAIN,dc=com" write
by anonymous auth
by self write
by * none
access to *
by dn="cn=Admin,dc=MYDOMAIN,dc=com" write
by self write
by anonymous auth
by users read
by * none
Вы получите то, что хотите.
Ваша проблема может быть в порядке. Похоже, вы поместили общую запись вверху, а не внизу, где она и должна быть.
Кроме того, если вас интересует безопасность, вы захотите использовать TLS или SSL для защиты канала связи.