在Linux系统上,用户名、用户ID(UID)、组ID(GID)、主目录和shell等用户帐户信息保存在名为/etc/passwd的纯文本文件中。创建用户时,/etc/passwd、/etc/shadow和/etc/group等系统文件将被更新。
/etc/passwd文件对每个人都是可读的,因为许多实用程序都喜欢读取文件元数据。例如,mail delivery agent会从该文件中查找主目录信息。
/etc/passwd文件以影子密码格式存储帐户信息,密码表示为单个“x”字符,而/etc/shadow文件以加密格式存储实际密码。
此文件存储系统的本地帐户信息。它可以被任何用户读取,但只能由超级用户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文件有七个字段,如下所示
您可以通过以下详细信息了解每个文件的角色:
因为/etc/passwd文件对Linux系统非常重要,所以它的默认权限是644,以防止任何错误的修改,因此任何用户只能读取该文件,只有root用户可以编辑它。您可以按以下方式获得许可
# ls -l /etc/passwd
-rw-r--r-- 1 root root 1501 May 11 16:58 /etc/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权限的情况下更改自己的密码,则在没有root权限的情况下无法更改用户密码。
$ passwd patrick
passwd: Only root can specify a user name./etc/passwd在Linux上是一个非常重要的文件,所以在编辑这个文件时要注意。