nixp.ru v3.0

23 октября 2017,
понедельник,
16:26:28 MSK

DevOps с компанией «Флант»
Anarchist написал 19 марта 2008 года в 16:30 (903 просмотра) Ведет себя как мужчина; открыл 258 тем в форуме, оставил 4097 комментариев на сайте.

Присказка:

Есть сервер FreeBSD с переделанной на OpenLDAP (2.3.41) системной авторизацией.

На нём же — Apache 2.2, каталог с авторизацией. Используется AuthBasicProvider ldap.

Аккаунт обычный (posixAccount). Авторизация (по userPassword) работает на ура.

После того, как указанный пользователь делается ещё и пользователем Samba при попытке регистрации пользователя по тому же паролю Apache посылает далеко и надолго. Но при указании пароля Samba всё работает.

Сказка:

Теперь пытаюсь авторизоваться с виндовой машины в качестве данного пользователя в логах slapd’а можно прочитать RESULT tag=97 err=49 text= (что, как было выяснено ранее означает ввод неверного пароля или попытку обращения к атрибуту, доступ к которому невозможен), система посылает меня далеко и надолго. Логин/пароль при этом не запрашивается, в логах Самбы — ничего интересного.

При попытке обращения к другому Samba-серверу (где авторизация Samba также осуществляется через LDAP, но системная авторизация — традиционная) запрос логина/пароля производится.

Конфиги Самбы (за исключением имён) идентичны.

Вопрос: чо за хуйня?

Дмитрий Шурупов
Anarchist
После того, как указанный пользователь делается ещё и пользователем Samba при попытке регистрации пользователя по тому же паролю Apache посылает далеко и надолго. Но при указании пароля Samba всё работает.

А каким образом он делается пользователем Samba? Интересуют изменения в LDAP.

Я, например, для самбы ручками (Perl-скриптом) добавляю объекту-пользователю свойства sambaSID, sambaLMPassword, sambaNTPassword, и всё работает (авторизация через LDAP в Apache 2.2).

Anarchist
Dmitry Shurupov
А каким образом он делается пользователем Samba?

Да как обычно:

# smbapsswd -a $user


Dmitry Shurupov
Интересуют изменения в LDAP.

Добавляется objectClass: sambaSamAccount

И следующие атрибуты (с значениями)

sambaSID: $value
sambaLMPassword: $value
sambaNTPassword: $value
sambaPasswordHistory: $value
sambaAcctFlags: [U          ]
sambaPwdLastSet: $value


Dmitry Shurupov
Я, например, для самбы ручками (Perl-скриптом) добавляю объекту-пользователю свойства sambaSID, sambaLMPassword, sambaNTPassword, и всё работает (авторизация через LDAP в Apache 2.2).

Это — вторичный вопрос.

У меня авторизация с LDAP через Apache работает и без Samba.

Главный же вопрос: почему не выдаётся запрос на ввод имени пользователя/пароля при обращении к файловому серверу Samba из Win2003?

Уточняю конфигурацию:

На машине где используется классический вариант системной авторизации секция в конфиге smb.conf, описывающая LDAP сервер выглядит так:

passdb backend = ldapsam:ldap://localhost
ldap passwd sync = Yes
ldap admin dn = "cn=Manager,dc=mydomain,dc=ru"
ldap suffix = dc=mydomain,dc=ru
ldap delete dn = no
ldap ssl = off

Объект sambaDomainName и учётные записи пользователей лежат в корне.

Учётная запись выглядит так:

[i]ObjectClasses[/i]
sambaSamAccount
account
[i]Attributes[/i]
displayName
sambaAcctFlags
sambaLMPassword
sambaNTPassword
sambaPasswordHistory
sambaPrimaryGroupSID
sambaPwdCanChange
sambaPwdLastSet
sambaPwdMustChange
sambaSID
uid

Всё работает.

На тестовой машине системная авторизация переделана на LDAP (по сценарию с padl.com).

Учётные записи пользователей живут в ou=People,dc=mydomain,dc=ru, sambaDomainName также живёт в корне.

Секция описывающая сервер авторизации в smb.conf выглядит следующим образом:

passdb backend = ldapsam:ldap://localhost
   ldap passwd sync = Yes
   ldap admin dn = "uid=root,ou=People,dc=mydomain,dc=ru"
   ldap suffix = ou=People,dc=mydomain,dc=ru
#   ldap suffix = dc=mydomain,dc=ru
   ldap delete dn = no
   ldap ssl = off

Суффикс пробовал указывать и в корень, и в ou=People — эффект тот же.

Учётная запись системного пользователя в LDAP выглядит следующим образом:

[i]ObjectClasses[/i]
account
posixAccount
top
inetLocalMailRecipient
[i]Attributes[/i]
cn
gecos
gidNumber
homeDirectory
mailLocalAddress
mailRoutingAddress
uid
uidNumber
userPassword

После того, как системный пользователь становится ещё и пользователем LDAP, его учётная запись выглядит так:

[i]ObjectClasses[/i]
account
posixAccount
top
inetLocalMailRecipient
sambaSamAccount
[i]Attributes[/i]
cn
displayName
gecos
gidNumber
homeDirectory
loginShell
mailLocalAddress
mailRoutingAddress
sambaAcctFlags
sambaLMPassword
sambaNTPassword
sambaPasswordHistory
sambaPwdLastSet
sambaSID
uid
uidNumber
userPassword
Anarchist

На выньдоуз в силу явной бестолковости оного забил.

Пробую монтировать посредством smbclient с того же хоста:

# smbclient -U $MYUID //localhost/ftn
Password:
Domain=[SAMBA] OS=[Unix] Server=[Samba 3.0.28]
tree connect failed: NT_STATUS_BAD_NETWORK_NAME
Anarchist

Согласно <font color=«blue»>советам товарищей</font> пробовал добавлять в smb.conf

msdfs proxy = no

Эффект никакой.

Но после удаления этой строчки (и естественно рестарта Самбы) внезапно удалось смонтировать ресурс посредством smbclient на том же хосте:

# /usr/local/bin/smbclient //localhost/test -U user

Чудеса…

UPDATE:

В таком виде работает и удалённо, и с FreeBSD хоста, и с выньдоуз (в выньдоуз (2003) login/пароль совпадают с оными для Самбы, запрос на ввод логина/пароля не выводится).

Попытка же вывода списка расшаренных ресурсов

# /usr/local/bin/smbclient //localhost/ -U user
Domain=[SAMBA] OS=[Unix] Server=[Samba 3.0.28]
tree connect failed: NT_STATUS_BAD_NETWORK_NAME


: что локально, что с другого FreeBSD хоста, что с выньдоуз обламывается.

Но запрос списка расшаренных каталогов с FreeBSD-хоста посредством команды:

# smbclient -L 127.0.0.1 -U user

работает.

Anarchist

Оттанцевав положенный по ритуалу танец с шаманским бубном <font color=«blue»>зарегистрировал ошибку в Багзилле</font>.

neogeisha

а если еще pam приделать… ?

null
Anarchist
neogeisha
а если еще pam приделать… ?

В смысле «$pam приделать$"?

Anarchist

Сам дурак.

Что-то забыл рестартовать (правда непонятно что именно).

После перезагрузки системы (добрался до «пересобрать ядро») всё заработало.

ЗЫ: Не забыть отписать в багзилле и закрыть баг.