Bash 什么';sudo-i-u user和sudo-su-user的区别是什么?

Bash 什么';sudo-i-u user和sudo-su-user的区别是什么?,bash,sudo,su,Bash,Sudo,Su,两个命令: sudo -i -u username sudo su - username 如果我输入密码,我将以用户名的身份登录。这些命令之间实际上有什么区别吗?su命令代表“替代用户”,允许您成为不同的用户(超级用户)。 sudo su将当前用户更改为root用户,但环境设置(路径)将保持不变。它允许有权限的用户以超级用户或其他用户的身份执行命令,如sudoers文件中所指定 使用sudo-i可以获得一个干净的根shell。 i(模拟初始登录)选项将目标用户的密码数据库条目指定的shell作

两个命令:

sudo -i -u username
sudo su - username

如果我输入密码,我将以
用户名
的身份登录。这些命令之间实际上有什么区别吗?

su命令代表“替代用户”,允许您成为不同的用户(超级用户)。
sudo su
将当前用户更改为root用户,但
环境设置(路径)
将保持不变。它允许有权限的用户以超级用户或其他用户的身份执行命令,如
sudoers
文件中所指定

使用
sudo-i
可以获得一个干净的根shell。
i(模拟初始登录)选项将目标用户的密码数据库条目指定的shell作为登录shell运行。这意味着shell将读取特定于登录的资源文件,如
.profile
.login
。如果指定了命令,则通过shell的‑c选项将其传递给shell执行。如果未指定任何命令,将执行交互式shell。

Afaik
su
代表“替换用户”,而不是“切换用户”(甚至“超级用户”)。谢谢你,NaN..I更正..对输入错误表示歉意。“将当前用户更改为root,但环境设置(路径)将保持不变”-实际上,对于mesudo su-username,这不是真的,在他的例子中,bash被称为loginshell,所以执行/etc/profile、.profile和.bashrc,您将发现自己在用户环境的用户主目录中。sudo su和sudo su之间存在差异-请检查Run
sudo-i-u username
并检查您的环境变量,然后运行
sudo su-username
并检查您的环境变量。您应该会看到不同的结果。这个答案可能对您有所帮助,我也在试图找到同样问题的答案。还有非常重要的配置更改。如果您使用
sudo su
,那么
su
的PAM配置除了您的
sudoers
配置之外,还很重要;如果只使用
sudo
,那么您只依赖于
sudo
(以及其中通过引用包含的所有配置--其PAM模块、配置等),而另外使用
su
意味着您依赖于两个具有独立行为和配置的工具有趣的是,我刚刚看到一个例子,
sudo-I-u someuser
没有从
/etc/environment
设置变量,但是
sudo-su-someuser
设置了变量。(
sudo-I
在这个Ubuntu 14.04系统上曾经工作过。)