LINUX.ORG.RU
ФорумAdmin

Samba+OpenLDAP, не работает добавление новой машины


0

0

Здравствуйте. Недавно возникла такая проблема с КД на самбе - не вводит новые тачки в домен, ошибка - не найдено имя пользователя. Логины и шары работают нормально, посмотрев LdapAdmin'ом нашел следующий косяк - самба добавляет аккаунт машины, но не со всеми параметрами, например objectClass: sambaSamAccount, sambaAcctFlags: [W ], sambaSID.

Поставив log level = 5 в smb.conf получил в логах следующее:

[2009/10/22 12:21:18, 5] lib/smbldap.c:smbldap_search_ext(1182)
smbldap_search_ext: base => [dc=###,dc=###,dc=###], filter => [(&(uid=MAC4$)(objectclass=sambaSamAccount))], scope => [2]
[2009/10/22 12:21:18, 4] passdb/pdb_ldap.c:ldapsam_getsampwnam(1401)
ldapsam_getsampwnam: Unable to locate user [MAC4$] count=0
[2009/10/22 12:21:18, 3] smbd/sec_ctx.c:pop_sec_ctx(415)
pop_sec_ctx (0, 0) - sec_ctx_stack_ndx = 1
[2009/10/22 12:21:18, 3] smbd/sec_ctx.c:push_sec_ctx(207)
push_sec_ctx(0, 0) : sec_ctx_stack_ndx = 2
[2009/10/22 12:21:18, 3] smbd/uid.c:push_conn_ctx(408)
push_conn_ctx(101) : conn_ctx_stack_ndx = 1
[2009/10/22 12:21:18, 3] smbd/sec_ctx.c:set_sec_ctx(307)
setting sec ctx (0, 0) - sec_ctx_stack_ndx = 2
[2009/10/22 12:21:18, 5] auth/auth_util.c:debug_nt_user_token(448)
NT user token: (NULL)
[2009/10/22 12:21:18, 5] auth/auth_util.c:debug_unix_user_token(474)
UNIX token of user 0
Primary group is 0 and contains 0 supplementary groups
[2009/10/22 12:21:18, 5] lib/smbldap.c:smbldap_search_ext(1182)
smbldap_search_ext: base => [ou=groups,dc=###,dc=###,dc=###], filter => [(&(objectClass=sambaGroupMapping)(|(displayName=MAC4$)(cn=MAC4$)))], scope => [2]
[2009/10/22 12:21:18, 4] passdb/pdb_ldap.c:ldapsam_getgroup(2244)
ldapsam_getgroup: Did not find group
[2009/10/22 12:21:18, 3] smbd/sec_ctx.c:pop_sec_ctx(415)
pop_sec_ctx (0, 0) - sec_ctx_stack_ndx = 1
[2009/10/22 12:21:18, 3] smbd/sec_ctx.c:pop_sec_ctx(415)
pop_sec_ctx (0, 10001) - sec_ctx_stack_ndx = 0
[2009/10/22 12:21:18, 5] rpc_server/srv_samr_nt.c:_samr_create_user(2623)
_samr_create_user: -1 can add this account : True
[2009/10/22 12:21:18, 3] smbd/sec_ctx.c:push_sec_ctx(207)
push_sec_ctx(0, 10001) : sec_ctx_stack_ndx = 1
[2009/10/22 12:21:18, 3] smbd/uid.c:push_conn_ctx(408)
push_conn_ctx(101) : conn_ctx_stack_ndx = 0
[2009/10/22 12:21:18, 3] smbd/sec_ctx.c:set_sec_ctx(307)
setting sec ctx (0, 0) - sec_ctx_stack_ndx = 1
[2009/10/22 12:21:18, 5] auth/auth_util.c:debug_nt_user_token(448)
NT user token: (NULL)
[2009/10/22 12:21:18, 5] auth/auth_util.c:debug_unix_user_token(474)
UNIX token of user 0
Primary group is 0 and contains 0 supplementary groups
[2009/10/22 12:21:18, 5] lib/username.c:Get_Pwnam_alloc(131)
Finding user MAC4$
[2009/10/22 12:21:18, 5] lib/username.c:Get_Pwnam_internals(75)
Trying _Get_Pwnam(), username as lowercase is mac4$
[2009/10/22 12:21:18, 5] lib/username.c:Get_Pwnam_internals(83)
Trying _Get_Pwnam(), username as given is MAC4$
[2009/10/22 12:21:18, 5] lib/username.c:Get_Pwnam_internals(102)
Checking combinations of 0 uppercase letters in mac4$
[2009/10/22 12:21:18, 5] lib/username.c:Get_Pwnam_internals(108)
Get_Pwnam_internals didn't find user [MAC4$]!
Warning : using command-line passwords, ldapscripts may not be safe
[2009/10/22 12:21:19, 3] passdb/pdb_interface.c:pdb_default_create_user(329)
_samr_create_user: Running the command `/usr/local/sbin/ldapaddmachine 'mac4$' computers' gave 0
[2009/10/22 12:21:19, 5] lib/username.c:Get_Pwnam_alloc(131)
Finding user MAC4$
[2009/10/22 12:21:19, 5] lib/username.c:Get_Pwnam_internals(75)
Trying _Get_Pwnam(), username as lowercase is mac4$
[2009/10/22 12:21:19, 5] lib/username.c:Get_Pwnam_internals(83)
Trying _Get_Pwnam(), username as given is MAC4$
[2009/10/22 12:21:19, 5] lib/username.c:Get_Pwnam_internals(102)
Checking combinations of 0 uppercase letters in mac4$
[2009/10/22 12:21:19, 5] lib/username.c:Get_Pwnam_internals(108)
Get_Pwnam_internals didn't find user [MAC4$]!
[2009/10/22 12:21:19, 3] passdb/pdb_interface.c:pdb_default_create_user(354)
pdb_default_create_user: failed to create a new user structure: NT_STATUS_NO_SUCH_USER

То есть, если я правильно понял, самба ищет в лдапе имя аккаунта, не находит, при помощи скрипта из smbldaptools успешно добавляет аккаунт, но потом не может его найти и добавить необходимые аттрибуты, так? Как же это починить, может кто-нибудь знает? Заранее спасибо.

P.S. FreeBSD 7.0-RELEASE; samba-3.0.37,1; openldap-server-2.4.19; smbldap-tools-0.9.4_2


Ответ на: комментарий от vlb

Через стандартный виндовый диалог изменение имени компьютера/домена. Если заранее через тот же LdapAdmin добавить нужный аккаунт нужного типа - машина добавляется нормально.

dfc
() автор топика

>То есть, если я правильно понял
правильно.

>Как же это починить, может кто-нибудь знает?
у вас ошибка в настройках.

zgen ★★★★★
()
Ответ на: комментарий от zgen

id mac4$
id: mac4$: no such user

getent group
<многабукафф>
admins:*:10001
users:*:10002
computers:*:10003

getent user
Unknown database: user
Usage: getent database [key ...]
database may be one of:
ethers group hosts networks passwd protocols rpc services shells

smb.conf
[global]
workgroup = ###
netbios name = FreeBSD
server string = PDC
security = user
encrypt passwords = yes
load printers = no
admin users = admin
log file = /var/log/samba/samba.log
log level = 1
max log size = 50000
passdb backend = ldapsam:ldap://127.0.0.1
ldap suffix = dc=###,dc=###,dc=###
ldap user suffix = ou=users
ldap group suffix = ou=groups
ldap machine suffix = ou=computers
ldap admin dn = "cn=root,dc=###,dc=###,dc=###"
ldap delete dn = no
ldap ssl = off
winbind uid = 10000-20000
winbind gid = 10000-20000
winbind use default domain = yes
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
local master = yes
os level = 255
domain master = yes
preferred master = yes
domain logons = yes
password server = freebsd.###.###.###.
logon path =
logon script = proxy.vbs
logon home =
add machine script = /usr/local/sbin/ldapaddmachine '%u' computers
add user script = /usr/local/sbin/ldapadduser '%u' users
add group script = /usr/local/sbin/ldapaddgroup '%g'
add user to group script = /usr/local/sbin/ldapaddusertogroup '%u' '%g'
delete user script = /usr/local/sbin/ldapdeleteuser '%u'
delete group script = /usr/local/sbin/ldapdeletegroup '%g'
delete user from group script = /usr/local/sbin/ldapdeleteuserfromgroup '%u' '%g'
set primary group script = /usr/local/sbin/ldapsetprimarygroup '%u' '%g'
rename user script = /usr/local/sbin/ldaprenameuser '%uold' '%unew
dns proxy = no
display charset = koi8-r
unix charset = koi8-r
dos charset = cp866
<дальше описание шар>

dfc
() автор топика
Ответ на: комментарий от dfc

>id mac4$
>id: mac4$: no such user
говорит нам о том, что
>add machine script = /usr/local/sbin/ldapaddmachine '%u' computers
при добавлении машины в домен не отработал. Кстати, покажите его.
Либо nss_ldap неправильно настроен.

Проверять можно до посинения вручную, запуская `/usr/local/sbin/ldapaddmachine computername$ computers` и проверяя `id computername$`

zgen ★★★★★
()
Ответ на: комментарий от zgen

# ldapaddmachine mac4$ computers Warning : using command-line passwords, ldapscripts may not be safe Successfully added machine mac4$ to LDAP # id mac4$ id: mac4$: no such user # ldapdeletemachine mac4$ Warning : using command-line passwords, ldapscripts may not be safe Successfully deleted machine uid=mac4$,ou=computers,dc=###,dc=###,dc=### from LDAP

anonymous
()
Ответ на: комментарий от anonymous

извините, забыл залогиниться
# ldapaddmachine mac4$ computers
Warning : using command-line passwords, ldapscripts may not be safe
Successfully added machine mac4$ to LDAP
# id mac4$
id: mac4$: no such user
# ldapdeletemachine mac4$
Warning : using command-line passwords, ldapscripts may not be safe
Successfully deleted machine uid=mac4$,ou=computers,dc=###,dc=###,dc=### from LDAP

dfc
() автор топика
Ответ на: комментарий от dfc

nss_ldap.conf

host 127.0.0.1
base dc=pop,dc=penza,dc=net
ldap_version 3
port 389
scope one
timelimit 30
bind_timelimit 10
bind_policy soft
nss_connect_policy persist
idle_timelimit 3600
nss_paged_results yes
pagesize 1000
nss_base_passwd ou=users,dc=###,dc=###,dc=###?one
nss_base_shadow ou=users,dc=###,dc=###,dc=###?one
nss_base_group ou=groups,dc=###,dc=###,dc=###?one
nss_base_hosts ou=computers,dc=###,dc=###,dc=###?one

Что здесь может быть не правильно?

dfc
() автор топика
Ответ на: комментарий от zgen

>nss_base_passwd dc=###,dc=###,dc=###?sub
т.е. убрать ou=users и сменить scope на sub? странно, а раньше (до того как это все началось) все работало именно так... ну да ладно, попробую в любом случае.

>2. Просил же показать


>ldapaddmachine


Вам сам скрипт? Так я его никогда не трогал, какой он установился из портов, такой он и есть и, оять же, раньше все работало. Но раз уж Вы просите:

#!/bin/sh
if [ -z "$1" ] || [ -z "$2" ] || [ "$1" = "-h" ] || [ "$1" = "--help" ]
then
echo "Usage : $0 <machinename with ending \$> <groupname | gid> [uid]"
exit 1
fi

# Source runtime file
_RUNTIMEFILE="/usr/local/lib/ldapscripts/runtime"
. "$_RUNTIMEFILE"

# Machine name = first argument
_USER="$1"
# Machine GID = second argument
_grouptogid "$2"
# Machine UID
if [ -z "$3" ] # No argument, we must find a correct UID
then
_findlastmachine
else
_UID="$3"
fi

# Use template if necessary
if [ -n "$MTEMPLATE" ] && [ -r "$MTEMPLATE" ]
then
_getldif="cat $MTEMPLATE"
else
_getldif="_extractldif 2"
fi

# Add user to LDAP
$_getldif | _filterldif | _askattrs | _utf8encode | _ldapadd

[ $? -eq 0 ] || end_die "Error adding machine $_USER to LDAP"
end_ok "Successfully added machine $_USER to LDAP"

dfc
() автор топика
Ответ на: комментарий от dfc

>т.е. убрать ou=users и сменить scope на sub?
Идея состоит в том, что samba ищет machine account'ы не только внутри себя, но и в libnss, при том фильтре что вы задали maccount'ы никак не будут выбираться, если вы их конечно кладете не в users.

>Вам сам скрипт? Так я его никогда не трогал, какой он установился из портов
нифига не понятно. :( Что мешало smbldaptools использовать?

zgen ★★★★★
()
Ответ на: комментарий от zgen

>Что мешало smbldaptools использовать?

Приведенный выше скрипт ldapaddmachine как раз-таки из smbldaptools, в первом сообщении я писал о том, что они установлены
>smbldap-tools-0.9.4_2


Хммм... самое интересное, что клиентская винда теперь выдает ошибку "не удалось подключиться к контроллеру домена для домена ###.###.###"
Посмотрю что в логах самбы - отпишусь.

dfc
() автор топика
Ответ на: комментарий от dfc

Хех... Включил WINS и все заработало :)
zgen, спасибо за советы!

dfc
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.