From: Alexander S. <li...@al...> - 2004-08-24 10:50:03
|
Hello. I'm using Usermin 1.080 on a HP-UX 11.00 server. I configured usermin so, that the only available module is "change password" and I use it to chagne the NIS password. Usermin is running on the NIS master and is calling /usr/bin/passwd as the User being changed. Now, if the password is "good", everything works fine. However, if the password is bad, changepass.cgi hangs and does not return - IOW: the browser is loading forever. I figured out, that changepass.cgi seems to be hanging at about line 87 of changepass.cgi: $out .=3D $wait_for_input; When I write the value of $out to a file, I see the following in it: Changing password for vz6tml on NIS server Old NIS password: New password: Passwords must differ by at least 3 positions New password: Passwords must differ by at least 3 positions New password: Obviously, the password wasn't good enough. As it's hanging there, I've got quite some Zombie processes "running" on the server (which go away, if I do soemthing like "killall changepass.cgi"). I'd like to make usermin send the new password a third time (or anything for that matter) if it gets the prompt "New password:". How would I do that? Thanks a lot, Alexander Skwar --=20 panic("aha1740.c"); /* Goodbye */ 2.2.16 /usr/src/linux/drivers/scsi/aha1740.c =AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF= =AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF= =AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF |
From: Jamie C. <jca...@we...> - 2004-08-24 23:11:17
|
On Tue, 2004-08-24 at 20:49, Alexander Skwar wrote: > Hello. > > I'm using Usermin 1.080 on a HP-UX 11.00 server. I configured usermin > so, that the only available module is "change password" and I use it > to chagne the NIS password. Usermin is running on the NIS master and > is calling /usr/bin/passwd as the User being changed. > > Now, if the password is "good", everything works fine. However, if > the password is bad, changepass.cgi hangs and does not return - IOW: > the browser is loading forever. > > I figured out, that changepass.cgi seems to be hanging at about line > 87 of changepass.cgi: > $out .= $wait_for_input; > When I write the value of $out to a file, I see the following in it: > > Changing password for vz6tml on NIS server > Old NIS password: > New password: > Passwords must differ by at least 3 positions > New password: > Passwords must differ by at least 3 positions > New password: > > Obviously, the password wasn't good enough. > > As it's hanging there, I've got quite some Zombie processes "running" > on the server (which go away, if I do soemthing like "killall > changepass.cgi"). > > I'd like to make usermin send the new password a third time (or > anything for that matter) if it gets the prompt "New password:". > How would I do that? There isn't any special code that stops it from sending the new password a third time.. however, the problem may be that the passwd command is hanging after receiving the third password, causing Usermin to hang too. If you run passwd manually at the command line and enter a too-short new password, does it actually exit after prompting for the third time, or just hang? - Jamie |
From: Alexander S. <li...@al...> - 2004-08-25 09:20:49
|
Jamie Cameron wrote: > On Tue, 2004-08-24 at 20:49, Alexander Skwar wrote: >=20 >>Hello. >> >>I'm using Usermin 1.080 on a HP-UX 11.00 server. I configured usermin >>so, that the only available module is "change password" and I use it >>to chagne the NIS password. Usermin is running on the NIS master and >>is calling /usr/bin/passwd as the User being changed. >> >>Now, if the password is "good", everything works fine. However, if >>the password is bad, changepass.cgi hangs and does not return - IOW: >>the browser is loading forever. >> >>I figured out, that changepass.cgi seems to be hanging at about line >>87 of changepass.cgi: >> $out .=3D $wait_for_input; >>When I write the value of $out to a file, I see the following in it: >> >>Changing password for vz6tml on NIS server >>Old NIS password: >>New password: >>Passwords must differ by at least 3 positions >>New password: >>Passwords must differ by at least 3 positions >>New password: >> >>Obviously, the password wasn't good enough. >> >>As it's hanging there, I've got quite some Zombie processes "running" >>on the server (which go away, if I do soemthing like "killall >>changepass.cgi"). >> >>I'd like to make usermin send the new password a third time (or >>anything for that matter) if it gets the prompt "New password:". >>How would I do that? >=20 >=20 > There isn't any special code that stops it from sending the new passwor= d > a third time.. Looking at the code, I thought so as well and wondered why it did not send the password a third (and fourth and ... n-th) time. > If you run passwd manually at the command line and enter a too-short ne= w > password, does it actually exit after prompting for the third time, or > just hang? Well, when I do that, I get: [08:52:56 vz6tml@s08nfs:~] $ passwd Changing password for vz6tml on NIS server Old NIS password: New password: Passwords must differ by at least 3 positions New password: Passwords must differ by at least 3 positions New password: Passwords must differ by at least 3 positions Too many failures - try later. If you look, you'll see that after the third time I entered the password, I got the "Passwords must differ by at least 3 positions" output a 3rd time. Not so in the output I sent. Hm, maybe I "grabbed" it at the wrong spot? I added in changepass.cgi right after the line "$out .=3D $wait_for= _input;" the following code: open(DBGFD, ">/tmp/pw.dbg2.out"); print DBGFD "out: ", $out, "\n"; close(DBGFD); "pw.dbg2.out" is what I sent here. I actually DO think, that it is hanging right at "$out .=3D $wait_for_inp= ut;". Right before the line, I added the following code: $mynum =3D $mynum + 1; open(DBGFD, ">/tmp/pw.dbg2.rv"); print DBGFD "rv: ", $rv, "mynum: ", $mynum, "\n"; close(DBGFD); $mynum is set to 0 before the while(1) loop. pw.dbg2.rv contains: rv: 0mynum: 4 As you see, mynum =3D 4, so the prompt is indeed shown for a 4th time. Hm. I now changed 'print DBGFD "out: ", $out, "\n";' to 'print DBGFD "out: ", $out, "\n", "mynum: ", $mynum, "\n";', and it is also printing "mynum: 4" - which is the same value as in the .rv file. So it's NOT hanging at the '$out .=3D $wait_for_input;' line. Hmm.... After the wile() loop, I now added: open(DBGFD2, ">/tmp/pw.dbg2.preclose"); print DBGFD2 "before closing the fh: ", "\n", "mynum: " , $mynum, "\n"; close(DBGFD2); This file is NOT created, when I enter a bad password. Hm, where could the changepass.cgi be hanging? Another output I get in pw.dbg2.out is: out: Changing password for wz41l1 on NIS server Old NIS password: New password: Password must contain at least two alphabetic characters and at least one numeric or special character. New password: Password must contain at least two alphabetic characters and at least one numeric or special character. New password: Alexander Skwar --=20 panic("aha1740.c"); /* Goodbye */ 2.2.16 /usr/src/linux/drivers/scsi/aha1740.c =AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF= =AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF= =AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF |
From: Jamie C. <jca...@we...> - 2004-08-25 23:22:05
|
On Wed, 2004-08-25 at 19:20, Alexander Skwar wrote: > Jamie Cameron wrote: > > On Tue, 2004-08-24 at 20:49, Alexander Skwar wrote: > > > >>Hello. > >> > >>I'm using Usermin 1.080 on a HP-UX 11.00 server. I configured usermin > >>so, that the only available module is "change password" and I use it > >>to chagne the NIS password. Usermin is running on the NIS master and > >>is calling /usr/bin/passwd as the User being changed. > >> > >>Now, if the password is "good", everything works fine. However, if > >>the password is bad, changepass.cgi hangs and does not return - IOW: > >>the browser is loading forever. > >> > >>I figured out, that changepass.cgi seems to be hanging at about line > >>87 of changepass.cgi: > >> $out .= $wait_for_input; > >>When I write the value of $out to a file, I see the following in it: > >> > >>Changing password for vz6tml on NIS server > >>Old NIS password: > >>New password: > >>Passwords must differ by at least 3 positions > >>New password: > >>Passwords must differ by at least 3 positions > >>New password: > >> > >>Obviously, the password wasn't good enough. > >> > >>As it's hanging there, I've got quite some Zombie processes "running" > >>on the server (which go away, if I do soemthing like "killall > >>changepass.cgi"). > >> > >>I'd like to make usermin send the new password a third time (or > >>anything for that matter) if it gets the prompt "New password:". > >>How would I do that? > > > > > > There isn't any special code that stops it from sending the new password > > a third time.. > > Looking at the code, I thought so as well and wondered why it did > not send the password a third (and fourth and ... n-th) time. > > > If you run passwd manually at the command line and enter a too-short new > > password, does it actually exit after prompting for the third time, or > > just hang? > > Well, when I do that, I get: > > [08:52:56 vz6tml@s08nfs:~] $ passwd > Changing password for vz6tml on NIS server > Old NIS password: > New password: > Passwords must differ by at least 3 positions > New password: > Passwords must differ by at least 3 positions > New password: > Passwords must differ by at least 3 positions > Too many failures - try later. > > If you look, you'll see that after the third time I entered the password, > I got the "Passwords must differ by at least 3 positions" output a > 3rd time. > > Not so in the output I sent. Hm, maybe I "grabbed" it at the wrong > spot? I added in changepass.cgi right after the line "$out .= $wait_for_input;" > the following code: > open(DBGFD, ">/tmp/pw.dbg2.out"); > print DBGFD "out: ", $out, "\n"; > close(DBGFD); > "pw.dbg2.out" is what I sent here. > > I actually DO think, that it is hanging right at "$out .= $wait_for_input;". > Right before the line, I added the following code: > $mynum = $mynum + 1; > open(DBGFD, ">/tmp/pw.dbg2.rv"); > print DBGFD "rv: ", $rv, "mynum: ", $mynum, "\n"; > close(DBGFD); > $mynum is set to 0 before the while(1) loop. pw.dbg2.rv contains: > rv: 0mynum: 4 > As you see, mynum = 4, so the prompt is indeed shown for a 4th > time. > > Hm. I now changed 'print DBGFD "out: ", $out, "\n";' to > 'print DBGFD "out: ", $out, "\n", "mynum: ", $mynum, "\n";', and it > is also printing "mynum: 4" - which is the same value as in the .rv > file. So it's NOT hanging at the '$out .= $wait_for_input;' line. > > Hmm.... > > After the wile() loop, I now added: > > open(DBGFD2, ">/tmp/pw.dbg2.preclose"); > print DBGFD2 "before closing the fh: ", "\n", "mynum: " , $mynum, "\n"; > close(DBGFD2); > > This file is NOT created, when I enter a bad password. > > Hm, where could the changepass.cgi be hanging? > > Another output I get in pw.dbg2.out is: > > out: Changing password for wz41l1 on NIS server > Old NIS password: > New password: > Password must contain at least two alphabetic characters and > at least one numeric or special character. > New password: > Password must contain at least two alphabetic characters and > at least one numeric or special character. > New password: The only place I can imagine it hanging is the wait_for function call, which reads the output from the passwd command until one of the listed regular expressions matches. Try changing the function call to : local $rv = &wait_for($fh, '(new|re-enter).*:', '(old|current|login).*:', 'pick a password', 'too many failures'); To see if it picks up on that 'Too many failures' message. - Jamie |
From: Alexander S. <li...@al...> - 2004-08-26 04:28:46
|
Jamie Cameron wrote: > Try changing the function call to : I'll try that. > local $rv =3D &wait_for($fh, '(new|re-enter).*:', > '(old|current|login).*:', > 'pick a password', > 'too many failures'); >=20 > To see if it picks up on that 'Too many failures' message. If it does, $rv would be set equal to 3, wouldn't it? Alexander Skwar --=20 "Help Mr. Wizard!" -- Tennessee Tuxedo =AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF= =AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF= =AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF |
From: Jamie C. <jca...@we...> - 2004-08-26 04:43:05
|
On Thu, 2004-08-26 at 14:29, Alexander Skwar wrote: > Jamie Cameron wrote: > > > Try changing the function call to : > > I'll try that. > > > local $rv = &wait_for($fh, '(new|re-enter).*:', > > '(old|current|login).*:', > > 'pick a password', > > 'too many failures'); > > > > To see if it picks up on that 'Too many failures' message. > > If it does, $rv would be set equal to 3, wouldn't it? Yes .. which with the current code, would cause the loop to exit (correctly). - Jamie |
From: Alexander S. <li...@al...> - 2004-08-26 07:21:29
|
Jamie Cameron wrote: > On Thu, 2004-08-26 at 14:29, Alexander Skwar wrote: >=20 >>Jamie Cameron wrote: >> >> >>>Try changing the function call to : >> >>I'll try that. >> >> >>>local $rv =3D &wait_for($fh, '(new|re-enter).*:', >>> '(old|current|login).*:', >>> 'pick a password', >>> 'too many failures'); >>> >>>To see if it picks up on that 'Too many failures' message. >> >>If it does, $rv would be set equal to 3, wouldn't it? >=20 >=20 > Yes .. which with the current code, would cause the loop to exit > (correctly). YEAH! You're the man :) I now get: Failed to change password : /bin/passwd failed : Changing password for vz6tml on NIS server Old NIS password: New password: Passwords must differ by at least 3 positions New password: Passwords must differ by at least 3 positions New password: Passwords must differ by at least 3 positions Too many failures Most excellent. As you might have noticed, I'm now happy :) BTW: I did change the lines to: local $rv =3D &wait_for($fh, '(new|re-enter|New password)= .*:', '(old|current|login).*:', 'pick a password', '(attributes changed on|oo man= y failures)'); and also: &error(&text('change_ecmd', "<tt>$passwd_cmd</tt>", "<pre>$out</p= re>")) if ($? || $count > 10 || $out =3D~ /bad\s+password|error|failed|Pa= ssword too short|Sorry|Password must contain at least two alphabetic characters|= Passwords must differ by at least|Password cannot be circular shift of logonid|Couldn.t change passwd/i); Thanks a lot for your support, Alexander Skwar --=20 panic("aha1740.c"); /* Goodbye */ 2.2.16 /usr/src/linux/drivers/scsi/aha1740.c =AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF= =AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF= =AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF |
From: Jamie C. <jca...@we...> - 2004-08-26 23:08:55
|
On Thu, 2004-08-26 at 17:21, Alexander Skwar wrote: > Jamie Cameron wrote: > > On Thu, 2004-08-26 at 14:29, Alexander Skwar wrote: > > > >>Jamie Cameron wrote: > >> > >> > >>>Try changing the function call to : > >> > >>I'll try that. > >> > >> > >>>local $rv = &wait_for($fh, '(new|re-enter).*:', > >>> '(old|current|login).*:', > >>> 'pick a password', > >>> 'too many failures'); > >>> > >>>To see if it picks up on that 'Too many failures' message. > >> > >>If it does, $rv would be set equal to 3, wouldn't it? > > > > > > Yes .. which with the current code, would cause the loop to exit > > (correctly). > > YEAH! You're the man :) > > I now get: > > Failed to change password : /bin/passwd failed : > > Changing password for vz6tml on NIS server > Old NIS password: > New password: > Passwords must differ by at least 3 positions > New password: > Passwords must differ by at least 3 positions > New password: > Passwords must differ by at least 3 positions > Too many failures > > Most excellent. > > As you might have noticed, I'm now happy :) > > BTW: I did change the lines to: > > local $rv = &wait_for($fh, '(new|re-enter|New password).*:', > '(old|current|login).*:', > 'pick a password', > '(attributes changed on|oo many failures)'); Excellent - I will put that same change into the next Usermin release, as it should work on any operating system. > and also: > > &error(&text('change_ecmd', "<tt>$passwd_cmd</tt>", "<pre>$out</pre>")) if ($? || $count > 10 || $out =~ /bad\s+password|error|failed|Password > too short|Sorry|Password must contain at least two alphabetic characters|Passwords must differ by at least|Password cannot be circular shift of > logonid|Couldn.t change passwd/i); Was this change necessary to get the error message to appear? - Jamie |
From: Alexander S. <li...@al...> - 2004-08-27 08:11:18
|
Jamie Cameron wrote: > Excellent - I will put that same change into the next Usermin release, > as it should work on any operating system. Yes. However, I've now got another problem. If the user does NOT enter an old password, usermin hangs. When done manually, I get: [10:01:23 vz6tml@s08nfs:/var/yp] $ passwd Changing password for vz6tml on NIS server Old NIS password: Sorry. I added/changed: 114 local $rv =3D &wait_for($fh, '(new|re-enter|New p= assword).*:', 115 '(old|current|login).*= :', 116 'pick a password', 117 '(attributes changed o= n|oo many failures|orry)'); Did not help :( Same problem, when the user enters a wrong "Current password" (how hard is it to remember the password used to login less than 5 seconds ago? users....) >>and also: >> >> &error(&text('change_ecmd', "<tt>$passwd_cmd</tt>", "<pre>$out<= /pre>")) if ($? || $count > 10 || $out =3D~ /bad\s+password|error|failed|= Password >>too short|Sorry|Password must contain at least two alphabetic character= s|Passwords must differ by at least|Password cannot be circular shift of >>logonid|Couldn.t change passwd/i); >=20 >=20 > Was this change necessary to get the error message to appear? No. Alexander Skwar --=20 panic("aha1740.c"); /* Goodbye */ 2.2.16 /usr/src/linux/drivers/scsi/aha1740.c =AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF= =AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF= =AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF |