Answers:
基于gid
,可以将系统用户和服务用户分开,如下所示:
/etc/passwd
包含所有用户的列表以及一些其他信息。服务用户或真实用户的数量gid
大于或等于1000。因此,可以按以下方式获得真实用户的列表:
awk -F: '($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd
另外,系统用户列表(gid
<1000)可以提取为:
awk -F: '($3<1000){print $1}' /etc/passwd
怎么运行的
的内容/etc/passwd
就像,
root:x:0:0:root:/root:/bin/bash
...
souravc:x:1001:1001:Souravc:/home/souravc:/bin/bash
awk
与-F:
它一起使用时,将一行的内容分成几个字段:
,这些字段被视为字段分隔符。第一个字段包含用户名,第三个字段包含gid
。
因此,要提取真实用户,awk
只需检查第三字段的值是否大于等于1000,并且它不是没有用户,并打印第一字段,即用户名。
要列出所有系统用户,它只需检查gid
小于1000并打印用户名。
编辑
如您要root
在真实用户列表中列出(gid = 0)。获得真实的用户,
awk -F: '($3==0)||($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd
获取系统用户,
awk -F: '($3<1000)&&($1!="root"){print $1}' /etc/passwd
注意我一直在忽略nobody
用户。
列出本地(系统用户)所能登录的目录,并且其homedir和GID小于1000
cat /etc/passwd | cut -d: -f 1,3,6 | grep "[1-9][0-9][0-9][0-9]" | grep "/home" | cut -d: -f1
列出所有其他用户:(主要是系统用户,且GID小于1000):
cat /etc/passwd | cut -d: -f 1,3,6 | grep -v "[1-9][0-9][0-9][0-9]" | cut -d: -f1