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

smbpasswd: не удалось добавить запись для пользователя

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:

useradd smbuser

smbpasswd -a smbuser

Только тогда вы сможете добавить пользователя как пользователя 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 выдавал полезный результат, а затем воспроизвел проблему. Вы можете получить полезный результат, показывающий, где что-то идет не так.