基于gid,系统用户和服务用户可以分离如下,
/etc/passwd包含所有用户的列表以及一些其他信息。服务用户或真实用户gid大于或等于1000。因此可以得到真实用户列表为,
awk -F: '($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd
Run Code Online (Sandbox Code Playgroud)
还gid可以提取系统用户列表(<1000),
awk -F: '($3<1000){print $1}' /etc/passwd
Run Code Online (Sandbox Code Playgroud)
这个怎么运作
的内容/etc/passwd就像,
root:x:0:0:root:/root:/bin/bash
...
souravc:x:1001:1001:Souravc:/home/souravc:/bin/bash
Run Code Online (Sandbox Code Playgroud)
awk与-F:它一起使用时,将一行的内容拆分为多个字段,:作为字段分隔符。第一个字段包含用户名,第三个字段包含gid.
因此,要提取真实用户,awk只需检查第三个字段的值是否大于等于 1000,并且它不是没有人用户并打印第一个字段,即用户名。
要列出所有系统用户,它只检查gid小于 1000 并打印用户名。
编辑
如您想root在真实用户列表中列出(gid = 0)。获得真正的用户,
root:x:0:0:root:/root:/bin/bash
...
souravc:x:1001:1001:Souravc:/home/souravc:/bin/bash
Run Code Online (Sandbox Code Playgroud)
获取系统用户,
awk -F: '($3==0)||($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd
Run Code Online (Sandbox Code Playgroud)
注意我总是忽略nobody用户。
| 归档时间: |
|
| 查看次数: |
892 次 |
| 最近记录: |