一、需求分析
在 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选项表示在删除用户的同时,删除用户的主目次以及邮件池等相关文件。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |