【问题标题】:Generate valid Unix username and password in Perl在 Perl 中生成有效的 Unix 用户名和密码
【发布时间】:2013-05-17 00:00:40
【问题描述】:

为了在 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

【问题讨论】:

  • 查看stackoverflow.com/questions/6949667/… 的答案以了解限制,然后您应该能够使用随机数生成器生成所需的内容。抱歉,我的 Perl 有点生疏,但我可以尝试创建一个示例。
  • @Intermernet,谢谢!那个链接真的很有用。幸运的是我在 CentOS 6 上 :)

标签: perl unix passwords


【解决方案1】:

用于生成密码您可以使用:

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

它实际上比 Perl 更像 Bash,但它可以胜任。

【讨论】:

  • 但是crypt 函数应该使用什么盐? useradd 命令可以使用任何盐吗?
  • @srchulo 由crypt 生成的任何密码都可以与useradd 一起使用。根据文档,您应该使用匹配的字符串: [a-zA-Z0-9./] for salt
【解决方案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 是否有等价物。

【讨论】:

    【解决方案3】:

    正如其他人所提到的,它比 perl 更 BASH。这是我生成密码的方式:

    passwd=`date +%s | sha256sum | base64 | head -1 | cut -c 1-8`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-15
      • 1970-01-01
      • 2019-10-24
      • 2021-01-30
      • 2019-12-25
      • 2018-09-25
      • 1970-01-01
      • 2023-02-03
      相关资源
      最近更新 更多