Re: [webmin-devel] using modify_user to change user details

"Jamie Cameron" <[email protected]> Mon, 02 Jun 2008 14:04:07 -0700 (PDT)
Newsgroups gmane.comp.web.webmin.devel
Message-ID <[email protected]>
Hi Todd,

Make sure that in your code, you aren't calling modify_user with an 
empty user hash. It looks like that is the case, as this would cause
an 'empty' line like that to be inserted into /etc/passwd.

I'd have to see all your code to comment further though..

 - Jamie

On 02/Jun/2008 12:11 Todd Kennedy wrote ..
> Hello,
> 
> I am new to webmin module development and am trying to extend the "Users 
> & Groups" module for internal purposes. What I have done is create a 
> "Recycle User" button on the selected users "Edit Users" page that 
> basically mimics the functionality of the delete_user.cgi (without 
> actually deleting the user) but also extends it by showing me a list of 
> currently selected user processes running. Once I press the "Recycle 
> user and home directory button" it goes off and first terminates those 
> running processes then removes the users home directory then I need to 
> reset the users password back to some default. I am about 90% of the way 
> there but seem to be caught up on the saving of the modified password. I 
> am using the modify_user function. Whats actually happening is that it's 
> leaving an incomplete line in the /etc/password and shadow file looking 
> something like this:
> 
> svctag:*LK*:6445::::::
> nobody:*LK*:6445::::::
> noaccess:*LK*:6445::::::
> nobody4:*LK*:6445::::::
> ::::::::
> 
> This last line should be the entry that I recycled but it's just a bunch 
> of empty GECOS fields. So it seems to me that it's rewriting the line 
> but is doing it with empty values.
> 
> So I think I am missing something somewhere but am unsure what other 
> functions possibly I need to call in order for it to write out the 
> password file. I'm assuming the modify_user function takes care of that, no?
> 
> 
> This does seem like a strange thing to do but would fit nicely into 
> managing test accounts for may lab machines. When the lab reservation 
> expires the admin can recycle the user with a press of the button and 
> set it back to some default settings.
> 
> Here's the snippet of code that is suppose to be resetting the password 
> and saving it.
> 
> %recycleuser = %{$ulist[$in{'num'}]};
> $pass = &encrypt_password($config{'recycle_passwd'});
> $recycleuser{'pass'} = $pass;
> 
> # Update user details
>     &modify_user(\%recycleuser, \%user);
> 
> # Run the pre-change command
>     $merr = &making_changes();
>     &error(&text('usave_emaking', "<tt>$merr</tt>")) if (defined($merr));
>     &unlock_user_files();
>     &made_changes();
> 
> So as the code runs the following is displayed in the borwser, The has 
> info is there for debugging purposes.
> 
> Deleting from other modules ..
> .. done
> Killing user processes
> .. done
> 
> Deleting home directory ..
> .. done
> 
> Creating Home Directory
> .. done
> 
> new encrypted passwd=TN4xb4vuWbxc6
> 
> Contents of recycleuser Hash prior to change
> 
> num => 20
> 
> inactive =>
> 
> max =>
> 
> warn =>
> 
> user => testuser
> 
> shell => /bin/sh
> 
> home => /export/home/testuser
> 
> real =>
> 
> line => 20
> 
> pass => NNwEdL/U3qYwU
> 
> sline => 20
> 
> uid => 1000
> 
> change => 14032
> 
> min =>
> 
> expire =>
> 
> gid => 10
> 
> 
> Contents of User hash after replacing $pass but before saving
> 
> num => 20
> 
> inactive =>
> 
> max =>
> 
> warn =>
> 
> user => testuser
> 
> shell => /bin/sh
> 
> home => /export/home/testuser
> 
> real =>
> 
> line => 20
> 
> pass => TN4xb4vuWbxc6
> 
> sline => 20
> 
> uid => 1000
> 
> change => 14032
> 
> min =>
> 
> expire =>
> 
> gid => 10
> 
> 
> Reread the %ulist has for the user "Still has the old password"
> 
> num => 20
> 
> inactive =>
> 
> max =>
> 
> warn =>
> 
> user => testuser
> 
> shell => /bin/sh
> 
> home => /export/home/testuser
> 
> real =>
> 
> line => 20
> 
> pass => NNwEdL/U3qYwU
> 
> sline => 20
> 
> uid => 1000
> 
> change => 14032
> 
> min =>
> 
> expire =>
> 
> gid => 10
> 
> 
> Any help on this would be much appriciated.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
-
Forwarded by the Webmin development list at [email protected]
To remove yourself from this list, go to
http://lists.sourceforge.net/lists/listinfo/webadmin-devel