密码不适用于 useradd -p

use*_*276 13 password adduser useradd

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

$sudo useradd -m -p password1 guest_user
Run Code Online (Sandbox Code Playgroud)

然后尝试切换到用户

$su guest_user
Run Code Online (Sandbox Code Playgroud)

但我无法使用密码 1 登录

我错过了什么吗?我是否想使用 password1 或其他方式登录,如 -p 选项在 useradd 的手册页中所述

 -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.
Run Code Online (Sandbox Code Playgroud)

以上让我感到困惑,因为当我输入命令时

用户添加 -m -p 密码 1

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

hee*_*ayl 12

来自man useradd

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

如您所见,PASSWORDwith-p选项是crypt(3)库函数返回的加密密码。

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

解决办法是这里使用加密的密码,-p这是不安全的,你应该交互设置密码。

例如首先创建 suer :

sudo useradd -m -s /bin/bash guest_user
Run Code Online (Sandbox Code Playgroud)

现在设置密码:

sudo passwd guest_user
Run Code Online (Sandbox Code Playgroud)

或者更好地使用adduser

sudo adduser --gecos '' guest_user
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的回答。我想创建 100 多个帐户。我不想为每个人手动设置密码!!!。其次,adduser 命令中的 --gecos 选项是什么?你能解释一下吗? (2认同)

Chh*_*eng 5

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

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

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