如题,我知道/etc/passwd 里面记录了所有的账户,可是我只关心非系统内置的账户,我想查询所有系统安装好以后手动创建的账户,这个要怎么实现?
如题,我知道/etc/passwd 里面记录了所有的账户,可是我只关心非系统内置的账户,我想查询所有系统安装好以后手动创建的账户,这个要怎么实现?
楼上说的是对的,在Linux系统中所谓的系统用户和普通用户其实并没有什么严格的区分界限,仅仅是通过约定俗成的UID数值决定的,>= 1000
为普通用户, < 1000
为系统用户(在 /etc/login.defs
中的 UID_MIN
定义的,早期的RHEL 5版本普通用户的UID在500以上),但是这不意味你不可以创建出系统用户。
useradd
命令可以通过 -u
参数强行指定新用户的UID,还可以使用-r | --system
参数让系统给你分配一个小于 1000 UID。但依然要强调,本质上除了UID的范围之外,这些所谓的系统用户和普通用户之间没有任何区别。而且某些软件包需要运行服务的时候,创建的用户也未必是系统用户。
综上,如果你只是想筛选出逻辑上的普通用户,只需要用awk就可以做到了:
$ awk -F ':' '$3>=1000 {print $1}' /etc/passwd
nobody
ubuntu
1 回答2.7k 阅读✓ 已解决
2 回答802 阅读✓ 已解决
1 回答779 阅读
1 回答733 阅读
正常情况下,用户id大于等于1000的用户,一般就是手动创建的用户。也有可能有例外,因为id可以在创建的时候手动指定。
cat /etc/passwd 第三列就是用户id。