---
author: Prakash Subramanian
category: 技术
comments_data: []
count:
  commentnum: 0
  favtimes: 1
  likes: 0
  sharetimes: 0
  viewnum: 22877
date: '2018-08-25 08:54:00'
editorchoice: false
excerpt: 你可能会问，为什么要讨论这个基础话题呢？即使我也这么认为，因为除了这两个之外没有更好的方法了，但是我们也有一些不错的选择。
fromurl: https://www.2daygeek.com/6-easy-ways-to-check-user-name-and-other-information-in-linux/
id: 9950
islctt: true
largepic: /images/p/201808/25/085844v71epo9vqgac6au2.jpg
permalink: /article-9950-1.html
pic: /data/attachment/album/201808/25/085844v71epo9vqgac6au2.jpg.thumb.jpg
related: []
reviewer: wxy
selector: lujun9972
summary: 你可能会问，为什么要讨论这个基础话题呢？即使我也这么认为，因为除了这两个之外没有更好的方法了，但是我们也有一些不错的选择。
tags:
- passwd
- user
thumb: false
title: 6 个简单的方式来查看 Linux 中的用户名和其它信息
titlepic: true
translator: MjSeven
updated: '2018-08-25 08:54:00'
---

![](/data/attachment/album/201808/25/085844v71epo9vqgac6au2.jpg)


这是一个非常基础的话题，在 Linux 中，每个人都知道如何使用 `id` 来查找用户信息。一些用户也从 `/etc/passwd` 文件中过滤用户信息。


我们还使用其它命令来获取用户信息。


你可能会问，为什么要讨论这个基础话题呢？即使我也这么认为，因为除了这两个之外没有更好的方法了，但是我们也有一些不错的选择。


与这两者相比，那些命令提供了更详细的信息，这对于新手非常有帮助。


这是帮助管理员在 Linux 中查找用户信息的基本命令之一。Linux 中的一切都是文件，甚至用户信息都存储在一个文件中。


建议阅读：


