$cat /etc/passwd |grep -i root
root:x:0:0:root:/root:/bin/bash
$sudo cat /etc/shadow |grep -i root
root:!:17179:0:99999:7:::
在影子文件的第二个字段中,!
表示root用户无法登录,但为什么我可以登录到root用户sudo su
?
为什么我不能通过su root
or登录到 root 用户su -
?
$cat /etc/passwd |grep -i root
root:x:0:0:root:/root:/bin/bash
$sudo cat /etc/shadow |grep -i root
root:!:17179:0:99999:7:::
在影子文件的第二个字段中,!
表示root用户无法登录,但为什么我可以登录到root用户sudo su
?
为什么我不能通过su root
or登录到 root 用户su -
?
条目的加密密码字段
!
中shadow
的 表示没有密码可以对其进行身份验证。来自man shadow
:正如手册所说,这并不意味着您不能以 root 身份登录。这只是意味着您不能使用 root 帐户的密码以 root 身份登录。(您可以使用 SSH 密钥通过 SSH 以 root 身份登录,例如,如果您之前配置过它,即使帐户被锁定。)
sudo
通常使用您的密码进行身份验证,而不是 root 的。这可以通过设置或之一targetpw
来更改。如果您设置这些选项之一,并在密码被锁定时尝试使用密码,那将失败。rootpw
runaspw
sudoers
现在让我们相应地查看命令:
sudo su
:sudo
以 root 权限运行命令su
(替代用户),因此即使/etc/shadow
say 或 haveroot:!:17179:0:99999:7:::
它仍然会以 root 权限运行命令。su -
或su root
:/etc/shadow
,因此使用这些命令将不起作用。如果你想让它们工作,那么必须通过给它一个密码来解锁root 帐户。概括:
su -
0rsu root
切换到用户root,不存在所以它不会发生,但是使用特权sudo su
运行switch 命令root
,所以在这种情况下,如果你在sudo
组中它就会去。在这种情况下,您实际上并没有以 root 身份登录,只是以root身份登录,所以它会继续。资料来源:“su -”和“su root”有什么区别?