我正在运行 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.
可以看到PASSWORD
with-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
您还可以将它与其他选项一起使用,例如-s
Shell 或-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"
您还可以获取该函数并按照您的意愿使用它!
这是查林回答。