Столкнулся с проблемой. Нужно сделать файловое хранилище без домена, однако учетные записи пользователей хочется хранить в LDAP для последующей привязки в Jabber. Решил использовать ldapscripts. Для начала создал в ldap структуру:
Код: Выделить всё
dn: ou=Users,dc=urfu
objectClass: top
objectClass: organizationalUnit
ou: Users
dn: ou=Computers,dc=urfu
objectClass: top
objectClass: organizationalUnit
ou: Computers
dn: ou=Groups,dc=urfu
objectClass: top
objectClass: organizationalUnit
ou: GroupsЗатем добавил дву группы уже с помощью ldapscripts:
Код: Выделить всё
dn: cn=Users,ou=Groups,dc=urfu
objectClass: posixGroup
cn: Users
gidNumber: 10004
description: Group account
structuralObjectClass: posixGroup
entryUUID: 161a0548-a7a4-1031-952d-a1d501fc5479
creatorsName: cn=admin,dc=urfu
createTimestamp: 20121011040132Z
entryCSN: 20121011040132.110126Z#000000#000#000000
modifiersName: cn=admin,dc=urfu
modifyTimestamp: 20121011040132Z
dn: cn=Computers,ou=Groups,dc=urfu
objectClass: posixGroup
cn: Computers
gidNumber: 10005
description: Group account
structuralObjectClass: posixGroup
entryUUID: a01b88e8-a7a4-1031-952f-a1d501fc5479
creatorsName: cn=admin,dc=urfu
createTimestamp: 20121011040523Z
entryCSN: 20121011040523.645630Z#000000#000#000000
modifiersName: cn=admin,dc=urfu
modifyTimestamp: 20121011040523ZЭто группы для хранения соответственно учетных записей машин и пользователей Samba. Хотя в принципе учетные записи машин мне не нужны, у меня же нет домена, но добавил сразу.. мало ли, захочется потом домен.
Через ldapscripts все пользователи и группы заводятся замечательно. В конфиге самба следующее:
Код: Выделить всё
#Настройки OpenLDAP
passdb backend = ldapsam:ldap://127.0.0.1
ldap ssl = off
ldap suffix = dc=urfu
ldap admin dn = "cn=admin,dc=urfu"
#ldap idmap suffix = ou=Idmap
ldap user suffix = ou=Users
ldap group suffix = ou=Groups
ldap machine suffix = ou=Computers
ldap passwd sync = Yes
ldap delete dn = yes
#Скрипты для управления юзерами и группами, первый используется smbpasswd -a
add user script = /usr/sbin/ldapadduser "%u" Users
add group script = /usr/sbin/ldapaddgroup "%g"
add user to group script = /usr/sbin/ldapaddusertogroup "%u" "%g"
delete user script = /usr/sbin/ldapdeleteuser "%u"
delete group script = /usr/sbin/ldapdeletegroup "%g"
delete user from group script = /usr/sbin/ldapdeleteuserfromgroup "%u" "%g"
set primary group script = /usr/sbin/ldapsetprimarygroup "%u" "%g"
rename user script = /usr/sbin/ldaprenameuser "%uold" "%unew"
add machine script = /usr/sbin/ldapaddmachine "%u" ComputersСамо описание Самбы в ldap выглядит так (после smbpaswd -W):
Код: Выделить всё
dn: sambaDomainName=SAMBASRV,dc=urfu
sambaDomainName: SAMBASRV
sambaSID: S-1-5-21-4231628449-694983756-2302091911
sambaAlgorithmicRidBase: 1000
objectClass: sambaDomain
sambaNextUserRid: 1000
structuralObjectClass: sambaDomain
entryUUID: fdd684c4-a7a4-1031-9530-a1d501fc5479
creatorsName: cn=admin,dc=urfu
createTimestamp: 20121011040800Z
sambaMinPwdLength: 5
sambaPwdHistoryLength: 0
sambaLogonToChgPwd: 0
sambaMaxPwdAge: -1
sambaMinPwdAge: 0
sambaLockoutDuration: 30
sambaLockoutObservationWindow: 30
sambaLockoutThreshold: 0
sambaForceLogoff: -1
sambaRefuseMachinePwdChange: 0
sambaNextRid: 1005
entryCSN: 20121011045423.852093Z#000000#000#000000
modifiersName: cn=admin,dc=urfu
modifyTimestamp: 20121011045423ZПроблема в том, что при использовании smbpasswd -a user, пользователь в самба добавлен не будет. Добавится только posixAccoun для пользователя, то есть фактически выполнится ldapadduser, который указан в качетве add user script для самба.
Код: Выделить всё
root@smb:~# smbpasswd -a tux12
New SMB password:
Retype new SMB password:
Successfully added user tux12 to LDAP
^C
,,,,,
dn: uid=tux12,ou=Users,dc=urfu
objectClass: account
objectClass: posixAccount
cn: tux12
uid: tux12
uidNumber: 10002
gidNumber: 10004
homeDirectory: /home/tux12
loginShell: /bin/false
gecos: tux12
description: User account
structuralObjectClass: account
entryUUID: 1600f454-a7ae-1031-8756-a99e1628b3e4
creatorsName: cn=admin,dc=urfu
createTimestamp: 20121011051306Z
entryCSN: 20121011051306.913147Z#000000#000#000000
modifiersName: cn=admin,dc=urfu
modifyTimestamp: 20121011051306ZЕсли повторить то же самое: smbpasswd -a tux12, то самба дописывает свои поля к имеющемуся posixAccount для пользователя:
Код: Выделить всё
dn: uid=tux12,ou=Users,dc=urfu
objectClass: account
objectClass: posixAccount
objectClass: sambaSamAccount
cn: tux12
uid: tux12
uidNumber: 10002
gidNumber: 10004
homeDirectory: /home/tux12
loginShell: /bin/false
gecos: tux12
description: User account
structuralObjectClass: account
entryUUID: 1600f454-a7ae-1031-8756-a99e1628b3e4
creatorsName: cn=admin,dc=urfu
createTimestamp: 20121011051306Z
sambaSID: S-1-5-21-4231628449-694983756-2302091911-1006
displayName: tux12
sambaNTPassword: 3DBDE697D71690A769204BEB12283678
sambaPasswordHistory: 00000000000000000000000000000000000000000000000000000000
00000000
sambaPwdLastSet: 1349932445
sambaAcctFlags: [U ]
userPassword:: e1NTSEF9bTdONDJiZ3M1ei9CZkZRdWZabXJNRnFlaHRRVGkrR0s=
entryCSN: 20121011051405.929110Z#000000#000#000000
modifiersName: cn=admin,dc=urfu
modifyTimestamp: 20121011051405ZТакже иногда при повторном вызове команды пишет, что такой пользователь в ldap уже существует и не запускает add user script...
Таким образом двух зайцев убить не получается. Выходит, что:
1) сначала нужно создавать пользователя через ldapscripts,
2) потом уже заводить его в samba через smbpasswd -a.
Это нормальное поведение или все таки самба при вызове ldapscripts из add user script должна добавить пользователя со своими полями помимо posixAccount?
Contacts: