Назад | Перейти на главную страницу

Samba + LDAP acl - анонимная привязка?

У меня есть рабочий Samba PDC, который использует OpenLDAP в качестве бэкэнда. Я собираюсь настроить прокси-пользователя samba, но у меня проблемы с написанием правильных безопасных списков контроля доступа.

Я использовал этот acl:

{0}to * by group.exact="cn=ldap.admins,ou=groups,dc=example,dc=com" write by * break
{1}to dn.one="dc=example,dc=com" filter=(objectClass=sambaDomain) by group.exact="cn=samba.admins,ou=groups,dc=example,dc=com" write by * break
{2}to attrs=@sambaSamAccount,userPassword by group.exact="cn=samba.admins,ou=groups,dc=example,dc=com" write by * break
{3}to dn.subtree="ou=people,dc=example,dc=com" attrs=userPassword by self write by * break
{4}to attrs=userPassword,shadowLastChange,sambaNTPassword,sambaLMPassword,sambaPwdLastSet,sambaPwdMustChange by self read by anonymous auth by * none
{5}to * by users read

(найдено здесь: http://blogger.ziesemer.com/2011/01/ldap-authentication-for-samba.html)

И из Windows я не могу войти в систему (Windows сообщает неправильный пароль или имя пользователя.

Когда я вставляю новую строку olcAccess как правило № 0, все идеально:

olcAccess: {0}to * by * read

я считать что это поведение вызвано тем фактом, что в середине процесса аутентификации samba повторно связывается с OpenLDAP: соединение от samba, использующего прокси-пользователя, разрывается, и инициируется анонимное связывание.

В журнале вы видите такие строки:

Jul  6 12:06:06 ubuserver slapd[1088]: conn=1110 fd=48 ACCEPT from PATH=/var/run/slapd/ldapi (PATH=/var/run/slapd/ldapi)
Jul  6 12:06:06 ubuserver slapd[1088]: conn=1110 op=0 BIND dn="" method=128
Jul  6 12:06:06 ubuserver slapd[1088]: conn=1110 op=0 RESULT tag=97 err=0 text=
Jul  6 12:06:06 ubuserver slapd[1088]: conn=1110 op=1 SRCH base="dc=example,dc=com" scope=2 deref=0 filter="(&(objectClass=posixAccount)(uid=suser2))"
Jul  6 12:06:06 ubuserver slapd[1088]: conn=1110 op=1 SRCH attr=uid userPassword uidNumber gidNumber cn homeDirectory loginShell gecos description objectClass
Jul  6 12:06:06 ubuserver slapd[1088]: => access_allowed: search access to "dc=itthon,dc=cucc" "entry" requested
Jul  6 12:06:06 ubuserver slapd[1088]: => acl_get: [1] attr entry
Jul  6 12:06:06 ubuserver slapd[1088]: => acl_mask: access to entry "dc=example,dc=com", attr "entry" requested
Jul  6 12:06:06 ubuserver slapd[1088]: => acl_mask: to all values by "", (=0)
Jul  6 12:06:06 ubuserver slapd[1088]: <= check a_dn_pat: *
Jul  6 12:06:06 ubuserver slapd[1088]: <= acl_mask: [2] applying +0 (break)
Jul  6 12:06:06 ubuserver slapd[1088]: <= acl_mask: [2] mask: =0
Jul  6 12:06:06 ubuserver slapd[1088]: => dn: [2] dc=example,dc=com
Jul  6 12:06:06 ubuserver slapd[1088]: => dn: [4] ou=people,dc=example,dc=com
Jul  6 12:06:06 ubuserver slapd[1088]: => acl_get: [6] attr entry
Jul  6 12:06:06 ubuserver slapd[1088]: => acl_mask: access to entry "dc=example,dc=com", attr "entry" requested
Jul  6 12:06:06 ubuserver slapd[1088]: => acl_mask: to all values by "", (=0)
Jul  6 12:06:06 ubuserver slapd[1088]: <= check a_dn_pat: users
Jul  6 12:06:06 ubuserver slapd[1088]: <= acl_mask: no more <who> clauses, returning =0 (stop)

Вопросы:

  1. Правильно ли я понимаю, что проблема вызвана анонимным повторным подключением?
  2. Есть ли способ указать Samba всегда связываться с прокси-пользователем (тем, который указан в ldap admin dn в smb.conf)?
  3. Если нет, то есть ли способ настроить безопасные списки ACL, то есть не давать права чтения всем?

(Система - Ubuntu 12.04)

Проблема заключалась в том, что samba передала задание PAM, а в файле /etc/ldap.conf я забыл заполнить bind user и bind pw. Итак, PAM привязан к LDAP как анонимный и не имеет прав на чтение этих атрибутов.