了解/etc/passwd文件格式

时间:2020-01-09 10:43:56  来源:igfitidea点击:

Linux和类似Unix操作系统的/etc/passwd文件格式
/etc/passwd文件存储了登录时所需的基本信息。
换句话说,它存储用户帐户信息。
/etc/passwd是纯文本文件。
它包含系统帐户的列表,为每个帐户提供了一些有用的信息,例如用户ID,组ID,主目录,shell等。
/etc/passwd文件应具有一般读取权限,因为许多命令实用程序都使用它来将用户ID映射到用户名。
但是,对/etc/passwd的写访问只能限制超级用户/root帐户。

了解/etc/passwd文件字段

/etc/passwd为系统的每个用户(用户帐户)每行包含一个条目。
所有字段均由冒号()分隔。
总共七个字段如下。
通常,/etc/passwd文件条目如下所示:

  • "用户名":用户登录时使用。长度应在1到32个字符之间。
  • Password:一个x字符表示加密的密码存储在/etc/shadow文件中。请注意,您需要使用passwd命令来计算在CLI上执行的密码的哈希值,或者在/etc/shadow文件中存储/更新密码的哈希值。
  • 用户ID(UID):必须为每个用户分配一个用户ID(UID)。 UID 0(零)保留给根用户,UID 1-99保留给其他预定义帐户。系统还为管理帐户和系统帐户/组保留了其他UID 100-999。
  • 组ID(GID):主要组ID(存储在/etc/group文件中)
  • 用户ID信息:注释字段。它允许您添加有关用户的额外信息,例如用户全名,电话号码等。该字段由finger命令使用。
  • "主目录":用户登录时所在目录的绝对路径。如果该目录不存在,则用户目录变为/
  • Command/shell:命令或者shell的绝对路径(/bin/bash)。通常,这是一个shell。请注意,它不必是shell。

希望您了解/etc/passwd文件格式。
让我们看一些命令示例。

查看用户列表

/etc/passwd仅用于本地用户。
要查看所有用户的列表,只需使用cat命令:

$ cat /etc/passwd

要搜索名为tom的用户名,请使用grep命令:

$ grep tom /etc/passwd

或者

$ grep -w '^tom' /etc/passwd

输出示例:

tom:x:1000:1000::/home/Hyman:/bin/bash

查看/etc/passwd文件权限

/etc/passwd文件的许可权应仅对用户(-rw-rr)只读,所有者必须是root用户:

$ ls -l /etc/passwd

输出示例:

-rw-r--r-- 1 root root 2659 Sep 17 01:46 /etc/passwd

读取/etc/passwd文件

您可以使用while循环和IFS分隔符读取/etc/passwd文件,如下所示:

#!/bin/bash
# seven fields from /etc/passwd stored in $f1,f2...,$f7
# 
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

您的密码存储在/etc/shadow文件中

您输入的密码未存储在/etc/passwd文件中。
它存储在/etc/shadow文件中。
在过去的好日子里,这种一般的读取权限没有什么大问题。
每个人都可以读取加密的密码,但是硬件速度太慢,无法破解精心选择的密码,而且,以前的基本假设是友好的用户社区。

几乎所有现代Linux/UNIX系列操作系统都使用某种影子密码套件,其中/etc/passwd具有星号(*)而不是加密密码,并且加密密码位于/etc/shadow中,超级用户可以读取只要。

使用/etc/passwd文件的常见命令

这是命令列表:

  • passwd命令
  • su命令
  • sulogin命令
  • getent命令
  • login命令
  • pwck命令
  • pwunconv命令
  • chpasswd命令
  • chsh命令
  • chfn命令
  • useradd命令
  • userdel命令