* [怎样在 Linux 上查看用户创建的日期](https://www.2daygeek.com/how-to-check-user-created-date-on-linux/)
* [怎样在 Linux 上查看用户属于哪个组](https://www.2daygeek.com/how-to-check-which-groups-a-user-belongs-to-on-linux/)
* [怎样在 Linux 上查看强制用户在下次登录时改变密码](https://www.2daygeek.com/how-to-force-user-to-change-password-on-next-login-in-linux/)


所有用户都被添加在 `/etc/passwd` 文件中，这里保留了用户名和其它相关详细信息。在 Linux 中创建用户时，用户详细信息将存储在 `/etc/passwd` 文件中。passwd 文件将每个用户详细信息保存为一行，包含 7 字段。


我们可以使用以下 6 种方法来查看用户信息。


* `id`：为指定的用户名打印用户和组信息。
* `getent`：从 Name Service Switch 库中获取条目。
* `/etc/passwd`： 文件包含每个用户的详细信息，每个用户详情是一行，包含 7 个字段。
* `finger`：用户信息查询程序
* `lslogins`：显示系统中已有用户的信息
* `compgen`：是 bash 内置命令，它将显示用户的所有可用命令。


### 1) 使用 id 命令


`id` 代表<ruby> 身份 <rt>  identity </rt></ruby>。它输出真实有效的用户和组 ID。也可以输出指定用户或当前用户的用户和组信息。



```
# id daygeek
uid=1000(daygeek) gid=1000(daygeek) groups=1000(daygeek),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),118(lpadmin),128(sambashare)
```

下面是上述输出的详细信息：


* `uid (1000/daygeek)`： 它显示用户 ID 和用户名
* `gid (1000/daygeek)`： 它显示用户的组 ID 和名称
* `groups`： 它显示用户的附加组 ID 和名称


### 2) 使用 getent 命令


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


`getent` 命令会显示类似于 `/etc/passwd` 文件的用户详情，它将每个用户的详细信息放在一行，包含 7 个字段。



```
# getent 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
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
magesh:x:502:503:2g Admin - Magesh M:/home/magesh:/bin/bash
thanu:x:503:504:2g Editor - Thanisha M:/home/thanu:/bin/bash
sudha:x:504:505:2g Editor - Sudha M:/home/sudha:/bin/bash
```

下面是关于 7 个字段的详细信息：



```
magesh:x:502:503:2g Admin - Magesh M:/home/magesh:/bin/bash
```

* `Username (magesh)`： 已创建的用户名。字符长度应该在 1 到 32 之间。
* `Password (x)`： 它表明加密密码存储在 `/etc/shadow` 文件中。
* `User ID (UID-502)`： 它表示用户 ID（UID），每个用户应包含唯一的 UID。UID (0-Zero) 保留给 root，UID（1-99）是为系统用户保留的，UID（100-999）是为系统账户/组保留的。
* `Group ID (GID-503)`： 它表示组 ID（GID），每个组应该包含唯一的 GID，它存储在 `/etc/group` 文件中。
* `User ID Info (2g Admin - Magesh M)`： 它表示命令字段。这个字段可用于描述用户信息。
* `Home Directory (/home/magesh)`： 它表示用户家目录。
* `shell (/bin/bash)`： 它表示用户的 bash shell。


如果你只想在 `getent` 命令的输出中显示用户名，使用以下命令格式：



```
# getent passwd | cut -d: -f1
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
uucp
operator
games
gopher
magesh
thanu
sudha
```

只显示用户的家目录，使用以下命令格式：



```
# getent passwd | grep '/home' | cut -d: -f1
centos
prakash
magesh
thanu
sudha
```

### 3) 使用 /etc/passwd 文件


`/etc/passwd` 是一个文本文件，它包含每个用户登录 Linux 系统所必需的的信息。它维护用户的有用信息，如用户名，密码，用户 ID，组 ID，用户 ID 信息，家目录和 shell。`/etc/passwd` 文件将每个用户详细信息放在一行中，包含 7 个字段，如下所示：



```
# 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
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
magesh:x:502:503:2g Admin - Magesh M:/home/magesh:/bin/bash
thanu:x:503:504:2g Editor - Thanisha M:/home/thanu:/bin/bash
sudha:x:504:505:2g Editor - Sudha M:/home/sudha:/bin/bash
```

以下是 7 个字段的详细信息。



```
magesh:x:502:503:2g Admin - Magesh M:/home/magesh:/bin/bash
```

字段信息同上。


如果你只想显示 `/etc/passwd` 文件中的用户名，使用以下格式：



```
# cut -d: -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
uucp
operator
games
gopher
magesh
thanu
sudha
```

只显示用户的家目录，使用以下格式：



```
# cat /etc/passwd | grep '/home' | cut -d: -f1
centos
prakash
magesh
thanu
sudha
```

### 4) 使用 finger 命令


`finger` 命令显示有关系统用户的信息。它显示用户的真实姓名，终端名称和写入状态（如果没有写入权限，那么最为终端名称后面的 `*`），空闲时间和登录时间。



```
# finger magesh
Login: magesh Name: 2g Admin - Magesh M
Directory: /home/magesh Shell: /bin/bash
Last login Tue Jul 17 22:46 (EDT) on pts/2 from 103.5.134.167
No mail.
No Plan.
```

以下是上述输出的详细信息：


* `Login`： 用户名
* `Name`： 附加/有关用户的其它信息
* `Directory`： 用户家目录的信息
* `Shell`： 用户的 shell 信息
* `LAST-LOGIN`： 上次登录日期和其它信息


### 5) 使用 lslogins 命令


它显示系统已知用户的信息。默认情况下，它将列出系统中所有用户的信息。


`lslogins` 使用程序的灵感来自于 `logins` 实用程序，该实用程序最初出现在 FreeBSD 4.10 中。



```
# lslogins -u
UID USER PWD-LOCK PWD-DENY LAST-LOGIN GECOS
 0 root 0 0 00:17:28 root
500 centos 0 1 Cloud User
501 prakash 0 0 Apr12/04:08 2018/04/12
502 magesh 0 0 Jul17/22:46 2g Admin - Magesh M
503 thanu 0 0 Jul18/00:40 2g Editor - Thanisha M
504 sudha 0 0 Jul18/01:18 2g Editor - Sudha M
```

以下是上述输出的详细信息：


* `UID`： 用户 id
* `USER`： 用户名
* `PWD-LOCK`： 密码已设置，但是已锁定
* `PWD-DENY`： 登录密码是否禁用
* `LAST-LOGIN`： 上次登录日期
* `GECOS`： 有关用户的其它信息


### 6) 使用 compgen 命令


`compgen` 是 bash 内置命令，它将显示所有可用的命令，别名和函数。（LCTT 译注：它的 `-u` 参数可以列出系统中用户。）



```
# compgen -u
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
uucp
operator
games
gopher
magesh
thanu
sudha

```



---


via: <https://www.2daygeek.com/6-easy-ways-to-check-user-name-and-other-information-in-linux/>


作者：[Prakash Subramanian](https://www.2daygeek.com/author/prakash/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[MjSeven](https://github.com/MjSeven) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出