将系统用户和服务用户分开


8

我们都知道我们有系统用户和服务用户。我正在寻找一种将他们分为系统用户和服务用户列表的方法。

有什么办法吗?

Answers:


7

基于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用户。


如何照顾root用户?
rɑːdʒɑ

不明白你的意思?您将以root用户身份成为系统用户。您是否希望在实际用户列表中包含root?
souravc

是的,因为他也是用户。
rɑːdʒɑ

@rajagenupula现在可以吗?
souravc

我想在真正的用户列表@S root用户
rɑːdʒɑ

2

列出本地(系统用户)所能登录的目录,并且其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

1
根用户的组ID和用户的ID小于1000
right

@rajagenupula可以肯定。只有root是例外。通常在ubuntu中,root默认情况下无法登录。
卡米尔2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.