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
- 首先我们执行
useradd
命令来创建新用户并分配它到现有组。
- 然后我们将名称和密码输入
chpasswd
。如果您想知道为什么用双引号括起这些变量扩展,check this answer out .
- 最后
chsh
实用程序用于更新用户 shell。
Why not execute everything in a single statement?
I prefer subdividing a problem into smaller tasks for easier understanding.
我必须编写一个 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
- 首先我们执行
useradd
命令来创建新用户并分配它到现有组。 - 然后我们将名称和密码输入
chpasswd
。如果您想知道为什么用双引号括起这些变量扩展,check this answer out . - 最后
chsh
实用程序用于更新用户 shell。
Why not execute everything in a single statement?
I prefer subdividing a problem into smaller tasks for easier understanding.