Merge pull request #9945 from wxy/20180802-6-Easy-Ways-to-Check-User-Name-And-Other-Information-in-Linux

PRF&PUB:20180802 6 Easy Ways to Check User Name And Other Information in Linux
This commit is contained in:
pityonline 2018-08-25 09:34:09 +08:00 committed by GitHub
commit 5838a0e79d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,7 +1,7 @@
6 个简单的方式来查看 Linux 中的用户名和其它信息
======
这是一个非常基础的话题,在 Linux 中,每个人都知道如何使用 **id** 来查找用户信息。一些用户也从 **/etc/passwd** 文件中过滤用户信息。
这是一个非常基础的话题,在 Linux 中,每个人都知道如何使用 `id` 来查找用户信息。一些用户也从 `/etc/passwd` 文件中过滤用户信息。
我们还使用其它命令来获取用户信息。
@ -11,45 +11,44 @@
这是帮助管理员在 Linux 中查找用户信息的基本命令之一。Linux 中的一切都是文件,甚至用户信息都存储在一个文件中。
**建议阅读:**
建议阅读:
**(#)** [怎样在 Linux 上查看用户创建的日期][1]
- [怎样在 Linux 上查看用户创建的日期][1]
- [怎样在 Linux 上查看用户属于哪个组][2]
- [怎样在 Linux 上查看强制用户在下次登录时改变密码][3]
**(#)** [怎样在 Linux 上查看用户属于哪个组][2]
**(#)** [怎样在 Linux 上查看强制用户在下次登录时改变密码][3]
所有用户都被添加在 `/etc/passwd` 文件中,这里保留了用户名和其它相关详细信息。在 Linux 中创建用户时,用户详细信息将存储在 /etc/passwd 文件中。passwd 文件将每个用户详细信息保存为一行,包含 7 字段。
所有用户都被添加在 `/etc/passwd` 文件中,这里保留了用户名和其它相关详细信息。在 Linux 中创建用户时,用户详细信息将存储在 `/etc/passwd` 文件中。passwd 文件将每个用户详细信息保存为一行,包含 7 字段。
我们可以使用以下 6 种方法来查看用户信息。
* `id :`为指定的用户名打印用户和组信息。
* `getent :`从 Name Service Switch 库中获取条目。
* `/etc/passwd file :` /etc/passwd 文件包含每个用户的详细信息,每个用户详情是一行,包含 7 个字段。
* `finger :`用户信息查询程序
* `lslogins :`lslogins 显示系统中已有用户的信息
* `compgen :`compgen 是 bash 内置命令,它将显示用户的所有可用命令。
* `id`:为指定的用户名打印用户和组信息。
* `getent`从 Name Service Switch 库中获取条目。
* `/etc/passwd` 文件包含每个用户的详细信息,每个用户详情是一行,包含 7 个字段。
* `finger`用户信息查询程序
* `lslogins`显示系统中已有用户的信息
* `compgen`是 bash 内置命令,它将显示用户的所有可用命令。
### 1) 使用 id 命令
id 代表身份。它输出真实有效的用户和组 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 和名称
* `uid (1000/daygeek)` 它显示用户 ID 和用户名
* `gid (1000/daygeek)` 它显示用户的组 ID 和名称
* `groups` 它显示用户的附加组 ID 和名称
### 2) 使用 getent 命令
getent 命令显示 Name Service Switch 库支持的数据库中的条目,这些库在 /etc/nsswitch.conf 中配置。
`getent` 命令显示 Name Service Switch 库支持的数据库中的条目,这些库在 `/etc/nsswitch.conf` 中配置。
`getent` 命令会显示类似于 `/etc/passwd` 文件的用户详情,它将每个用户的详细信息放在一行,包含 7 个字段。
getent 命令会显示类似于 /etc/passwd 文件的用户详情,它将每个用户的详细信息放在一行,包含 7 个字段。
```
# getent passwd
root:x:0:0:root:/root:/bin/bash
@ -85,24 +84,24 @@ nrpe:x:497:497:NRPE user for the NRPE service:/var/run/nrpe:/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 个字段的详细信息。
下面是关于 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):`** 它表示用户 IDUID每个用户应包含唯一的 UID。UID (0-Zero) 保留给 rootUID1-99是为系统用户保留的UID100-999是为系统账户/组保留的。
* **`Group ID (GID-503):`** 它表示组 IDGID每个组应该包含唯一的 GID它存储在 /etc/group 文件中。
* **`User ID Info (2g Admin - Magesh M):`** 它表示命令字段。这个字段可用于描述用户信息。
* **`Home Directory (/home/magesh):`** 它表示用户家目录。
* **`shell (/bin/bash):`** 它表示用户的 bash shell。
* `Username (magesh)` 已创建的用户名。字符长度应该在 1 到 32 之间。
* `Password (x)` 它表明加密密码存储在 `/etc/shadow` 文件中。
* `User ID (UID-502)` 它表示用户 IDUID每个用户应包含唯一的 UID。UID (0-Zero) 保留给 rootUID1-99是为系统用户保留的UID100-999是为系统账户/组保留的。
* `Group ID (GID-503)` 它表示组 IDGID每个组应该包含唯一的 GID它存储在 `/etc/group` 文件中。
* `User ID Info (2g Admin - Magesh M)` 它表示命令字段。这个字段可用于描述用户信息。
* `Home Directory (/home/magesh)` 它表示用户家目录。
* `shell (/bin/bash)` 它表示用户的 bash shell。
如果你只想在 `getent` 命令的输出中显示用户名,使用以下命令格式:
如果你只想在 getent 命令的输出中显示用户名,使用以下命令格式:
```
# getent passwd | cut -d: -f1
root
@ -138,10 +137,10 @@ nrpe
magesh
thanu
sudha
```
只显示用户的家目录,使用以下命令格式:
```
# getent passwd | grep '/home' | cut -d: -f1
centos
@ -149,12 +148,12 @@ prakash
magesh
thanu
sudha
```
### 3) 使用 /etc/passwd 文件
`/etc/passwd` 是一个文本文件,它包含每个用户登录 Linux 系统所必需的的信息。它维护用户的有用信息,如用户名,密码,用户 ID组 ID用户 ID 信息,家目录和 shell。/etc/passwd 文件将每个用户详细信息放在一行中,包含 7 个字段,如下所示:
`/etc/passwd` 是一个文本文件,它包含每个用户登录 Linux 系统所必需的的信息。它维护用户的有用信息,如用户名,密码,用户 ID组 ID用户 ID 信息,家目录和 shell。`/etc/passwd` 文件将每个用户详细信息放在一行中,包含 7 个字段,如下所示:
```
# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
@ -190,24 +189,24 @@ nrpe:x:497:497:NRPE user for the NRPE service:/var/run/nrpe:/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):`** 它表示用户 IDUID每个用户应包含唯一的 UID。UID (0-Zero) 保留给 rootUID1-99是为系统用户保留的UID100-999是为系统账户/组保留的。
* **`Group ID (GID-503):`** 它表示组 IDGID每个组应该包含唯一的 GID它存储在 /etc/group 文件中。
* **`User ID Info (2g Admin - Magesh M):`** 它表示命令字段。这个字段可用于描述用户信息。
* **`Home Directory (/home/magesh):`** 它表示用户家目录。
* **`shell (/bin/bash):`** 它表示用户的 bash shell。
* `Username (magesh)` 已创建的用户名。字符长度应该在 1 到 32 之间。
* `Password (x)` 它表明加密密码存储在 `/etc/shadow` 文件中。
* `User ID (UID-502)` 它表示用户 IDUID每个用户应包含唯一的 UID。UID (0-Zero) 保留给 rootUID1-99是为系统用户保留的UID100-999是为系统账户/组保留的。
* `Group ID (GID-503)` 它表示组 IDGID每个组应该包含唯一的 GID它存储在 `/etc/group` 文件中。
* `User ID Info (2g Admin - Magesh M)` 它表示命令字段。这个字段可用于描述用户信息。
* `Home Directory (/home/magesh)` 它表示用户家目录。
* `shell (/bin/bash)` 它表示用户的 bash shell。
如果你只想显示 `/etc/passwd` 文件中的用户名,使用以下格式:
如果你只想显示 /etc/passwd 文件中的用户名,使用以下格式:
```
# cut -d: -f1 /etc/passwd
root
@ -243,10 +242,10 @@ nrpe
magesh
thanu
sudha
```
只显示用户的家目录,使用以下格式:
```
# cat /etc/passwd | grep '/home' | cut -d: -f1
centos
@ -254,12 +253,12 @@ prakash
magesh
thanu
sudha
```
### 4) 使用 finger 命令
finger 命令显示有关系统用户的信息。它显示用户的真实姓名,终端名称和写入状态(如果没有写入权限,那么最为终端名称后面的 "*"),空闲时间和登录时间。
`finger` 命令显示有关系统用户的信息。它显示用户的真实姓名,终端名称和写入状态(如果没有写入权限,那么最为终端名称后面的 `*`),空闲时间和登录时间。
```
# finger magesh
Login: magesh Name: 2g Admin - Magesh M
@ -267,22 +266,22 @@ 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:`** 上次登录日期和其它信息
* `Login` 用户名
* `Name` 附加/有关用户的其它信息
* `Directory` 用户家目录的信息
* `Shell` 用户的 shell 信息
* `LAST-LOGIN` 上次登录日期和其它信息
### 5) 使用 lslogins 命令
它显示系统已知用户的信息。默认情况下,它将列出系统中所有用户的信息。
lslogins 使用程序的灵感来自于 logins 实用程序,该实用程序最初出现在 FreeBSD 4.10 中。
`lslogins` 使用程序的灵感来自于 `logins` 实用程序,该实用程序最初出现在 FreeBSD 4.10 中。
```
# lslogins -u
UID USER PWD-LOCK PWD-DENY LAST-LOGIN GECOS
@ -292,21 +291,21 @@ UID USER PWD-LOCK PWD-DENY LAST-LOGIN GECOS
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:`** 有关用户的其它信息
* `UID` 用户 id
* `USER` 用户名
* `PWD-LOCK` 密码已设置,但是已锁定
* `PWD-DENY` 登录密码是否禁用
* `LAST-LOGIN` 上次登录日期
* `GECOS` 有关用户的其它信息
### 6) 使用 compgen 命令
compgen 是 bash 内置命令,它将显示所有可用的命令,别名和函数。(to 校正:这个命令在 CentOS 中有,但是我没有搞懂它的输出)
`compgen` 是 bash 内置命令它将显示所有可用的命令别名和函数。LCTT 译注:它的 `-u` 参数可以列出系统中用户。)
```
# compgen -u
root
@ -352,7 +351,7 @@ via: https://www.2daygeek.com/6-easy-ways-to-check-user-name-and-other-informati
作者:[Prakash Subramanian][a]
选题:[lujun9972](https://github.com/lujun9972)
译者:[MjSeven](https://github.com/MjSeven)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出