登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
社区
BBS
广播
Follow
园子
关于
博客
发1篇日志+1圆
记录
发1条记录+2圆币
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
VIP申请
网盘
联系我们
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
Linux中如何批量删除系统中所有的自建用户 ...
Linux中如何批量删除系统中所有的自建用户
[ 复制链接 ]
泥地锚
5 天前
一、需求分析
在 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选项表示在删除用户的同时,删除用户的主目录以及邮件池等相关文件。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
如何优雅上线、下线?原来 大厂应用 是这样 优雅发布的!
在 .NET 中将 EF Core 升级到 9.0.5 MySQL 连接提示 get_LockReleaseBeh...
开源情报中批判性思维因人工智能而逐渐衰落
【鸿蒙生态学堂03】应用程序框架基础
sshd服务
AppFreeze与资源泄漏能力开放及常见问题定位方法介绍
[学习笔记]使用git rebase做分支差异化同步
微软又退出中国。。。
【UAP】使用 .NET Core App 编写 UAP
人工智能将如何影响语言的演变?
HarmonyOS 5.0 分布式数据协同与跨设备同步
【一步步开发AI运动APP】一、写在最前
记录---前端图像五兄弟:网络 URL、Base64、Blob、ArrayBuffer、本地路径,全整明白!
不是哥们,26 岁程序员,去种头发了?
MOSN(Modular Open Smart Network)是一款主要使用 Go 语言开发的云原生网络代理平台
在Ubuntu中部署.NET 8 Minimal WebAPI项目
Datawhale速通百炼RAG应用-Task1
华为云昇腾专区重磅上线!带你入门昇腾AI技术与DeepSeek实践
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
泥地锚
5 天前
关注
0
粉丝关注
15
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9986
背竽
9994
凶契帽
9992
4
终秀敏
9990
5
猷咎
9990
6
裴涛
9990
7
里豳朝
9990
8
处匈跑
9990
9
黎瑞芝
9990
10
松菊
9990
查看更多