Hello,
I am running Samba 2.2.3a-6 on a Debian(testing) machine.
It is running as a PDC for 15 Win2K(SP2/3) systems. Everything runs
beautifully except the users cannot change their passwds. When a user
CTRL-ALT-DEL and change passwd they ultimately get a messages stating that
the old passwd is incorrect....
If I log into a shell as a user on the system and invoke smbpasswd, It
goes through all of the motions of asking for the old and new passwds,
then it hangs for about 15-20 secs.  While its hung, if I invoke `ps auxw
| grep passwd` I see this:
sc    1567  0.0  0.2  2840 1340 pts/1  S  22:46  0:00 smbpasswd -D10 root 
1569  0.0  0.1  1720  712 pts/0  S  22:46  0:00 /usr/bin/passwd sc
Everything looks good because I have "unix passwd sync = yes" and I
see
that the system passwd command is running as root(good) as well as the
username is being passed to it.
After the 15-20 sec wait smbpasswd eventually returns stating, "Password
changed for user sc". The thing is that neither the samba or the system
passwd is changed, and whats more, the system passwd command is still
running in the background until I kill it manually.
Has anyone seen this or know what is going on?
Any help would be greatly appreciated. Below are my [global] settings.
Thanks
[global]
        add user script = /usr/sbin/useradd -g machines -c "NT Machine
Account"
        domain master = Yes
        encrypt passwords = yes
        wins support = yes
        max log size = 1000
        interfaces = 10.0.25.1/24
        obey pam restrictions = yes
        large readwrite = yes
        security = user
        local master = yes
        username map = /etc/samba/smbusers
        passwd chat debug = yes
        passwd program = /usr/bin/passwd %u
        passwd chat = *Enter\snew\sUNIX\spassword:* %n\n
*Retype\snew\sUNIX\spas
sword:* %n\n
        printing = lprng
        dns proxy = no
        logon path = \\%L\profiles\%U
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
printcap name = /etc/printcap
        preferred master = yes
        logon script = %U.bat
        map to guest = Bad User
        domain admin group = @ntadmin ntadmin
;       invalid users = root
        domain logons = Yes
        printer admin = @ntadmin @users
        unix password sync = True
        smb passwd file = /etc/samba/smbpasswd
        workgroup = UBSC0
        server string = %h server (MTX v1.2-02)
        message command = /bin/sh -c '/usr/bin/linpopup "%f"
"%m" %s; rm
%s' &
        syslog = 1
        log level = 2
        log file = /var/log/samba/log.%m
        load printers = Yes
        guest account = nobody
        os level = 65
;       logon home = \\%L\profiles\%U
        logon home = \\%L\%U
        nt acl support = Yes
Ulrich Kohlhase
2003-Mar-23  17:52 UTC
[Samba] Desperate! passwd sync problem...please help!
> After the 15-20 sec wait smbpasswd eventually returns stating, > "Password changed for user sc". The thing is that neither the samba > or the system passwd is changed, and whats more, the system passwd > command is still running in the background until I kill it manually.Did you try to change the user's password in a linux terminal first? Please note that the Samba password change fails if the Linux password change failed before. This is by design and documented in the "passwd program" section of the smb.conf doc.> obey pam restrictions = yesDo you have any PAM restrictions on password length or password quality set? We don't have Samba's PAM support enabled and I'm no PAM expert either but this may be worth looking at.> passwd chat debug = yes > passwd program = /usr/bin/passwd %u > passwd chat = *Enter\snew\sUNIX\spassword:* %n\n > *Retype\snew\sUNIX\spassword:* %n\nDoes the "passwd chat" string *exactly* match the messages you get when changing a password on the console? You have "passwd chat debug" enabled, so what does the logging output show you? If you still can't get the password sync working, you could use a wrapper script to do the Linux password synchronisation. We use this small Perl script to do the pass change and some logging (see the comments and necessary changes): -------------------------------- #!/usr/bin/perl # # in smb.conf: # encrypt passwords = Yes # passwd program = /path/to/samba/scripts/chgpasswd.pl %u %n # passwd chat = . # unix password sync = Yes # # touch /path/to/samba/logs/log.pass # # in /path/to/samba/source/smbd/chgpasswd.c: # after the line 'pstring_sub(passwordprogram, "%u", name);' # append # pstring_sub(passwordprogram, "%n", newpass); # use Time::localtime; ($username, $newpass) = @ARGV; # Change the Linux password and do some logging: my $tm = localtime(); $datestring = sprintf "%02d.%02d.%04d",$tm->mday, $tm->mon + 1, $tm->year + 1900; $logdateiname = sprintf ">>/path/to/samba/logs/pass.log"; # change password in /etc/shadow without interaction: $cmdtext = sprintf "echo %s:%s | /usr/sbin/chpasswd", $username, $newpass; system($cmdtext); $logtext = sprintf "User \"%s\" password changed",$username; open (logfile, $logdateiname); printf logfile "%s - %02d:%02d:%02d : %s \n", $datestring, $tm->hour, $tm->min, $tm->sec, $logtext; close logfile; # change NIS DB # $cmdtext = sprintf "make -C /var/yp >> /dev/null"; # system($cmdtext); ------------------------------------- Good luck, Uli