добавление user_attrs в триггеры dovecot-ldap.conf «не удалось сбросить привилегии: у пользователя отсутствует UID (см. Настройку mail_uid)»

Справочная информация:

Я использую Dovecot в Debian 10 и переключаю серверную часть userdb / passdb с NIS на LDAP, в основном потому, что я хочу узнать о LDAP.

Для NIS у меня было это в dovecot.conf:

userdb {
    driver = passwd
}
passdb {
    driver = pam
    args = dovecot
}

#  mail_uid and mail_gid are NOT set
#mail_uid = dovecot
#mail_gid = mail

и это (извлечение) в nsswitch.conf:

passwd: files nis
group:  files nis
shadow: files nis

Когда я переключился на LDAP, у меня есть это (извлечение) в dovecot.conf:

userdb {
    driver = ldap
    args = /etc/dovecot/dovecot-ldap.conf
}
passdb {
    driver = ldap
    args = /etc/dovecot/dovecot-ldap.conf
}

#  mail_uid and mail_gid are still NOT set
#mail_uid = dovecot
#mail_gid = mail

и это (и только это) в dovecot-ldap.conf:

base = ou=Users,dc=pasta,dc=net
uris = ldap://192.168.1.21/
auth_bind = yes
auth_bind_userdn = uid=%u,ou=Users,dc=pasta,dc=net

И NIS, и версия LDAP работают, то есть я могу запустить Mutt и прочитать мою (alexis) почту.

Однако я хочу, чтобы Dovecot искал другие атрибуты из LDAP, например почтовая квота или домашний каталог, но не зацикливайтесь на этих конкретных атрибутах: я пытаюсь узнать, как передавать атрибуты из LDAP в Dovecot, и я просто собираюсь использовать домашний каталог в качестве примера в конфигурации ниже.

Проблема:

Итак, я сообщаю Dovecot, в каких записях LDAP определяется домашний каталог, добавляя это в dovecot-ldap.conf:

user_attrs = homeDirectory=home

Однако, как только я это сделаю, голубятня начнет жаловаться:

dovecot: imap(alexis)<26179><hHrHde6XHLjAqAEQ>: Error: Couldn't 
    drop privileges: User is missing UID (see mail_uid setting)

Что я пробовал:

Теперь я думаю, что текст mail_uid вводит в заблуждение: он мне не нужен с NIS, так зачем мне вдруг он нужен с LDAP?

И действительно, если я добавлю в dovecot .conf this:

mail_uid = dovecot
mail_gid = mail

тогда жалоба просто меняется на:

dovecot: imap(alexis): Error: Mail access for users with UID 111
    not permitted (see first_valid_uid in config file, uid 
    from mail_uid setting).

Но UID dovecot - это просто значение по умолчанию в Debian 10: я не думаю, что мне следует возиться с этим. И, в любом случае, я не пытаюсь читать почту dovecot , я пытаюсь прочитать свою (alexis) почту, поэтому я действительно думаю, что это сообщение об ошибке вводит в заблуждение.

Я попытался просто поставить высокий числовой UID несуществующего пользователя в mail_uid с предсказуемыми результатами:

dovecot: imap(alexis)<28748><7lb3y+6XmLjAqAEQ>: Error: 
    stat(/var/mail/maildir/alexis/tmp) failed: Permission denied 
    (euid=5000(<unknown>) egid=5000(<unknown>) missing +x perm: 
    /var/mail/maildir/alexis, dir owned by 1000:1000 mode=0700)

Я мог бы изменить владельца всего в / var / mail по своему усмотрению, но это действительно кажется неправильным.

Так что я снова закомментировал mail_uid и mail_gid .

Я подумал, что Dovecot почему-то решил, что нужно переключиться с анонимности Доступ LDAP (для получения атрибутов пользователя, а не для чтения почты) к аутентифицированному доступу LDAP, но добавление пользователя dovecot к LDAP и установка dn и dnpass в dovecot-ldap.conf не сделали разница, ошибка осталась:

dovecot: imap(alexis)<26179><hHrHde6XHLjAqAEQ>: Error: Couldn't 
    drop privileges: User is missing UID (see mail_uid setting)

Но он должен иметь возможность читать атрибуты без аутентификации:

ziti# ldapsearch -Y EXTERNAL -H ldapi:/// -W -b 'cn=config' -LLL "(objectClass=olcDatabaseConfig)"
...
dn: olcDatabase={1}mdb,cn=config
...
olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * none
olcAccess: {1}to attrs=shadowLastChange by self write by * read
olcAccess: {2}to * by * read
...
ziti#

Я видел Не удалось сбросить привилегии: у пользователя отсутствует UID (см. настройку mail_uid) , но Я действительно хочу узнать , что здесь происходит, и , почему он не работает, вместо того, чтобы переключиться на другой драйвер userdb / passdb.

Я много гуглил и нашел много аналогичная проблема (с решениями), но ни одна из них не соответствовала моей ситуации (хотя это не помешало мне попробовать половину из них nyway).

Кто-нибудь может посоветовать, пожалуйста? Спасибо!

1
задан 22 November 2019 в 15:49
1 ответ

Doh... Установка user_attr к чему-то перезаписи значения по умолчанию! (Я невольно предположил, что это добавило заданные значения к значениям по умолчанию.)

, Таким образом, я просто должен был установить user_attrs для определения местоположений весь атрибуты, с которыми нуждалась Голубятня:

user_attrs = homeDirectory=home,uidNumber=uid,gidNumber=gid

Затем это работало.

0
ответ дан 4 December 2019 в 02:32

Теги

Похожие вопросы