|
|
51CTO旗下网站
|
|
移动端

列出Linux系统上所有用户的3种方法

通过使用 /etc/passwd 文件,getent 命令,compgen 命令这三种方法查看系统中用户的信息。

作者:Magesh Maruthamuthu来源:Linux中国|2018-08-02 09:50

通过使用 /etc/passwd 文件,getent 命令,compgen 命令这三种方法查看系统中用户的信息。

大家都知道,Linux 系统中用户信息存放在 /etc/passwd 文件中。

这是一个包含每个用户基本信息的文本文件。当我们在系统中创建一个用户,新用户的详细信息就会被添加到这个文件中。

/etc/passwd 文件将每个用户的基本信息记录为文件中的一行,一行中包含 7 个字段。

/etc/passwd 文件的一行代表一个单独的用户。该文件将用户的信息分为 3 个部分。

  1. * 1 部分:`root` 用户信息
  2. * 2 部分:系统定义的账号信息
  3. * 3 部分:真实用户的账户信息

第一部分是 root 账户,这代表管理员账户,对系统的每个方面都有完全的权力。

第二部分是系统定义的群组和账户,这些群组和账号是正确安装和更新系统软件所必需的。

第三部分在最后,代表一个使用系统的真实用户。

在创建新用户时,将修改以下 4 个文件。

  1. * `/etc/passwd` 用户账户的详细信息在此文件中更新。
  2. * `/etc/shadow` 用户账户密码在此文件中更新。
  3. * `/etc/group` 新用户群组的详细信息在此文件中更新。
  4. * `/etc/gshadow` 新用户群组密码在此文件中更新。

** 建议阅读 : **

方法 1 :使用 /etc/passwd 文件

使用任何一个像 catmoreless 等文件操作命令来打印 Linux 系统上创建的用户列表。

/etc/passwd 是一个文本文件,其中包含了登录 Linux 系统所必需的每个用户的信息。它保存用户的有用信息,如用户名、密码、用户 ID、群组 ID、用户 ID 信息、用户的家目录和 Shell 。

/etc/passwd 文件将每个用户的详细信息写为一行,其中包含七个字段,每个字段之间用冒号 : 分隔:

  1. # cat /etc/passwd
  2. root:x:0:0:root:/root:/bin/bash
  3. bin:x:1:1:bin:/bin:/sbin/nologin
  4. daemon:x:2:2:daemon:/sbin:/sbin/nologin
  5. adm:x:3:4:adm:/var/adm:/sbin/nologin
  6. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  7. sync:x:5:0:sync:/sbin:/bin/sync
  8. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  9. halt:x:7:0:halt:/sbin:/sbin/halt
  10. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  11. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
  12. postfix:x:89:89::/var/spool/postfix:/sbin/nologin
  13. sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
  14. tcpdump:x:72:72::/:/sbin/nologin
  15. 2gadmin:x:500:10::/home/viadmin:/bin/bash
  16. apache:x:48:48:Apache:/var/www:/sbin/nologin
  17. zabbix:x:498:499:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
  18. mysql:x:497:502::/home/mysql:/bin/bash
  19. zend:x:502:503::/u01/zend/zend/gui/lighttpd:/sbin/nologin
  20. rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
  21. 2daygeek:x:503:504::/home/2daygeek:/bin/bash
  22. named:x:25:25:Named:/var/named:/sbin/nologin
  23. mageshm:x:506:507:2g Admin - Magesh M:/home/mageshm:/bin/bash
  24.  

