Linux 环境批量删除和新建用户

1. 需求描述

在工作中为了给一组培训对象准备Linux实验环境,需要服务器上

  • 首先,批量删除旧的用户信息;
  • 然后,批量创建新的用户账号;

2. 场景描述

现有服务器系统中已经存在60个老用户,用户名分别是s01, s02, s03 … s60,并且每个用户在 /home 里都有个人目录和旧文件,需要全部删除重新创建。

3. 批量删除旧用户

  • Linux 下删除用户信息的命令为 userdel <user_name>,默认无参数情况下,只会删除 /etc/passwd、/etc/shadow、/etc/group/、/etc/gshadow 这四个文件中的用户信息,并不能删除/home目录下的用户目录。需要增加 -r 参数才能完全清除用户所有数据。

  • 因为要一次性批量删除大量用户,所以编写一个脚本 batch_del_user.sh 来完成批处理工作。

    #!/bin/bash
    
    for n in  {1..60}
    do
    	# 判断序号,构造 s01, s02,s03 ... s60 这样的用户名
    	user=$([ $n -le 9 ] && echo "s0$n" || echo "s$n")
    	# 增加 -r 参数,清除用户的所有信息
    	userdel -r $user
    done
    
  • 使用管理员用户执行脚本,完成用户清除。

4. 批量添加新用户

使用newusers命令来批量生成用户。需要提供一个包含批量用户信息的文本文件供命令读取。该文件每行信息的基本结构为用冒号分割的多个字段,每个字段的含义如下:
Username:Password:User_ID:Group_ID:User_Info:Home_Directory:Default_Shell

    1. 先通过 addgroup student 添加了一个学生组。再通过 /etc/group 文件查看student组的ID号为 1003
    $ sudo addgroup student
    $ cat /etc/group | grep student
    student:x:1003:
    
  • 4.2 编写一个 shell 脚本 batch_create_user.sh 来批量生成注册用户信息文件(Password_Here 替换成默认密码), $((2000 + $n)) 用于生成用户ID的流水号,可根据自己本地 /etc/passwd 里用户ID的实际情况修改。

    #!/bin/bash
    
    for n in {1..60}
    do
        user=$([ $n -le 9 ] && echo "s0$n" || echo "s$n")
        echo  "$user:Password_Here:$((2000+$n)):1003:$user:/home/$user:/bin/bash"
    done	
    
  • 4.3 执行脚本生成用户信息文件。然后通过 newusers 命令批量生成用户。最后查看/home目录,确定用户已经创建完成。

    $ sh ./batch_create_user.sh > users.txt
    $ sudo newusers users.txt
    $ ls /home/	
    
  • 4.4 新创建的用户目录里没有包含默认环境设置文件 .profile 和 .bashrc,从其它用户目录下复制了两个样例文件到 /tmp 目录下,然后拷贝到新用户的目录,并修改其所有者和权限。

    for n in {1..60}
    do
        user=$([ $n -le 9 ] && echo "s0$n" || echo "s$n")
        cp /tmp/.bashrc /home/$user/
        cp /tmp/.profile /home/$user/
        chown $user:student /home/$user/.bashrc /home/$user/.profile
        chmod 700 /home/$user
    done	
    

5. 测试结果

使用新用户账号成功登录,并且成功起用相关环境设置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值