Linux查看用户信息的几种实现方式

 更新时间:2026年03月28日 08:54:49   作者:狂龙骄子  
这篇文章主要介绍了Linux查看用户信息的几种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

整理了工作中常见查看用户信息的几种方式,供有需要的码友参考。

运行环境:

1、查看当前登录用户

1.1、whoami命令

查看当前登录用户名

whoami

--------------------------------------------------------------------------------
root

1.2、id命令

打印 当前用户名 的信息,输出结果各字段如下:

  • uid:显示 用户ID 和 用户名
  • gid:显示 用户组ID 和 组名称
  • groups:显示 用户的附加 组ID 和 组名称
id

--------------------------------------------------------------------------------
uid=0(root) gid=0(root) groups=0(root)

2、查看/etc/passwd文件

文件 /etc/passwd 存储着所有用户的基本信息,并且 所有用户 都对此文件拥有读权限

cat /etc/passwd

--------------------------------------------------------------------------------
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

可以看到每行记录对应着一个用户信息,每条记录 共7段 用 冒号: 拼接,格式如下:

  • 第1段:用户名
  • 第2段:登录密码,默认用x替代,真实密码详见《/etc/shadow》文件
  • 第3段uid 用户唯一ID
  • 第4段gid 所属的用户组ID,uidgid 对应关系详见《/etc/group》文件
  • 第5段:账号的说明性描述
  • 第6段:用户的家目录路径
  • 第7段:默认shell,如果为 /sbin/nologin/ 则不允许登录

3、查看/etc/shadow文件

文件 /etc/shadow 存储着所有 用户的口令密文信息,同时为确保安全性,仅 root 权限用户 对此文件拥有读权限

cat /etc/shadow

--------------------------------------------------------------------------------
root:密文:17631:0:99999:7:::
daemon:*:17557:0:99999:7:::
bin:*:17557:0:99999:7:::
sys:*:17557:0:99999:7:::

可以看到每行记录对应着一个用户密码信息,每条记录 共9段 用 冒号: 拼接,格式如下:

  • 第1段:用户名
  • 第2段:密码密文(SHA512散列加密算法)
  • 第3段:最近一次修改密码时间(从1970-01-01开始的天数
  • 第4段:密码最小修改间隔的天数(依赖第3段的时间,如:0 表示 随时可以修改密码)
  • 第5段:密码有效期(最晚 N 天之后必须修改,如:99999 表示 密码长期有效)
  • 第6段:密码到期前提醒(依赖第5段的时间,如:7 表示密码有效期第7天开始,每次登录时提示)
  • 第7段:密码过期后宽限天数(依赖第5段的时间,如:10 表示 密码过期后10天内允许登录,过期禁用)
  • 第8段:账号失效日期(从1970-01-01开始的天数,到期无论账号是否有效,都将无法使用)
  • 第9段:保留字段,无含义

4、使用lslogins命令

lslogins 命令 列出系统中所有用户的信息。输出结果各字段如下:

  • UID:用户ID
  • USER:用户名
  • PWD-LOCK:密码已设置且已锁定(0:未锁定、1:已锁定)
  • PWD-DENY:登录密码是否禁用(0:允许密码登录、1:禁用密码登录)
  • LAST-LOGIN:最近一次的登录日期
  • GECOS:用户的其它信息(如:用户描述)
lslogins

--------------------------------------------------------------------------------
 UID USER            PROC PWD-LOCK PWD-DENY  LAST-LOGIN GECOS
   0 root              94        0        0    08:21:11 root
   1 bin                0        0        1             bin
   2 daemon             0        0        1             daemon
   3 adm                0        0        1             adm
   4 lp                 0        0        1             lp
   5 sync               0        0        1             sync
   6 shutdown           0        0        1 Jun01/02:00 shutdown
   7 halt               0        0        1             halt
   8 mail               0        0        1             mail
  11 operator           0        0        1             operator
  12 games              0        0        1             games
  14 ftp                0        0        1             FTP User
  28 nscd               0        0        1             NSCD Daemon
  38 ntp                0        0        1             
  72 tcpdump            0        0        1             
  74 sshd               0        0        1             Privilege-separated SSH
  81 dbus               0        0        1             System message bus
  89 postfix            0        0        1             
  99 nobody             0        0        1             Nobody
 192 systemd-network    0        0        1             systemd Network Management
 998 chrony             0        0        1             
 999 polkitd            0        0        1             User for polkitd

5、使用getent命令

getent 命令是从管理数据库中获取条目。

getent --help

--------------------------------------------------------------------------------
Usage: getent [OPTION...] database [key ...]
Get entries from administrative database.

  -i, --no-idn               disable IDN encoding
  -s, --service=CONFIG       Service configuration to be used
  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version

Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.

Supported databases:
ahosts ahostsv4 ahostsv6 aliases ethers group gshadow hosts initgroups
netgroup networks passwd protocols rpc services shadow

For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.

支持查询的数据库有:

ahosts  ahostsv4  ahostsv6  aliases  ethers  group  gshadow  hosts  initgroups

netgroup  networks  passwd  protocols  rpc  services  shadow

5.1、getentpasswd

输出格式同 cat /etc/passwd 命令

  • 获取 所有 用户信息
# 查找所有用户信息
getent passwd
  • 获取 指定 用户信息
# 查找指定用户信息(如:root)
getent passwd root

5.2、getenthosts

输出格式同 cat /etc/hosts 命令

  • 获取 所有 主机信息
# 获取 所有 主机信息
getent hosts
  • 获取 指定 主机信息
# 根据 IP地址 查找
getent hosts IP地址

# 根据 域名 查找
getent hosts 域名

5.3、getentservices

  • 获取 所有 服务信息(服务名、端口号、协议)
getent services
  • 获取 指定 服务信息(服务名、端口号、协议)
getent services 端口号

6、使用compgen命令

6.1、compgen语法

compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]

