密码与useradd -p命令不兼容。

我正在使用Ubuntu 14.04 LTS操作系统。我运行了以下命令来创建一个用户。
$sudo useradd -m -p password1 guest_user

然后尝试切换到用户

$su guest_user

但是我无法使用密码1登录。
我是不是漏掉了什么?我应该使用密码1登录还是像用户添加的man页面中-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.

上述让我感到困惑,因为当我输入以下命令时: useradd -m -p password1
密码password1会在命令行中可见。如何使其在上述命令中不可见?
5个回答

man useradd中:

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

正如您所看到的,使用-p选项的PASSWORD是由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

你可以使用perl打印加密密码,并在useradd命令中使用-p选项。
$ sudo useradd -m -p $(perl -e 'print crypt($ARGV[0], "password")' 'YOUR_PASSWORD') username

你还可以使用其他选项,比如-s用于Shell或-d用于主目录。

尝试在您想要使用的每个选项后面添加一个参数。例如:
    useradd -m guest_user -p passwd1

根据useradd的man页面建议,以这种方式添加密码并不被认为是安全的,因为它以明文形式传输。作为替代方案,请尝试:
    sudo useradd -m guest_user

然后:
    sudo passwd guest_user

两个注意事项:
1. 在/etc/adduser.conf文件中以NAME_REGEX=开头的行可能会禁止使用下划线“_”字符作为用户名;
2. /etc/pam.d/common-password文件中可能设置了密码复杂性要求,需要使用更复杂的密码。

一个替代你想要做的方法是:
$ sudo su
# useradd -m USER && echo "USER:PASSWORD" | chpasswd

您可以使用以下函数:
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"

你也可以引用这个函数并按照你的意愿使用它!
这是对Chhaileng答案的修改。