7 个字段的详细信息如下。

  • 用户名magesh): 已创建用户的用户名,字符长度 1 个到 12 个字符。
  • 密码x):代表加密密码保存在 `/etc/shadow 文件中。
  • **用户 ID(506):代表用户的 ID 号,每个用户都要有一个唯一的 ID 。UID 号为 0 的是为 root 用户保留的,UID 号 1 到 99 是为系统用户保留的,UID 号 100-999 是为系统账户和群组保留的。
  • **群组 ID (507):代表群组的 ID 号,每个群组都要有一个唯一的 GID ,保存在 /etc/group 文件中。
  • **用户信息(2g Admin - Magesh M):代表描述字段,可以用来描述用户的信息(LCTT 译注:此处原文疑有误)。
  • **家目录(/home/mageshm):代表用户的家目录。
  • **Shell(/bin/bash):代表用户使用的 shell 类型。

你可以使用 awkcut 命令仅打印出 Linux 系统中所有用户的用户名列表。显示的结果是相同的。

  1. # awk -F':' '{ print $1}' /etc/passwd
  2. or
  3. # cut -d: -f1 /etc/passwd
  4. root
  5. bin
  6. daemon
  7. adm
  8. lp
  9. sync
  10. shutdown
  11. halt
  12. mail
  13. ftp
  14. postfix
  15. sshd
  16. tcpdump
  17. 2gadmin
  18. apache
  19. zabbix
  20. mysql
  21. zend
  22. rpc
  23. 2daygeek
  24. named
  25. mageshm

方法 2 :使用 getent 命令

getent 命令显示 Name Service Switch 库支持的数据库中的条目。这些库的配置文件为 /etc/nsswitch.conf

getent 命令显示类似于 /etc/passwd 文件的用户详细信息,它将每个用户详细信息显示为包含七个字段的单行。

  1. # getent passwd
  2. root:x:0:0:root:/root:/bin/bash
  3. bin:x:1:1:bin:/bin:/sbin/nologin
  4. daemon:x:2:2:daemon:/sbin:/sbin/nologin
  5. adm:x:3:4:adm:/var/adm:/sbin/nologin
  6. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  7. sync:x:5:0:sync:/sbin:/bin/sync
  8. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  9. halt:x:7:0:halt:/sbin:/sbin/halt
  10. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  11. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
  12. postfix:x:89:89::/var/spool/postfix:/sbin/nologin
  13. sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
  14. tcpdump:x:72:72::/:/sbin/nologin
  15. 2gadmin:x:500:10::/home/viadmin:/bin/bash
  16. apache:x:48:48:Apache:/var/www:/sbin/nologin
  17. zabbix:x:498:499:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
  18. mysql:x:497:502::/home/mysql:/bin/bash
  19. zend:x:502:503::/u01/zend/zend/gui/lighttpd:/sbin/nologin
  20. rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
  21. 2daygeek:x:503:504::/home/2daygeek:/bin/bash
  22. named:x:25:25:Named:/var/named:/sbin/nologin
  23. mageshm:x:506:507:2g Admin - Magesh M:/home/mageshm:/bin/bash

7 个字段的详细信息如上所述。(LCTT 译注:此处内容重复,删节)

你同样可以使用 awkcut 命令仅打印出 Linux 系统中所有用户的用户名列表。显示的结果是相同的。

方法 3 :使用 compgen 命令

compgenbash 的内置命令,它将显示所有可用的命令,别名和函数。

  1. # compgen -u
  2. root
  3. bin
  4. daemon
  5. adm
  6. lp
  7. sync
  8. shutdown
  9. halt
  10. mail
  11. ftp
  12. postfix
  13. sshd
  14. tcpdump
  15. 2gadmin
  16. apache
  17. zabbix
  18. mysql
  19. zend
  20. rpc
  21. 2daygeek
  22. named
  23. mageshm

【编辑推荐】

  1. 安装Linux Mint 19 Tara后,你要做的18件事
  2. 发现最小开源 Linux 电脑,可以定制和无线连接
  3. 如何在Linux中使用一个命令升级所有软件
  4. 如何强制用户在下次登录Linux时更改密码
  5. Linux top 命令?这里帮你拆解一下
【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

PHP5与MySQL5 Web开发技术详解

本书是目前中文版本第一个真正介绍PHP 5及MySQL 5新增语法与功能的权威宝典! 本书本着精、全、要三宗旨,从理论中延伸,从实践中深入,详...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