选项
-a 列出所有别名;相关:alias
-b 列出bash内置命令
-c 列出所有可用命令
-d 列出当前目录下所有目录
-e 列出全局变量;相关:export
-f 列出当前目录所有文件
-g 列出系统所有的组
-j 列出后台执行的作业
-k 列出shell保留字
-s 列出所有的service
-u 列出系统所有的用户
-v 列出shell所有变量

6.2、compgen用户相关选项

# 列出系统所有的用户
compgen -u

# 列出系统所有的组
compgen -g 

7、代码拾遗

# 计算两个日期相差的天数
# echo $((($(date -d"结束日期" +%s) - $(date -d"开始日期" +%s)) / 86400))
echo $((($(date -d"2022-10-01" +%s) - $(date -d"2022-09-21" +%s)) / 86400))

# 求未来的日期(如:10天后)
date -d "2022-09-21 10 days"

# 求过去的日期(如:10天前)
date -d "2022-09-21 -10 days"

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解linux根目录空间不足解决方案

    详解linux根目录空间不足解决方案

    本篇文章主要介绍了详解linux根目录空间不足解决方案,具有一定的参考价值,有兴趣的可以了解一下。
    2017-04-04
  • Linux查看和关闭后台运行程序的方法

    Linux查看和关闭后台运行程序的方法

    这篇文章主要介绍了Linux查看和关闭后台运行程序的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 使用Putty远程(SSH)管理Linux VPS的图文教程

    使用Putty远程(SSH)管理Linux VPS的图文教程

    Putty是一个免费的、Windows 32平台下的telnet、rlogin和ssh客户端,但是功能丝毫不逊色于商业的telnet类工具。
    2010-12-12
  • 修改.htaccess实现子目录绑定示例分享

    修改.htaccess实现子目录绑定示例分享

    这篇文章主要介绍了修改.htaccess实现子目录绑定示例,需要的朋友可以参考下
    2014-03-03
  • Ubuntu 下安装和配置 FTP服务器

    Ubuntu 下安装和配置 FTP服务器

    本篇文章主要介绍了Ubuntu 下安装和配置 FTP服务,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • linux内核双向链表详解

    linux内核双向链表详解

    Linux内核双向链表通过结构体嵌入node实现,使用container_of获取结构体地址,初始化用LIST_HEAD_INIT或INIT_LIST_HEAD,增删通过list_add/list_del操作,遍历用list_for_each_entry正反向宏,注意head节点不参与遍历,链表元素需为全局或静态变量,避免指针越界或内存崩溃
    2025-07-07
  • Apache实现禁止中文浏览器访问与301重定向的方法

    Apache实现禁止中文浏览器访问与301重定向的方法

    这篇文章主要介绍了Apache实现禁止中文浏览器访问与301重定向的方法,通过修改.htaccess的配置来实现非常简便,需要的朋友可以参考下
    2016-01-01
  • Linux下日志按日分割的shell

    Linux下日志按日分割的shell

    这篇文章主要介绍了Linux下日志按日分割的shell,需要的朋友可以参考下
    2016-03-03
  • Linux磁盘扩容lvm的使用详解

    Linux磁盘扩容lvm的使用详解

    这篇文章主要介绍了Linux磁盘扩容lvm的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • Linux下Apache HTTP Server 2.4.26安装教程

    Linux下Apache HTTP Server 2.4.26安装教程

    这篇文章主要为大家详细介绍了Linux下Apache HTTP Server 2.4.26的安装,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07

最新评论