2

Unix システムでユーザーを作成するには、ユーザー名とパスワードのペアを生成する必要があります。できれば (セキュリティのために) 推測しにくいペアを生成する必要があります。Perlを使用してこれを行う良い方法を知っている人はいますか?

アップデート

それで、私は以下の答えのいくつかを組み合わせて、私自身のことをいくつか行いました。これが私が得たものです。現在、これらの生成されたユーザー名とパスワードは、暗号化されていて、覚えにくいものになっています。これが私が探していたものです。ただし、より読みやすい世代を探している場合は、好みに合わせて微調整する必要があります。

use String::Random qw(random_regex);
use Data::Random::WordList;
my $user = random_regex('\w{3,6}\d{3,6}\w{3,7}') . time . int(rand(1000)); 
my $wl = new Data::Random::WordList( wordlist => '/usr/share/dict/words' );
my @rand_words = $wl->get_words(int(rand(3)) + 3);
$wl->close();
my $pass = join " ", @rand_words;
$pass .= ' ' . int(rand(1000)) . time;
my $crypt_pass = crypt($pass,'salt');

system "useradd -p $crypt_pass $user";

#you can now login with $user and $pass on your system
4

3 に答える 3

2

パスワードの生成には、次のものを使用できます。

$password = `date | md5sum | fold -w 10 | head -n 1`;
$password = crypt($password,'some_string');

これは実際には Perl よりも Bash に近いですが、機能します。

于 2013-05-22T04:00:31.663 に答える
2

http://sysadminsjourney.com/content/2009/09/16/random-password-generation-perl-one-liner/から

perl -le 'print map { (a..z,A..Z,0..9)[rand 62] } 0..pop' 8

文字 a ~ z、A ~ Z、および 0 ~ 9 からランダムな 8 文字の文字列を生成します。

これを変更して、ユーザー名とパスワードを生成できるはずです。

ユーザー名は次のとおりです。

perl -le 'print map { ([a-z_][a-z0-9_][rand 62] } 0..pop' 30

パスワードは似ていますが、passwdコマンドを使用して実際にユーザーに設定する必要があります。Perl に同等のものがあるかどうかは不明です。

于 2013-05-22T04:08:37.583 に答える
2

他の人が述べたように、perl よりも BASH の方が多いです。パスワードを生成する私の方法は次のとおりです。

passwd=`date +%s | sha256sum | base64 | head -1 | cut -c 1-8`
于 2013-05-22T06:13:08.270 に答える