http://qs321.pair.com?node_id=198841


in reply to Re: How to use MD5?
in thread How to use MD5?

Mdillon: the exact purpose of this is to create a user using adduser bob -p $encrypass as the command, run from a perl script. i'm stuck :-(

Replies are listed 'Best First'.
Re: Re: Re: How to use MD5?
by mdillon (Priest) on Sep 18, 2002 at 14:52 UTC
    First, you need to generate an appropriate salt. The code provided by tadman in this node should work.

    Then, either install Crypt::PasswdMD5 and use:

    use Crypt::PasswdMD5; my $crypted = unix_md5_crypt $passwd, $salt;
    Or, since you're apparently using RedHat (since adduser is a RedHat-specific command AFAIK) and your libc's crypt should do MD5-crypt automatically given a proper MD5 salt, use: my $crypted = crypt $passwd, $salt; To make sure this works, print the value of $crypt; it should be something like $1$b1yv9grF$mpwoS2r11VtENFrAmF2WW/ (instead of the shorter string returned by traditional DES-crypt). Once you've confirmed that you have what looks like an MD5-crypted password, use the value of $crypted in your command line:
    system("adduser", "bob", "-p", $crypted) == 0 or die "Error adding user 'bob': $!$/";
    The secret to getting crypt to work correctly is in providing a salt starting with '$1$' and having 8 characters (instead of the normal 2 used for DES-crypt). There are similar conventions for using other crypt variants (e.g. '$2$' for SHA-crypt).
Re: Re: Re: How to use MD5?
by fglock (Vicar) on Sep 18, 2002 at 14:35 UTC

    my  man adduser says:

    -p passwd The encrypted password, as returned by crypt(3). The default is to disable the account.

    That is, unless you use a modified adduser, you have to provide a crupt'ed password (not md5).