当前位置: 代码网 > 服务器>服务器>Linux > Linux查看用户信息的几种实现方式

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

2026年03月28日 Linux 我要评论
整理了工作中常见查看用户信息的几种方式,供有需要的码友参考。运行环境:centos-7.9.2009-x641、查看当前登录用户1.1、whoami命令查看当前登录用户名whoami---------

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

运行环境:

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"

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com