Tony Fugere
2004-Sep-23 18:11 UTC
[Samba] Re: Samba 3.0.3 on FC2: windows machine cannot join domain
After, oh, six months of attempts here and there to read everyone's
experiences with Samba/LDAP and inability for a windows 2000/XP machine
to join the domain, I finally discovered what was not working properly.
In my smb.conf I put:
add machine script = /usr/local/sbin/smbldap-useradd -w "%u"
As instructed by many How-to's and Idealx. However, I thought to myself,
%m means machine name right? So, I change the .conf to:
add machine script = /usr/local/sbin/smbldap-useradd -w "%m"
Restarted Samba and tried to join the domain and VOILA! Just thought I'd
let the community know so that when people in my previous position
search Google for this subject they'll find this answer.
As of this e-mail, I'm using Samba 3.0.7, OpenLDAP 2.1.29, and
Smbldap-tools 0.8.5.
--
Tony Fugere
tony_fugere@ncsu.edu
I wrote:
I'm using Samba 3.0.3 on Fedora Core 2 with OpenLDAP 2.1.29 for a
backend. I'm getting to typical "The user name could not be
found."
error upon trying to join a Windows box. I've gone through every digest
on lists.samba.org and other sites and nothing has worked yet. Any
suggestions:
Here's what I've done so far:
1. Installed everything via RPMS:
[root at smbtest <http://lists.samba.org/mailman/listinfo/samba> root]#
rpm -qa | grep openldap
openldap-2.1.29-1
openldap-clients-2.1.29-1
openldap-servers-2.1.29-1
openldap-devel-2.1.29-1
[root at smbtest <http://lists.samba.org/mailman/listinfo/samba> root]#
rpm -qa | grep samba
samba-3.0.3-5
samba-client-3.0.3-5
samba-common-3.0.3-5
samba-swat-3.0.3-5
[root at smbtest <http://lists.samba.org/mailman/listinfo/samba> root]#
rpm -qa | grep smbldap
smbldap-tools-0.8.4-1.1.fc2.dag
[root at smbtest <http://lists.samba.org/mailman/listinfo/samba> root]#
2. Made my SSL certificates and put them in /var/ssl.
3. Made my slapd.conf:
--- Start slapd.conf ---
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/samba.schema
allow bind_v2
passwd-hash {SSHA]
pidfile /var/run/slapd.pid
TLSCipherSuite HIGH:MEDIUM:+SSLv2
TLSCACertificateFile /var/ssl/cacert.pem
TLSCertificateFile /var/ssl/ldapcrt.pem
TLSCertificateKeyFile /var/ssl/ldapkey.pem
TLSVerifyClient 0
security ssf=1 update_ssf=112 simple_bind=64
access to dn=".*,dc=soil,dc=ncsu,dc=edu" attr=userPassword
by dn="cn=Manager,dc=soil,dc=ncsu,dc=edu" write
by self write
by * auth
access to dn=".*,dc=soil,dc=ncsu,dc=edu" attr=mail
by dn="cn=Manager,dc=soil,dc=ncsu,dc=edu" write
by self write
by * auth
access to dn=".*,ou=People,dc=soil,dc=ncsu,dc=edu"
by * read
access to dn=".*,dc=soil,dc=ncsu,dc=edu"
by self write
by * read
database ldbm
suffix "dc=soil,dc=ncsu,dc=edu"
rootdn "cn=Manager,dc=soil,dc=ncsu,dc=edu"
rootpw _thepassword_
directory /var/lib/ldap
index objectClass,uid,uidNumber,gidNumber,memberUid eq
index cn,mail,surname,givenname eq,subinitial
--- End slapd.conf ---
4. Made the smb.conf:
--- Start smb.conf ---
[global]
; Basic server settings
workgroup = testdomain
netbios name = smbtest
server string = Samba Server %v
security = user
allow trusted domains = yes
log level = 0
log file = /var/log/samba/log.%m
max log size = 50
domain logons = Yes
os level = 65
local master = yes
domain master = yes
preferred master = yes
encrypt passwords = yes
passwd program = /usr/local/sbin/smbldap-passwd %u
passwd chat = *new*password* %n\n *new*password* %n\n *successfully*
unix password sync = yes
; User and Machine Account Backends
ldap ssl = start_tls
passdb backend = ldapsam:ldap://smbtest.soil.ncsu.edu:389
ldap suffix = dc=soil,dc=ncsu,dc=edu
ldap admin dn = cn=Manager,dc=soil,dc=ncsu,dc=edu
ldap delete dn = no
ldap user suffix = ou=People
ldap group suffix = ou=Groups
ldap machine suffix = ou=Computers
admin users = administrator
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
; where to store user profiles
logon home logon path
ldap delete dn = Yes
add user script = /usr/local/sbin/smbldap-useradd -m "%u"
add machine script = /usr/local/sbin/smbldap-useradd -w "%u"
add group script = /usr/local/sbin/smbldap-groupadd -p "%g"
add user to group script = /usr/local/sbin/smbldap-groupmod -m "%u"
"%g"
delete user from group script = /usr/local/sbin/smbldap-groupmod -x
"%u" "%g"
set primary group script = /usr/local/sbin/smbldap-usermod -g "%g"
"%u"
delete user script = /usr/local/sbin/smbldap-userdel "%u"
delete group script = /usr/local/sbin/smbldap-groupdel "%g"
[netlogon]
comment = Network Logon Service
path = /usr/local/samba/lib/netlogon
read only = yes
write list = dom_admins
[Homes]
username = tfugere
writeable = Yes
force create mode = 0770
force directory mode = 02770
browseable = No
--- End smb.conf ---
5. Made my smbldap*.conf:
--- Start smbldap.conf ---
UID_START="1000"
GID_START="1000"
SID="S-1-5-21-2625200706-2048882972-3065312840"
slaveLDAP="smbtest.soil.ncsu.edu"
slavePort="389"
masterLDAP="smbtest.soil.ncsu.edu"
masterPort="389"
ldapTLS="1"
verify="require"
cafile="/var/ssl/cacert.pem"
clientcert="/var/ssl/ldapcrt.pem"
clientkey="/var/ssl/ldapkey.pem"
suffix="dc=soil,dc=ncsu,dc=edu"
usersdn="ou=People,dc=soil,dc=ncsu,dc=edu"
computersdn="ou=Computers,dc=soil,dc=ncsu,dc=edu"
groupsdn="ou=Groups,dc=soil,dc=ncsu,dc=edu"
scope="sub"
hash_encrypt="SSHA"
userLoginShell="/bin/bash"
userHomePrefix="/home/"
userGecos="System User"
defaultUserGid="513"
defaultComputerGid="553"
skeletonDir="/etc/skel"
defaultMaxPasswordAge="45"
userSmbHome=""
userProfile=""
userHomeDrive="logondrive"
userScript=""
with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd"
mk_ntpasswd="/usr/sbin/mkntpwd"
--- End smbldap.conf ---
--- Begin smbldap_bind.conf ---
slaveDN="cn=Manager,dc=soil,dc=ncsu,dc=edu"
slavePw="_hidden_"
masterDN="cn=Manager,dc=soil,dc=ncsu,dc=edu"
masterPw="_hidden_"
--- End smbldap_bind.conf ---
6. Started up the services:
/etc/init.d/ldap start
/etc/init.d/smb start
7. Set the root password:
smbpasswd -w _thepassword_
8. Put in some test data:
http://www.soil.ncsu.edu/tony_temp/smbtest.ldif
9. Did a search on the LDAP DB:
ldapsearch -x -Z -D 'cn=Manager,dc=soil,dc=ncsu,dc=edu' -b
'dc=soil,dc=ncsu,dc=edu' -W '(objectclass=*)'
Results: http://www.soil.ncsu.edu/tony_temp/ldapsearch.out
10. Set the root user password:
smbldap-passwd root
11. Changed the local security policy on the Windows XP machine:
Domain member: Digitally encrypt or sign secure data channel
(always) Disabled
Domain member: Digitally encrypt secure data channel (when
possible) Disabled
Domain member: Digitally sign secure data channel (when
possible) Disabled
12. Tried to join the domain through a Windows XP machine and got this
error when using root user:
The following error occurred when attempting to join the domain
"testdomain":
The user name could not be found.
13. Tried to navigate to the domain via my network places and was
successful.
--
Tony Fugere
tony_fugere at ncsu.edu <http://lists.samba.org/mailman/listinfo/samba>
John H Terpstra
2004-Sep-23 18:55 UTC
[Samba] Re: Samba 3.0.3 on FC2: windows machine cannot join domain
Tony, I do not have any proof to contradict your information, however, the source code suggests that this advice is perhaps suspect. The particular module that handles automatic account creation is in ~samba/source/rpc_server/srv_samr_nt.c and specifically at line 2253. Here is the very line that does the parameter substitution: all_string_sub(add_script, "%u", account, sizeof(add_script)); As you can see, it is the "%u" parameter that is being substituted. Maybe I am reading this incorrectly? However, I have performed many hundreds of installations and have always used the "%u" parameter - and it has worked. Given this background I respectfully suggest that we should understand precisely what is happening in your situation by examining the samba logs for the use of this function give both the "%u" and again with the "%m" parameters. You can turn up the debug level on just this module by setting in smb.conf [globals]: log level = 0 rpc_srv:5 sam:5 log file = /var/log/samba/%m.log max log size = 0 Please would test this and report the findings. If our documentation is in error I want to fix it immediately. Thanks so much for your input. Cheers, John T. On Thursday 23 September 2004 12:11, Tony Fugere wrote:> After, oh, six months of attempts here and there to read everyone's > experiences with Samba/LDAP and inability for a windows 2000/XP machine > to join the domain, I finally discovered what was not working properly. > > In my smb.conf I put: > > add machine script = /usr/local/sbin/smbldap-useradd -w "%u" > > As instructed by many How-to's and Idealx. However, I thought to myself, > %m means machine name right? So, I change the .conf to: > > add machine script = /usr/local/sbin/smbldap-useradd -w "%m" > > > Restarted Samba and tried to join the domain and VOILA! Just thought I'd > let the community know so that when people in my previous position > search Google for this subject they'll find this answer. > > As of this e-mail, I'm using Samba 3.0.7, OpenLDAP 2.1.29, and > Smbldap-tools 0.8.5. > > -- > Tony Fugere > tony_fugere@ncsu.edu > > I wrote: > > I'm using Samba 3.0.3 on Fedora Core 2 with OpenLDAP 2.1.29 for a > backend. I'm getting to typical "The user name could not be found." > error upon trying to join a Windows box. I've gone through every digest > on lists.samba.org and other sites and nothing has worked yet. Any > suggestions: > > Here's what I've done so far: > > 1. Installed everything via RPMS: > [root at smbtest <http://lists.samba.org/mailman/listinfo/samba> root]# rpm > -qa | grep openldap openldap-2.1.29-1 > openldap-clients-2.1.29-1 > openldap-servers-2.1.29-1 > openldap-devel-2.1.29-1 > [root at smbtest <http://lists.samba.org/mailman/listinfo/samba> root]# rpm > -qa | grep samba samba-3.0.3-5 > samba-client-3.0.3-5 > samba-common-3.0.3-5 > samba-swat-3.0.3-5 > [root at smbtest <http://lists.samba.org/mailman/listinfo/samba> root]# rpm > -qa | grep smbldap smbldap-tools-0.8.4-1.1.fc2.dag > [root at smbtest <http://lists.samba.org/mailman/listinfo/samba> root]# > > 2. Made my SSL certificates and put them in /var/ssl. > > 3. Made my slapd.conf: > --- Start slapd.conf --- > include /etc/openldap/schema/core.schema > include /etc/openldap/schema/cosine.schema > include /etc/openldap/schema/inetorgperson.schema > include /etc/openldap/schema/nis.schema > include /etc/openldap/schema/samba.schema > > allow bind_v2 > > passwd-hash {SSHA] > > pidfile /var/run/slapd.pid > > TLSCipherSuite HIGH:MEDIUM:+SSLv2 > TLSCACertificateFile /var/ssl/cacert.pem > TLSCertificateFile /var/ssl/ldapcrt.pem > TLSCertificateKeyFile /var/ssl/ldapkey.pem > TLSVerifyClient 0 > > security ssf=1 update_ssf=112 simple_bind=64 > > access to dn=".*,dc=soil,dc=ncsu,dc=edu" attr=userPassword > by dn="cn=Manager,dc=soil,dc=ncsu,dc=edu" write > by self write > by * auth > access to dn=".*,dc=soil,dc=ncsu,dc=edu" attr=mail > by dn="cn=Manager,dc=soil,dc=ncsu,dc=edu" write > by self write > by * auth > access to dn=".*,ou=People,dc=soil,dc=ncsu,dc=edu" > by * read > access to dn=".*,dc=soil,dc=ncsu,dc=edu" > by self write > by * read > > database ldbm > suffix "dc=soil,dc=ncsu,dc=edu" > rootdn "cn=Manager,dc=soil,dc=ncsu,dc=edu" > rootpw _thepassword_ > > directory /var/lib/ldap > > index objectClass,uid,uidNumber,gidNumber,memberUid eq > index cn,mail,surname,givenname eq,subinitial > --- End slapd.conf --- > > 4. Made the smb.conf: > --- Start smb.conf --- > [global] > > ; Basic server settings > workgroup = testdomain > netbios name = smbtest > server string = Samba Server %v > security = user > allow trusted domains = yes > > log level = 0 > log file = /var/log/samba/log.%m > max log size = 50 > > domain logons = Yes > os level = 65 > local master = yes > domain master = yes > preferred master = yes > encrypt passwords = yes > > passwd program = /usr/local/sbin/smbldap-passwd %u > passwd chat = *new*password* %n\n *new*password* %n\n *successfully* > unix password sync = yes > > ; User and Machine Account Backends > ldap ssl = start_tls > passdb backend = ldapsam:ldap://smbtest.soil.ncsu.edu:389 > ldap suffix = dc=soil,dc=ncsu,dc=edu > ldap admin dn = cn=Manager,dc=soil,dc=ncsu,dc=edu > ldap delete dn = no > ldap user suffix = ou=People > ldap group suffix = ou=Groups > ldap machine suffix = ou=Computers > admin users = administrator > > socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 > > ; where to store user profiles > logon home > logon path > > ldap delete dn = Yes > add user script = /usr/local/sbin/smbldap-useradd -m "%u" > add machine script = /usr/local/sbin/smbldap-useradd -w "%u" > add group script = /usr/local/sbin/smbldap-groupadd -p "%g" > add user to group script = /usr/local/sbin/smbldap-groupmod -m "%u" "%g" > delete user from group script = /usr/local/sbin/smbldap-groupmod -x > "%u" "%g" > set primary group script = /usr/local/sbin/smbldap-usermod -g "%g" "%u" > delete user script = /usr/local/sbin/smbldap-userdel "%u" > delete group script = /usr/local/sbin/smbldap-groupdel "%g" > > [netlogon] > comment = Network Logon Service > path = /usr/local/samba/lib/netlogon > read only = yes > write list = dom_admins > > [Homes] > username = tfugere > writeable = Yes > force create mode = 0770 > force directory mode = 02770 > browseable = No > --- End smb.conf --- > > 5. Made my smbldap*.conf: > --- Start smbldap.conf --- > UID_START="1000" > GID_START="1000" > SID="S-1-5-21-2625200706-2048882972-3065312840" > slaveLDAP="smbtest.soil.ncsu.edu" > slavePort="389" > masterLDAP="smbtest.soil.ncsu.edu" > masterPort="389" > ldapTLS="1" > verify="require" > cafile="/var/ssl/cacert.pem" > clientcert="/var/ssl/ldapcrt.pem" > clientkey="/var/ssl/ldapkey.pem" > suffix="dc=soil,dc=ncsu,dc=edu" > usersdn="ou=People,dc=soil,dc=ncsu,dc=edu" > computersdn="ou=Computers,dc=soil,dc=ncsu,dc=edu" > groupsdn="ou=Groups,dc=soil,dc=ncsu,dc=edu" > scope="sub" > hash_encrypt="SSHA" > userLoginShell="/bin/bash" > userHomePrefix="/home/" > userGecos="System User" > defaultUserGid="513" > defaultComputerGid="553" > skeletonDir="/etc/skel" > defaultMaxPasswordAge="45" > userSmbHome="" > userProfile="" > userHomeDrive="logondrive" > userScript="" > with_smbpasswd="0" > smbpasswd="/usr/bin/smbpasswd" > mk_ntpasswd="/usr/sbin/mkntpwd" > --- End smbldap.conf --- > --- Begin smbldap_bind.conf --- > slaveDN="cn=Manager,dc=soil,dc=ncsu,dc=edu" > slavePw="_hidden_" > masterDN="cn=Manager,dc=soil,dc=ncsu,dc=edu" > masterPw="_hidden_" > --- End smbldap_bind.conf --- > > 6. Started up the services: > /etc/init.d/ldap start > /etc/init.d/smb start > > 7. Set the root password: > smbpasswd -w _thepassword_ > > 8. Put in some test data: > http://www.soil.ncsu.edu/tony_temp/smbtest.ldif > > 9. Did a search on the LDAP DB: > ldapsearch -x -Z -D 'cn=Manager,dc=soil,dc=ncsu,dc=edu' -b > 'dc=soil,dc=ncsu,dc=edu' -W '(objectclass=*)' > Results: http://www.soil.ncsu.edu/tony_temp/ldapsearch.out > > 10. Set the root user password: > smbldap-passwd root > > 11. Changed the local security policy on the Windows XP machine: > Domain member: Digitally encrypt or sign secure data channel > (always) Disabled > Domain member: Digitally encrypt secure data channel (when > possible) Disabled > Domain member: Digitally sign secure data channel (when > possible) Disabled > > 12. Tried to join the domain through a Windows XP machine and got this > error when using root user: > The following error occurred when attempting to join the domain > "testdomain": > The user name could not be found. > > 13. Tried to navigate to the domain via my network places and was > successful. > > -- > Tony Fugere > tony_fugere at ncsu.edu <http://lists.samba.org/mailman/listinfo/samba>-- John H Terpstra Samba-Team Member Phone: +1 (650) 580-8668 Author: The Official Samba-3 HOWTO & Reference Guide, ISBN: 0131453556 Samba-3 by Example, ISBN: 0131472216 Hardening Linux, ISBN: 0072254971 OpenLDAP by Example, ISBN: 0131488732 Other books in production.
Apparently Analagous Threads
- Samba 3.0.3 on FC2: windows machine cannot join domain
- Re: Samba 3.0.3 on FC2: windows machine cannot join domain
- getent not showing domain users and groups with winbind but works with sssd
- trouble with german special chars on smb shares
- getent not showing domain users and groups with winbind but works with sssd