首页 > 系统相关 >Linux中如何批量删除系统中所有的自建用户

Linux中如何批量删除系统中所有的自建用户

时间:2024-11-21 16:44:21浏览次数:1  
标签:sbin 自建 批量 passwd nologin 用户 etc Linux 1000

一、需求分析

在 Linux 系统中,一般情况下,系统用户(如root、bin、daemon等)的用户 ID(UID)通常是小于 1000 的。对于自建用户(非系统用户),UID 一般从 1000 开始分配。不过,这不是绝对的规则,具体的 UID 范围可以由系统管理员在创建用户时指定,或者根据系统的用户管理配置文件(如/etc/login.defs)来确定。
因此,我们可以通过awk工具提取/etc/passwd中uid大于1000的用户名,并结合管道符|xargs 来进行批量删除。

二、下面进行实操

2.1.批量新增用户

[root@client-110 ~]# echo -e "u1\nu2\nu3\nu4" |xargs -L 1 useradd 
[root@client-110 ~]# tail /etc/passwd
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
u1nu2nu3nu4:x:1000:1000::/home/u1nu2nu3nu4:/bin/bash
u1:x:1001:1001::/home/u1:/bin/bash
u2:x:1002:1002::/home/u2:/bin/bash
u3:x:1003:1003::/home/u3:/bin/bash
u4:x:1004:1004::/home/u4:/bin/bash

通过观察/etc/passwd文件发现,每个字段由:分隔,第一列为用户名,第三个字段为uid

2.2.通过awk工具提取uid大于等于1000的用户名

[root@client-110 ~]# awk -F ':' '$3>=1000{print$1}' /etc/passwd
u1nu2nu3nu4
u1
u2
u3
u4

2.3.批量删除

[root@client-110 ~]# awk -F ':' '$3>=1000{print$1}' /etc/passwd|xargs -L 1 userdel
[root@client-110 ~]# tail /etc/passwd
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin

命令整体解释
这个命令的目的是批量删除/etc/passwd文件中uid大于等于 1000 的用户及其主目录。

  • 首先是awk -F ':' '$3>=1000{print $1}' /etc/passwd部分:
    • awk是一个强大的文本处理工具,-F ':'表示以:作为字段分隔符来处理/etc/passwd文件。/etc/passwd文件的每行包含了用户的各种信息,格式大致为用户名:密码:用户ID:用户组ID:注释:主目录:默认shell
    • $3>=1000{print $1}这一语句是awk的模式和动作语句。$3表示每行的第三个字段,在这里就是uid字段,当这个字段的值大于等于 1000 时,就打印该行的第一个字段,也就是用户名。
  • 然后是| xargs -L 1 userdel -r部分:
    • |是管道符号,它将awk命令的输出(也就是符合条件的用户名)作为下一个命令的输入。
    • xargs -L 1表示每次将一行输入作为参数传递给userdel -r命令。这样可以避免因用户名中可能包含空格等特殊情况而导致参数传递错误。
    • userdel -r是用于删除用户及其主目录的命令。-r选项表示在删除用户的同时,删除用户的主目录以及邮件池等相关文件。

标签:sbin,自建,批量,passwd,nologin,用户,etc,Linux,1000
From: https://www.cnblogs.com/funlyp/p/18561066

相关文章

  • 【linux之clickhouse的问题记录】记由于clickhouse服务内存打满导致cpu/mem都飙升然后
    在记录相关文档的过程中发现监控中关于该节点的clickhouse数据异常,随后在node节点监控中也不见该节点信息于是找到相关机器进行检查,堡垒机发现无法连接clickhouse的节点,随后找同网段的机器尝试ping一下测试连通性,随后发现无法ping通错误信息:From172.21.0.1icmp_seq=1Destin......
  • Java批量解析微信dat文件,微信图片
    以下是java代码,直接可用,不用手动计算异或值此处的jdk版本需要1.8以上…,另外两个参数(解析文件路径和输出路径)需要改成自己的哦~此处的原理是判断图片文件的十六进制特征码。第一种:weChatImgRevert.javapackagecom;importjava.io.File;importjava.io.FileInputStream;impor......
  • Metasploit Pro 4.22.5-2024111901 (Linux, Windows) - 专业渗透测试框架
    MetasploitPro4.22.5-2024111901(Linux,Windows)-专业渗透测试框架Rapid7Penetrationtesting,releasedNov19,2024请访问原文链接:https://sysin.org/blog/metasploit-pro-4/查看最新版。原创作品,转载请保留出处。作者主页:sysin.org世界上最广泛使用的渗透测试框......
  • Metasploit Framework 6.4.37 (macOS, Linux, Windows) - 开源渗透测试框架
    MetasploitFramework6.4.37(macOS,Linux,Windows)-开源渗透测试框架Rapid7Penetrationtesting,2024-11-20请访问原文链接:https://sysin.org/blog/metasploit-framework-6/查看最新版。原创作品,转载请保留出处。作者主页:sysin.org世界上最广泛使用的渗透测试框架......
  • Linux之sar命令
    介绍Sar命令从内核计算器收集指标,并有一个代理,它按预定时间执行以记录系统活动。这个命令还可以收集系统状态的瞬时数据。使用Sar命令常用的选项-B:报告内存分页统计信息-b:报告所有设备的I/O和传输信息,-d:报告每个块设备的I/O和传输信息-n:报告网络统计信息-r:报告内存......
  • 我与Linux的爱恋:进程间通信 匿名管道以及命名管道的实现与应用
    ​​......
  • 腾讯通RTX升级版方案:支持Linux内核国产系统及移动端
    一、腾讯通RTX继续使用的核心痛点作为国内最早一批内网即时通讯软件,腾讯通RTX在政企单位中曾占据重要地位。然而,自2015年停止更新后,不仅遗留了大量BUG,用户体验和功能也逐渐难以满足企业需求。以下是继续使用腾讯通RTX的主要痛点:●不兼容国产系统与移动端:RTX仅支持Windows和Mac,......
  • Blender 4.3 (Linux, macOS, Windows) - 开源 3D 创意软件 (渲染 建模 雕刻)
    Blender4.3(Linux,macOS,Windows)-开源3D创意软件(渲染建模雕刻)Open-Source3DGraphicsAppIntroducesExperimentalVulkanBackend请访问原文链接:https://sysin.org/blog/blender/查看最新版。原创作品,转载请保留出处。作者主页:sysin.org创造的自由Blender......
  • Linux基础(一)
    #学习视频笔记均来自B站UP主" 泷羽sec",如涉及侵权马上删除文章仅用于学习参考,不要越过法律红线一.⽂件管理1)touchnewfile创建⼀个空⽂件newfile。扩展:touch常⽤于更新⽂件的访问和修改时间。如果⽂件已存在,touch只会更新⽂件的时间戳⽽不会更改内容。touch......
  • linux 执行命令报“\r‘: 未找到命令”
    1.在Windows上写好的脚本,放在Linux上运行,却出现了如下错误:./startup.sh:行3:$'\r':未找到命令2、原因分析两种操作系统平台对换行的解析不同造成的,Windows中\r\n表示换行,而在Linux中\n表示换行,所以在Windows上编写好的shell文件上传到Linux后,会因为不能识别\r而报错。因此......