gpt4 book ai didi

linux - shell脚本创建linux用户账号但密码错误

转载 作者:IT王子 更新时间:2023-10-29 01:25:57 26 4
gpt4 key购买 nike

我编写了一个 shell 脚本来创建用户帐户。该脚本从文本文件中读取用户帐户名和密码,并使用这些信息创建帐户。当我执行脚本时,它成功创建了帐户,但是当我尝试登录这些帐户时,由于 Invalid password, please try again 错误,我无法登录。

这是我用来创建用户帐户的脚本:

file_name="t.txt"

while read user pass
do
useradd -p ${pass} ${user}
done < $file_name

编辑-1:t.txt 文件包含用户帐户信息:每行以空格分隔的用户名和密码。这是文件的片段:

user1 abcXYZ
user2 DEFxyz
user3 ijkLMN

EDIT-2:当我按照 Steve Kline 推荐的方法进行操作时,它会显示以下结果:(创建的帐户仍然无法使用给定的密码登录)

passwd: unrecognized option '--stdin'
Usage: passwd [options] [LOGIN]

Options:
-a, --all report password status on all accounts
<---------------------------------- SKIPPED ------------------------------->
-x, --maxdays MAX_DAYS set maximum number of days before password
change to MAX_DAYS

Adding user user1 with the password abcXYZ123

创建的账户仍然无法使用给定的密码登录

最佳答案

因此您当前的方法是将明文密码添加到/etc/shadow。

按原样使用您的脚本...创建了这个。请注意,我在您的密码末尾添加了几位数字以匹配标准的 8 个字符以禁止显示“您确定吗”提示。

user1:abcXYZ123:16963:0:99999:7:::
user2:DEFxyz142:16963:0:99999:7:::
user3:ijkLM1564:16963:0:99999:7:::

用户文件

[root@localhost ~]# cat t.txt s.txt
user1 abcXYZ123
user2 DEFxyz142
user3 ijkLM1564
user4 abcXYZ123
user5 DEFxyz142
user6 ijkLM1564

脚本

#!/bin/bash -e
#Adding user1, user2, user3 using your method.
file_name="t.txt"
while read user pass
do
#useradd ${user} -p ${pass}
useradd -p ${pass} ${user}
echo "Adding user "${user}" with the password "${pass}
done < $file_name

#Adding user4, user5, user6 using the recommended method.
file_name="s.txt"
while read user pass
do
#useradd ${user} -p ${pass}
useradd ${user}
echo "${pass}" | passwd --stdin ${user}
echo "Adding user "${user}" with the password "${pass}

done < $file_name

使用这两种语法,在/etc/shadow 中产生了这些结果

user1:abcXYZ123:16963:0:99999:7:::
user2:DEFxyz142:16963:0:99999:7:::
user3:ijkLM1564:16963:0:99999:7:::
user4:$1$NpazYQAn$tlhfQLlP0CaFiUeNeK8HW.:16963:0:99999:7:::
user5:$1$4z8G4gvh$v0jzcV5xbhWixU1LG9mwW.:16963:0:99999:7:::
user6:$1$cBkcYJkJ$7A.j6E3gy/umUcVmY0tgt0:16963:0:99999:7:::

因此,我发布的方法有效。 更新: Ubuntu 操作系统如下。此标准输入已针对基于 Rhel 的系统得到确认。

useradd ${user}
echo "${pass}" | passwd --stdin ${user}

如果您绝对愿意使用该方法,我建议您安装 mkpasswd 并使用该语法。

 useradd -p $(mkpasswd ${pass}) ${user}

Ubuntu 密码标准输入更新

echo ${user}:${pass} | /usr/sbin/chpasswd

关于linux - shell脚本创建linux用户账号但密码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37760716/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com