Linux中的/etc/passwd文件
在Linux系统中,用户帐户信息如用户名,用户ID(UID),组ID(GID),主目录和shell中的一个名为/etc/passwd的纯文本文件。
创建用户时,更新诸如/etc/passwd,/etc/shadow和/etc/group之类的系统文件。
/etc/passwd文件对于每个人都可以读取,因为许多实用程序都喜欢读取文件元数据。
例如,邮件传递代理从此文件查找主目录信息。
/etc/passwd文件以阴影密码格式存储帐户信息,密码表示为单个"x"字符,而/etc/shadow文件以加密格式存储实际密码。
了解/etc/passwd文件格式
此文件存储系统的本地帐户信息。
它可以由任何用户读取,但只能由超级用户root写入。
它包含一些行,并使用冒号(:)分隔每行代表特定用户的字段。
$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 linoadmin:x:1000:1000::/home/linoadmin:/bin/bash
/etc/passwd
文件有七个字段,可以表示如下
我们可以了解每个文件的角色及以下详细信息:
- 用户名或者登录:第一个字段定义要登录的用户的用户名。只有本地用户只有Passwd文件中的条目。它应该在1到32个字符之间。
- 密码(x):由
x
字符标识的第二个字段表示加密密码/etc/shadow文件中可用。密码文件不包括用于安全原因的密码(每个人可读)。 - 用户ID(UID):它代表第三个字段。在Linux机器中创建的每个用户都有一个唯一的用户ID,可在系统上识别它们。 root用户始终由用户ID 0引用0.对于其他预定义帐户,UID 100-999保留了UID 1至99,而UID 100-999是由管理和系统帐户/组的系统保留的。一些Linux系统的新用户的UID启动1000。
- 组ID(GID):它代表第四个字段。使用命令UserAdd创建用户时,如果我们没有明确提及任何组名,它还将以与用户名相同的名称为用户创建主组。它代表了用户所属的主组给出的唯一ID。单个用户可以是可以从文件/etc/group中找到的多个组的成员,但passwd文件将仅包含主组的信息。
- 用户ID信息或者注释或者描述:第五个字段是用户帐户的短注释/描述/信息。它允许我们添加有关用户的全名,电话号码,服务的服务描述等用户的另外信息。
- 主目录:第六字段代表登录时用户主目录的绝对路径。对于常规用户,这通常是
/home/username
。对于root,主目录是/root。 - shell:第七字段是命令或者shell
/bin/bash
的绝对路径。通常,此字段包含有关用户默认shell的信息。
a)/etc/passwd文件权限
因为/etc/passwd
文件对于Linux系统非常重要,因此其默认权限为"644",以防止任何错误的修改,因此任何用户只能读取文件,只能读取root用户可以编辑root用户。
我们可以如下所述
# ls -l /etc/passwd -rw-r--r-- 1 root root 1501 Jan 11 16:58 /etc/passwd
湾passwd命令如何工作
可以更改自己的密码或者分配给用户的密码或者使用/usr/bin/passwd
命令分配的密码。
我们可以以下以下命令权限:
ls -l /usr/bin/passwd -rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
我们可以看到用户和组所有者是具有读取和可执行权限的root,也可以为其他用户提供读取和可执行权限。
虽然它由root拥有,但我们可以看到由`s的权限表示的setuid位,允许用户运行程序,就像它们是程序的用户所有者(我们的情况下root)一样。
这就是为什么即使我们不是root用户,也可以使用此命令更改密码。
要更改自己的密码,只需输入passwd命令而不包含选项
$passwd Changing password for user papso. Changing password for papso. (current) UNIX password: New password:
请注意,事件如果我们可以在没有root权限的情况下更改自己的密码,则无法在没有它的情况下更改用户密码。
$passwd patrick passwd: Only root can specify a user name.