tl; dr Предполагая базовую (но работающую) конфигурацию LDAP / PAM, почему smbpasswd выдает это сообщение об ошибке, когда я пытаюсь добавить существующего пользователя UNIX / LDAP в Samba?
У меня есть базовая, но работающая установка LDAP на сервере Debian, на котором есть несколько учетных записей, загруженных паролями и т.п., и соответствующие учетные записи UNIX созданы. У меня также есть базовая конфигурация PAM / NSS, которая, похоже, работает.
Я могу войти в систему и использовать учетные записи через LDAP. Теперь я хочу настроить простой файловый ресурс с помощью Samba и заставить его аутентифицировать пользователей через серверную часть PAM / LDAP. Я нахожусь на том этапе, когда мне нужно создать пользователей Samba, используя smbpasswd
утилита, однако это приводит к ошибке.
Сначала я установил пароль LDAP:
# smbpasswd -W
Затем я попытался добавить пользователя, который уже настроен в LDAP:
# smbpasswd -a new_user
New SMB password:
Retype SMB password:
Failed to add entry for user new_user.
Поэтому я не знаю, почему эта команда не работает. Сначала я подумал, что это потому, что мне нужно, чтобы пользователи в каталоге LDAP были sambaSamAccount
с. Поэтому я обновил файл LDIF моего пользователя, чтобы он выглядел так:
dn: cn=new_user,ou=group,dc=example,dc=com
cn: new_user
gidNumber: 1000
objectClass: top
objectClass: posixGroup
dn: uid=new_user,ou=people,dc=example,dc=com
objectClass: top
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
objectClass: sambaSamAccount
uid: new_user
uidNumber: 1000
gidNumber: 1000
cn: test user
sn: new_user
mail: new_user@example.com
loginShell: /bin/bash
homeDirectory: /home/new_user
sambaSID: 3000
sambaDomainName: TEST-ROME
Единственными изменениями, внесенными в указанный выше LDIF, были добавление sambaSamAccount
как objectClass
и sambaSID
и sambaDomainName
. В конце концов я хочу реализовать PDC, поэтому я почти уверен, что мне нужен sambaSamAccount
тем не мение.
Однако после всего этого я все еще получаю ту же ошибку.
Итак, как можно отладить эту ошибку?
Решено После отладки демона, как было предложено, я обнаружил, что smbpasswd
выполнял запросы с пустым base dn
поле, поэтому не возвращает результатов. Это было исправлено добавлением ldap suffix
и ldap user suffix
поля в мои smb.conf
. После этого я понял, что мне также нужен правильный способ генерации sambaSID, но это отдельная проблема.
Просто добавьте пользователя в свой локальный логин.
Для Ex:
Только тогда вы сможете добавить пользователя как пользователя samba
Я обнаружил, что лучший способ отладить эту проблему - посмотреть, что происходит с точки зрения LDAP. Сначала выполните «ps aux | grep slapd», чтобы получить аргументы, передаваемые демону, в моей системе (CentOS 5.6) я получаю:
/ usr / sbin / slapd -h ldap: /// -u ldap
Остановите демон slapd (/etc/init.d/slapd stop или аналогичный), а затем запустите демон в интерактивном режиме (т. Е. Из командной строки) с помощью флага «-d». -1 (в качестве аргумента для -d) - хорошая отправная точка, т.е. он регистрирует все, т.е.
/ usr / sbin / slapd -h ldap: /// -u ldap -d -1
Если это слишком много информации, прочтите параметры до "-d" - из памяти я использовал 256 совсем немного. Идея состоит в том, чтобы slapd выдавал полезный результат, а затем воспроизвел проблему. Вы можете получить полезный результат, показывающий, где что-то идет не так.