su - username- 要求系统为指定用户启动一个新的登录会话。系统将要求用户“用户名”的密码(即使它与当前用户相同)。
sudo su - username会做同样的事情,但首先要求系统提升到超级用户模式,之后su不会询问“用户名”的密码,因为超级用户可以在不知道密码的情况下更改为任何其他用户。话虽如此,sudo它本身通过检查/etc/sudoers文件以确保允许当前用户获得超级用户权限并可能验证当前用户的密码来增强安全性。
我还想评论一下,要获得超级用户登录会话,请使用sudo -i(或sudo -s),sudo su -这很愚蠢:它要求sudo授予超级用户权限,su以便su可以为超级用户启动登录 shell - 什么时候sudo可以实现相同结果更好它本身。
只是重复@dr01 和@OneK 的答案,因为它们都缺少一些细节:
su - username
- 要求系统为指定用户启动一个新的登录会话。系统将要求用户“用户名”的密码(即使它与当前用户相同)。sudo su - username
会做同样的事情,但首先要求系统提升到超级用户模式,之后su
不会询问“用户名”的密码,因为超级用户可以在不知道密码的情况下更改为任何其他用户。话虽如此,sudo
它本身通过检查/etc/sudoers
文件以确保允许当前用户获得超级用户权限并可能验证当前用户的密码来增强安全性。我还想评论一下,要获得超级用户登录会话,请使用
sudo -i
(或sudo -s
),sudo su -
这很愚蠢:它要求sudo
授予超级用户权限,su
以便su
可以为超级用户启动登录 shell - 什么时候sudo
可以实现相同结果更好它本身。拥有超级用户权限,
sudo su - username
将让您登录(在登录 shell 中)$username
而不要求输入密码,同时su - username
会要求输入$username
.sudo su - username
与su - username
: 运行登录 shell 相同username
。su - username
以 root 身份运行并且sudo su - username
不需要知道username的密码(因为它们以提升的权限su - username
运行),而以普通用户身份运行则需要知道它。