了解/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命令