密码无法与 useradd -p 配合使用

密码无法与 useradd -p 配合使用

我正在运行 ubuntu 14.04 LTS。我运行以下命令来创建用户

$sudo useradd -m -p password1 guest_user

然后尝试切换到用户

$su guest_user

但我无法使用密码1登录

我是不是漏掉了什么?我是否应该使用 password1 或其他密码登录,正如 useradd 手册页中 -p 选项所述

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

           Note: This option is not recommended because the password (or encrypted password) will be
           visible by users listing the processes.

           You should make sure the password respects the system's password policy.

上面的内容让我很困惑,因为当我输入命令时

用户添加-m-p 密码1

密码 password1 在命令行上是可见的。如何在上述命令中使其不可见?

答案1

man useradd

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

可以看到PASSWORDwith-p选项是库函数返回的加密密码crypt(3)

如果使用-p password1,系统将考虑将此纯文本password1作为中的加密影子密码条目/etc/shadow

解决方案是使用加密的-p密码不安全,您应该以交互方式设置密码。

例如首先创建用户:

sudo useradd -m -s /bin/bash guest_user

现在设置密码:

sudo passwd guest_user

或者更好的用法adduser是:

sudo adduser --gecos '' guest_user

答案2

您可以使用perl打印加密密码并与命令-p中的选项一起使用useradd

$ sudo useradd -m -p $(perl -e 'print crypt($ARGV[0], "password")' 'YOUR_PASSWORD') username

您还可以将它与其他选项一起使用,例如-sShell 或-d主目录。

答案3

尝试在每个要使用的选项后添加一个参数。例如:

    useradd -m guest_user -p passwd1

正如 useradd 手册页所建议的那样,以这种方式添加密码并不安全,因为它是以纯文本传输的。要使用其他方法,请尝试:

    sudo useradd -m guest_user

进而:

    sudo passwd guest_user

两个注意事项:

  • /etc/adduser.conf 中以 NAME_REGEX= 开头的行可能禁止在用户名中使用下划线“_”字符;

  • /etc/pam.d/common-password 中可能设置了密码复杂性要求,需要更复杂的密码。

答案4

您可以使用以下函数:

myAddUser() {
      # check for this in '/etc/passwd' and '/etc/shadow'
      # $1 is the username
      # $2 is the password
      sudo useradd -s /bin/bash -m -p $(perl -e 'print crypt($ARGV[0], "password")' "$2") "$1" 
  }

像这样:

  myAddUser mostafa 1557 "This is the only user"

您还可以获取该函数并按照您的意愿使用它!

这是查林回答。

相关内容