在 Linux 系统中批量创建新用户,并且要求用户登陆即改变密码

  • 在 Linux 系统中批量创建新的用户
    • 使用的命令:
      • useradd
      • passwd
      • chage

脚本示列:

#/bin/bash
for user in `cat newuser.txt`
  do 
    echo "$user"
    useradd $user
    echo "$user@123" | passwd "$user" --stdin
    chage -d 0 $user
  done

通过使用 for 循环,将cat命令输出的文本内容依次提取,每次提取都是用户名,该用户名存入变量 $user 当中。

简单的 echo 这是为了输出每次创建到哪位用户,下一行通过 useradd 命令添加用户。

脚本中初次创建的用户的密码是:用户名@123。通过管道符标准输出传递给 passwd,passwd 后面要有指定的用户名称,如果没有就是修改当前的执行的用户的密码。

chage -d 0 的作用等效于 passwd -e,在 chage 中 -d 指的是设置最后一次密码更改的日期;passwd 中的 -e 则是 expire 作用是使得指定账户的密码失效,两者的作用自然都是 在用户初次登录后就立即修改原始的 用户名@123 密码。


验证脚本:

创建有一个文本文件,在 newuser.txt 中每行分别有 tom、jack、luna 这三位用户名。

[root@localhost ~]# ./useradd.sh
tom
Changing password for user tom.
passwd: all authentication tokens updated successfully.
jack
Changing password for user jack.
passwd: all authentication tokens updated successfully.
luna
Changing password for user luna.
passwd: all authentication tokens updated successfully.

启动脚本后运行完成。


这里以 tom 为初始登录举例子:

tom 用户的第一次登陆:

login as: tom
tom@192.168.10.10's password:    # 输入了初始密码,这里是 tom@123

You are required to change your password immediately (root enforced)
Last login: Thu May  2 10:44:09 2024 from 192.168.10.1
WARNING: Your password has expired.
You must change your password now and login again!
Changing password for user tom.
Changing password for tom.
(current) UNIX password:  # 再次输入之前的初始密码
New password:    # 开始修改原来的密码
BAD PASSWORD: The password fails the dictionary check - it is based on a dictionary word  # 由于密码简单系统认为需要更复杂的密码
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
# 密码修改成功后 ssh 登录断开

tom 用户的第二次登陆

login as: tom
tom@192.168.10.10's password:   # 输入 tom 用户修改后的密码

# 成功登陆,当前目录是用户的家目录
[tom@localhost ~]$ pwd
/home/tom
posted @ 2024-05-02 23:03  takenika  阅读(126)  评论(0)    收藏  举报