OS Ubuntu 18.04
我正在尝试使用 bash 脚本添加一个用户,并设置密码和主目录,创建一个同名的组。
我试过:
sudo useradd -U -m -p $(openssl passwd -1 'some_password') test
用户已创建,这是 /etc/passwd 中的条目:
test:x:1004:1004::/home/test:/bin/sh
主目录已创建:
/home/test
群组就创建好了。
问题是,当我尝试这样做时:
su test
它要求我输入密码,但是当我输入密码时,出现以下错误:
su: Authentication failure
PS:我意识到在 bash 脚本中添加密码的危险,但这不是我正在做的事情。该脚本要求用户输入密码,并在脚本中像这样使用它:
sudo useradd -U -m -p $(openssl passwd -1 '$password') $username
有任何想法吗?
在同一个系统上,我尝试使用 useradd 添加 test2 用户,并输入密码。我能够使用 test2 进行 su
为了诊断目的,我创建了一个 bash 脚本 doit.sh,其中包含:
passwd='SomePassword1234'
username='test2'
sudo useradd -U -m -p $(openssl passwd -1 '$password') $username
我将其运行为:
bash -x doit.sh
输出如下:
ubuntu@myserver:~$ bash -x doit.sh
+ passwd=SomePassword1234
+ username=test2
++ openssl passwd -1 '$password'
+ sudo useradd -U -m -p '$1$okAtvbfD$hVwD0AoMWR5AiTw.9Bztf.' test2
我尝试 su:
ubuntu@myserver:~$ su test2
Password:
su: Authentication failure
ubuntu@myserver:~$
答案1
这是引用,'$password' 的字面意思是:$password
而不是 $password 变量的值。"$password"
这里是必需的。
sudo useradd -U -m -p $(openssl passwd -1 "$password") $username