首页 > 系统相关 >一行命令找出 Linux 中所有真实用户

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

时间:2024-02-05 17:35:16浏览次数:23  
标签:找出 passwd getent 一行 用户 etc 60000 Linux 1000

哈喽大家好,我是咸鱼。

接触过 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 的用户信息。

标签:找出,passwd,getent,一行,用户,etc,60000,Linux,1000
From: https://www.cnblogs.com/edisonfish/p/18008524

相关文章

  • Linux Control Groups
    前言本文主要会介绍笔者在学习LinuxCgroups时所总结的知识点,其中会涉及到Cgroups中的抽象概念、使用规则、实现原理以及API等方面的相关内容。笔者也会将自己的理解在文中进行阐述,这也算是在和大家交流心得的一个过程。若文中有错误的理解和概念,请大家及时纠正;吸纳大家的建议,对......
  • Linux VFS
    前言本文主要会介绍笔者在学习LinuxVFS时所总结的知识点,其中会涉及到VFS抽象出的通用模型等方面的相关内容。笔者也会将自己的理解在文中进行阐述,这也算是在和大家交流心得的一个过程。若文中有错误的理解和概念,请大家及时纠正;吸纳大家的建议,对于我来说也是很重要的学习过程之一......
  • Linux终端概念的理解
     1pty(虚拟终端或伪终端):当我们远程telnet到主机或使用xterm时不也需要一个终端交互么?是的,这就是虚拟终端pty(pseudo-tty)。2tty(终端设备的统称):tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东......
  • 实战:使用xmanager等远程工具管理Linux
    5.3.1Linux下常用远程连接工具介绍 5.3.2xmanager使用方法1.xshell使用方法例1:连接一台新的服务器  ......
  • [转][Linux]安装 Centos
    转自:https://zhuanlan.zhihu.com/p/1451020341、下载Centos镜像,推荐:Centos7.X      下载地址:https://mirrors.aliyun.com/centos 各个版本的区别!1、CentOS-7-DVD版本:DVD是标准安装盘,一般下载这个就可以了。2、CentOS-7-NetInstall版本:网络安装镜像。3、Cen......
  • Linux下Oracle启用
    1,Linux切换到Oraclesu-oracle2,使用sqlplus并以管理员的身份登录sqlplus/assysdba3,开启cbdstartup4,开启pdbalterpluggabledatabaseORA19CPDBopen;ORA19CPDB为pdb的名字,可以通过showpdbs查看5,退出sqlplusexit6,打开监听lsnrctlstart7,......
  • 第十八天:Linux防火墙
    一、防火墙概念1、安全技术入侵检测系统(IntrusionDetectionSystems):入侵防御系统(IntrusionPreventionSystem):防火墙(FireWall):二、Linux防火墙技术1、NetfilterLinux防火墙是由Netfilter组件提供的,Netfilter工作在内核空间,集成在linux内核中Netfilter是Linux2.4.x......
  • Makefile in Linux
    WhyIneedthisfile?IFIDON'TUSESOMETHING,IWILLFORGETTHEM.ThankstoGithub&GNUmakeIntroduction(compileprocess,GNU_GCCcommands)C/C++compileDetailsPatternrule#Defineapatternrulethatcompilesevery.cfileintoa.o......
  • linux新安装系统后常遇到的问题
    没有如ll这种快捷命令vim/root/.bashrc后添加以下内容exportLS_OPTIONS='--color=auto'aliasls='ls$LS_OPTIONS'aliasll='ls$LS_OPTIONS-l'aliasl='ls$LS_OPTIONS-lA'aliasrm='rm-i'aliascp='cp-i'......
  • Linux进程间通信_共享内存和消息队列
    本文对SystemV标准的共享内存和消息队列这两种进程间通信方式进行讨论,涉及原理、系统调用接口以及相关的内核数据结构,并给出相关示例代码。SystemV共享内存基本原理进程间通信必须要让不同的进程看到同一份内存资源,因为进程具有独立性,所以这份内存资源是操作系统提供的,接口是由......