如果您查看命令的权限集passwd
,您将看到以下内容:
user@apple:~$ ls -l /bin/passwd
-rwsr-xr-x 1 root root 59976 Nov 24 2022 /bin/passwd
Run Code Online (Sandbox Code Playgroud)
/bin/passwd
已设置 SUID 位且其所有者是root
用户。这意味着运行该命令passwd
将以用户的权限运行该命令root
。
鉴于passwd
已经拥有root
用户权限,为什么当我尝试更改另一个用户的密码时会这样说test
:
user@apple:~$ passwd test
passwd: You may not view or modify password information for test.
Run Code Online (Sandbox Code Playgroud)
运行相同的命令,但使用sudo
,让我可以更改密码。这是为什么?