Linux中怎么批量删去体系中所有的自建用户
一、需求剖析
在 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
选项表明在删去用户的一起,删去用户的主目录以及邮件池等相关文件。