linux 中的用户添加脚本而不使用密码

Useradd script in linux without using passwd

我必须编写一个 useradd 脚本 添加一个新用户并为其设置一个主目录。

#!/bin/bash

echo "Name:"
read name
echo "Password:"
read password
echo "Group:"
read group
useradd -m -G $group -s /bin/bash -p $password $name

一切正常,但我在以下行中遇到密码问题 -

useradd -m -G $group -s /bin/bash -p $password $name

它不起作用,所以我需要稍后在终端 passwd 命令中使用。

如何重建我的脚本,这样我就不需要使用 passwd 来正确设置密码?我读到过您可以使用标准输入,但我无法正确执行此操作。

如果您更喜欢从 STDIN 传输用户密码,请使用快速简单的 chpasswd 实用程序。 根据 @Ardit.

的建议

假设您满足以下条件,此脚本应该可以满足您的目的-

  • 您正在以 root 用户身份进行交互
  • 您已经为新用户创建了一个群组
#!/bin/bash

echo "Name:"
read name

echo "Password:"
read password

echo "Group:"   # group must exist
read group

# add new user, set group, create new home directory 
useradd -G $group -m $name           

# update new user password by piping from STDIN
echo ""$name":"$password"" | chpasswd           

# change the default user shell to bash 
chsh -s /bin/bash $name         
  1. 首先我们执行useradd命令来创建新用户并分配它到现有组。
  2. 然后我们将名称和密码输入chpasswd。如果您想知道为什么用双引号括起这些变量扩展,check this answer out .
  3. 最后 chsh 实用程序用于更新用户 shell。

Why not execute everything in a single statement?
I prefer subdividing a problem into smaller tasks for easier understanding.