一行命令找出 Linux 中所有真实用户

简介: 一行命令找出 Linux 中所有真实用户

哈喽大家好,我是咸鱼。

接触过 Linux 的小伙伴们都知道在 Linux (或者说类 Unix)中,有三种类型的用户:

  • 超级用户(UID 为 0):即 root 用户,拥有最高权限。
  • 系统用户(UID 为 1~999):系统内建用户,用于运行系统服务和守护进程。
  • 普通用户(UID 为 1000~60000):为了让使用者能够使用 Linux 系统资源而建立的,用户新建的账号一般就是普通账号。

那么现在问题来了,如何快速找出 Linux 中的真实用户(root 用户和普通用户)?

正式开始之前,我们先介绍一个工具——getent

getent 命令

getent 其实是 "get entries" 的缩写,功能是用于查看系统数据库中(包括 /etc/passwd/etc/shadow/etc/group/etc/hosts 等)的记录信息,它可以根据指定的数据库类型和键来检索条目。

1、查看本地的主机文件(/etc/hosts)中包含的指定域名信息。

[root@localhost ~]# getent hosts 127.0.0.1
127.0.0.1       localhost localhost.localdomain localhost4 localhost4.localdomain4

2、查看本地密码文件(/etc/passwd)中指定用户信息。

[root@localhost ~]# getent passwd user1
user1:x:1000:1000::/home/user1:/bin/bash

3、从 /etc/group 数据库中检索指定组信息。

[root@localhost ~]# getent group user1
user1:x:1000:

我们回到问题上来:如何快速找出 Linux 中的真实用户(root 用户和普通用户)?

方法一:

getent passwd | awk -F: '$3 >= 1000 && $3 < 65344 || $3 == 0 {print $1}'
  • getent passwd 用于检索 /etc/passwd 数据库中的所有用户信息
  • awk 命令:
    • -F::指定字段分隔符为冒号 (:)
    • $3 >= 1000 && \$3 < 65344:表示判断第三个字段(用户 ID)大于或等于 1000 且小于 65344。
    • \$3 == 0:表示判断第三个字段(用户 ID)等于 0
    • {print $1}:打印第一个字段(用户名)

总结一下:这条命令将检索 /etc/passwd 数据库中的所有用户信息,并打印出用户 ID 大于或等于 1000 且小于 65344,或者用户 ID 等于 0 的所有用户的用户名。

但是有的小伙伴看到这么一长串的命令就犯难了,"我文本三剑客掌握的不是很好,这条命令尤其是里面的判断看的我头都晕了,还有没有更简单的方法呢?"

方法二:

getent passwd 0 {
   
   1000..60000} | awk -F: '{print $1}'
  • getent passwd 0 {1000..60000} 命令用于检索系统中用户 ID 为 0 以及范围从 1000 到 60000 的所有用户信息
  • awk -F: '{print $1}:表示对前面输出的内容进行处理——打印第一个字段

这里补充一下:getent passwd 0 {1000..60000} 命令使用花括号扩展 ({1000..60000}) 来生成一个 0 和从 1000 到 60000 的数字序列。

然后,getent passwd 命令使用这些数字作为参数,以检索系统中用户 ID 为 0 和从 1000 到 60000 的用户信息。

相关文章
|
23小时前
|
Linux Shell
10-10|linux命令查询 关键字在文本中出现的行数
10-10|linux命令查询 关键字在文本中出现的行数
|
1天前
|
存储 Linux Shell
常用vim命令和vim基本使用及Linux用户的管理,用户和组相关文件
这篇文章介绍了Vim编辑器的基本使用、常用命令和模式,以及Linux系统中用户和组的管理方法,包括用户和组相关文件如/etc/passwd、/etc/shadow和/etc/group的说明。
常用vim命令和vim基本使用及Linux用户的管理,用户和组相关文件
|
2天前
|
Linux Docker 容器
linux之docker命令
linux之docker命令
|
3天前
|
Ubuntu Java Linux
LINUX常用命令总结_持续更新
本文汇总了多种Linux命令的使用方法,包括系统信息查询、文件与目录管理、打包与压缩、软件包管理、文件系统分析、备份操作及网络配置等。例如,使用`df -h`检查文件系统使用情况,`uname -a`查看内核版本,`ps -ef|grep java`查看Java服务,`kill -9 pid`结束进程,以及使用`tar`、`zip`、`unzip`进行文件压缩与解压。此外,还介绍了系统关机、重启、登录注销、文件权限设置、磁盘空间管理、RPM与DEB包安装更新、文本处理、文件系统初始化与修复、SWAP文件系统管理、光盘刻录与挂载、网络接口配置等实用命令。
|
7天前
|
监控 Linux
Linux系统中du命令与df命令的区别与用法
总的来说,`du` 和 `df` 在磁盘管理中互补使用,能够提供全面的磁盘空间使用信息,帮助用户和管理员有效地监控和管理系统资源。
18 3
|
22小时前
|
Linux Docker 容器
9. 同步执行Linux多条命令
9. 同步执行Linux多条命令
|
23小时前
|
Ubuntu Linux Shell
10-21|在linux我如果修改了时间,什么命令可以恢复正确啊
10-21|在linux我如果修改了时间,什么命令可以恢复正确啊
|
1天前
|
Linux Perl
6-20|linux sed命令
6-20|linux sed命令
|
3天前
|
Shell Linux Python
python执行linux系统命令的几种方法(python3经典编程案例)
文章介绍了多种使用Python执行Linux系统命令的方法,包括使用os模块的不同函数以及subprocess模块来调用shell命令并处理其输出。
10 0
|
8天前
|
安全 Linux
Linux中ldd命令的依赖复制技巧
`ldd`命令的依赖复制技巧在特定的场合下非常有用,但它也需要细心的处理和充分的测试,以确保在新环境中的稳定运行。此外,这种做法虽然方便,但在长期维护和安全更新方面可能会带来额外的负担。
13 0