首先,我们应该注意到,在现代系统中,/etc/passwd 实际上并不包含任何密码,它只包含基本的帐户信息。在 linux 系统上,包含密码的文件是 /etc/shadow,它并不真正包含密码,而是密码生成的哈希值(在基于 FreeBSD 的系统上,该文件是 /etc/master.passwd,包括 OSX) .
默认情况下,这两个文件都应该已经拥有确保它们安全的权限,这是我的一个 Linux 系统上的 /etc/password:
jed@jed-bt:~$ ls -la /etc/passwd
-rw-r--r-- 1 root root 1797 Feb 11 13:13 /etc/passwd
Run Code Online (Sandbox Code Playgroud)
请注意,您需要保持 /etc/passwd 世界的可读性,否则事情会中断,如之前的答案所述。因此,要重置对这些的读/写权限,您可以运行以下命令
chmod 644 /etc/passwd
Run Code Online (Sandbox Code Playgroud)
如果文件归 root 以外的任何人所有,您也可以运行
chown root:root /etc/passwd
Run Code Online (Sandbox Code Playgroud)
重置它。当然,您必须以root身份运行chown
和chmod
命令,或者使用sudo
.