Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > Linux查看用户信息

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

作者:狂龙骄子

这篇文章主要介绍了Linux查看用户信息的几种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

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

运行环境:

1、查看当前登录用户

1.1、whoami命令

查看当前登录用户名

whoami

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

1.2、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段 用 冒号: 拼接,格式如下:

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段 用 冒号: 拼接,格式如下:

4、使用lslogins命令

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

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"

总结

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

您可能感兴趣的文章:
阅读全文