加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Shell脚本创建linux用户帐户但密码出错

发布时间:2020-12-15 21:02:12 所属栏目:安全 来源:网络整理
导读:我编写了一个 shell脚本来创建用户帐户.该脚本从文本文件中读取用户帐户名和密码,并使用这些信息创建帐户.当我执行脚本时,它成功创建了帐户,但是当我尝试登录这些帐户时由于密码无效而无法登录,请再次尝试错误. 这是我用来创建用户帐户的脚本: file_name="t
我编写了一个 shell脚本来创建用户帐户.该脚本从文本文件中读取用户帐户名和密码,并使用这些信息创建帐户.当我执行脚本时,它成功创建了帐户,但是当我尝试登录这些帐户时由于密码无效而无法登录,请再次尝试错误.

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

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工作方法如下.这个stdin被确认用于基于Rhel的系统.

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

如果您的心脏完全使用该方法,我建议安装mkpasswd并使用此语法.

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

更新Ubuntu Passwd stdin

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读