Hi. When I tried to setup my LDAP I used the smbldap-tools from idealx. I discovered some errors which made the tools unusable for me. Here's a fix for the bugs I discovered: a) I decided to use a suffix in the LDAP which contains spaces, ie. I used something like "o=My Org,c=DE". Because the suffix wasn't quoted in the various calls in the tools, this didn't work. b) It used "sprint" to convert dec->hex. My perl doesn't know sprint, but knows sprintf. Now the tools use sprintf. c) When creating a new Samba user with smbldap-useradd.pl -a, the first LDAP invocation missed the required rid attribute. d) The GECOS entry just contained "user" or "group" as a default. I didn't like this and changed it so that the default is the "userName". e) It no longer uses a logon script called "username.cmd" but uses a default. Attached is a patch against the 0.6 version. Alexander Skwar -- How to quote: http://learn.to/quote (german) http://quote.6x.to (english) Homepage: http://www.iso-top.de | Jabber: askwar@a-message.de iso-top.de - Die g?nstige Art an Linux Distributionen zu kommen Uptime: 3 hours 17 minutes -------------- next part -------------- Binary files sbin/mkntpwd and modified/mkntpwd differ diff -ur sbin/smbldap_conf.pm modified/smbldap_conf.pm --- sbin/smbldap_conf.pm 2002-05-14 08:05:54.000000000 +0000 +++ modified/smbldap_conf.pm 2002-05-14 08:13:54.000000000 +0000 @@ -117,13 +117,13 @@ # Samba defs # #$_userSmbHome = q(\\\\PDC-SRV\\homes); -$_userSmbHome = q(\\\\_PDCNAME_\\homes); +$_userSmbHome = q(\\\\_PDCNAME_\\%u); $_userProfile = q(\\\\_PDCNAME_\\profiles\\); $_userHomeDrive = q(H:); # not used; current script name is $_userName.cmd #$_userScript = q(startup.cmd); # make sure script file is edited under dos - +$_userScript = q(logon.bat); $smbpasswd = "/usr/bin/smbpasswd"; $mk_ntpasswd = "/usr/local/sbin/mkntpwd"; diff -ur sbin/smbldap-passwd.pl modified/smbldap-passwd.pl --- sbin/smbldap-passwd.pl 2002-05-14 08:05:54.000000000 +0000 +++ modified/smbldap-passwd.pl 2002-05-14 08:14:29.000000000 +0000 @@ -166,7 +166,7 @@ } } # change unix password -$ret = system "$ldappasswd $dn -s $pass > /dev/null"; +$ret = system "$ldappasswd '$dn' -s '$pass' > /dev/null"; if ($ret == 0) { print "all authentication tokens updated successfully\n"; } else { diff -ur sbin/smbldap_tools.pm modified/smbldap_tools.pm --- sbin/smbldap_tools.pm 2002-05-14 08:05:54.000000000 +0000 +++ modified/smbldap_tools.pm 2002-05-14 08:15:01.000000000 +0000 @@ -337,7 +337,7 @@ } my $dn = get_dn_from_line($dn_line); - system "$ldapdelete $dn >/dev/null"; + system "$ldapdelete '$dn'"; } # $success = group_add($groupname, $group_gid, $force_using_existing_gid) diff -ur sbin/smbldap-useradd.pl modified/smbldap-useradd.pl --- sbin/smbldap-useradd.pl 2002-05-14 08:05:54.000000000 +0000 +++ modified/smbldap-useradd.pl 2002-05-14 08:15:52.000000000 +0000 @@ -54,7 +54,7 @@ print " -n do not create a group\n"; print " -d home\n"; print " -s shell\n"; - print " -c gecos\n"; + print " -c Comment/gecos\n"; print " -m creates home directory and copies /etc/skel\n"; print " -k skeleton dir (with -m)\n"; print " -P ends by invoking smbldap-passwd.pl\n"; @@ -95,7 +95,7 @@ # as rid we use 2 * uid + 1000 my $userRid = 2 * $userUidNumber + 1000; if (defined($Options{'x'})) { - $userRid= sprint("%x", $userRid); + $userRid= sprintf("%x", $userRid); } my $createGroup = 0; @@ -131,7 +131,7 @@ # as grouprid we use 2 * gid + 1001 my $userGroupRid = 2 * $userGidNumber + 1001; if (defined($Options{'x'})) { - $userGroupRid = sprint("%x", $userGroupRid); + $userGroupRid = sprintf("%x", $userGroupRid); } # Read only first @ARGV my $userName = $ARGV[0]; @@ -153,6 +153,9 @@ $userHomeDirectory = $_userHomePrefix.$userName; } $_userLoginShell = $tmp if (defined($tmp = $Options{'s'})); +# ASkwar: +# Use a more meaningful default GECOS entry +$_userGecos = $userName; $_userGecos = $tmp if (defined($tmp = $Options{'c'})); $_skeletonDir = $tmp if (defined($tmp = $Options{'k'})); @@ -289,6 +292,7 @@ pwdMustChange: $valpwdmustchange displayName: $_userGecos acctFlags: $valacctflags +rid: $userRid "; @@ -311,7 +315,8 @@ } } # with_smbpasswd - my $valscriptpath = "$userName.cmd"; + #my $valscriptpath = "$userName.cmd"; + my $valscriptpath = $_userScript; my $valprofilepath = "$_userProfile$userName"; my $valsmbhome = "$_userSmbHome"; my $valhomedrive = "$_userHomeDrive"; diff -ur sbin/smbldap-usermod.pl modified/smbldap-usermod.pl --- sbin/smbldap-usermod.pl 2002-05-14 08:05:54.000000000 +0000 +++ modified/smbldap-usermod.pl 2002-05-11 14:26:50.000000000 +0000 @@ -129,7 +129,7 @@ # as rid we use 2 * uid + 1000 my $_userRid = 2 * $_userUidNumber + 1000; if (defined($Options{'x'})) { - $_userRid= sprint("%x", $_userRid); + $_userRid= sprintf("%x", $_userRid); } $mods .= "uidNumber: $_userUidNumber\n"; if ($samba) { @@ -150,7 +150,7 @@ # as grouprid we use 2 * gid + 1001 my $_userGroupRid = 2 * $_userGidNumber + 1001; if (defined($Options{'x'})) { - $_userGroupRid = sprint("%x", $_userGroupRid); + $_userGroupRid = sprintf("%x", $_userGroupRid); } $mods .= "gidNumber: $_userGidNumber\n"; if ($samba) {