了解 /etc/passwd 文件
/etc/passwd文件是 Linux 操作系统中最重要的文件。该文件存储有关系统上用户的基本信息。该文件归 root 用户所有,要编辑该文件,我们必须具有 root 权限。但是尽量避免编辑这个文件。现在让我们看看这个文件的实际外观
该文件每行包含一个条目。这意味着它将一个用户的信息存储在一行上。用户信息包含七个字段,每个字段由冒号 ( : ) 符号分隔。 /etc/passwd 文件中的每个条目如下所示:
现在让我们一一了解每个字段:
- 用户名:此字段存储登录系统时使用的用户名。 此字段的长度介于 1 到 32 个字符之间。
- 密码:此字段存储用户的密码。 x字符表示密码以加密格式存储在 /etc/shadow 文件中。 我们可以使用passwd命令来更新这个字段。
- 用户 ID(UID) :用户标识符是分配给每个用户的编号 操作系统来引用用户。 0 UID 是为 root 用户保留的。 并且 1-99 UID 保留给其他预定义的帐户。并且 100-999 由系统保留用于管理和系统帐户/组。
- 组 ID(GID) :组标识符是表示主要用户组的数字。 大多数时候它是 与 UID 相同。
- 用户 ID 信息 (GECOS) :这是一个注释字段。 此字段包含S信息,如用户的电话号码,地址,或者用户的全名。 该字段由finger命令用于获取有关用户的信息。
- 主目录:此字段包含用户主目录的绝对路径。 默认情况下,用户创建在 /home 目录下。 如果此文件为空,则该用户的主目录将为 /
- 登录shell :该字段存储用户shell 的绝对路径。 这个shell在用户登录系统时启动。
现在我们已经了解了 /etc/passwd 文件的文件结构,现在让我们看一下这个文件的一个例子。您可以使用 cat 文件查看文件的内容,例如:
cat /etc/passwd
我们可以看到有很多用户拥有所有信息。
要搜索特定用户,我们可以使用 grep 命令。现在,例如要获取有关用户 Nishant 的信息,我们可以使用以下命令:
grep nishant /etc/passwd
检查 /etc/passwd 文件权限
普通用户对 /etc/passwd 文件只有读权限。唯一的 root 用户可以写入这个文件。要查看/etc/passwd文件的权限,我们可以使用ls命令如下:
ls -l /etc/passwd
输出将是
我们可以看到文件 /etc/passwd 的权限是rw-r–r– 。这意味着 root 用户具有读写访问权限,而其他组和用户对该文件具有只读访问权限。
要获得更多详细信息,如大小,修改此文件的时间,我们可以使用 stat 命令:
stat /etc/passwd
读取 /etc/passwd 文件:
我们可以通过使用 while 循环和 IFS 分隔符来更方便地读取 /etc/passwd 文件。 while 循环用于遍历文件,IFS 是一个特殊变量,用于通过特定字符分隔字符串。
#!/bin/bash
# using while loop to iterate through file
while IFS=: read -r f1 f2 f3 f4 f5 f6 f7
do
echo "User $f1 use $f7 shell and stores files in $f6 directory."
done < /etc/passwd
使用此脚本后,我们得到以下输出: