chi*_*555 20 command-line sudo
为什么在这个例子中一个比另一个更受欢迎?
sudo su
echo "options iwlwifi 11n_disable=1" >> /etc/modprobe.d/iwlwifi.conf
exit
Run Code Online (Sandbox Code Playgroud)
请提供指向 Ubuntu 文档的链接。
Mit*_*tch 15
该sudo su命令代表“切换用户”,允许您成为另一个用户。它允许允许的用户以超级用户或其他用户的身份执行命令,如 sudoers 文件中指定的那样。
?i(模拟初始登录)选项运行由目标用户的密码数据库条目指定的 shell 作为登录 shell。这意味着 shell 将读取特定于登录名的资源文件,例如 .profile 或 .login。如果指定了命令,它将通过 shell 的 ?c 选项传递给 shell 以执行。如果未指定命令,则执行交互式 shell。
来源:手册页
Ora*_*Dog 14
sudo su只将当前用户更改为 root。环境设置(如 PATH)保持不变。
sudo -i 创建一个新环境,就像 root 刚刚登录一样。
如果您使用其他用户,差异会更加明显。之后sudo su bob你将成为鲍勃,但在同一个地方。在sudo -i -u bob您成为 bob 之后,在 bob 的主目录中,使用 bob 的默认 shell 以及 bob.profile和任何其他已运行的登录脚本。
请参阅man sudo了解更多详情-i。不幸的是,man su对细节的了解很少。
发现一个版本man su(来自 login-1:4.1.4.2+svn3283-3ubuntu5.1)有以下内容:
$PATH 根据 /etc/login.defs 选项 ENV_PATH 或 ENV_SUPATH 重置(见下文);
$IFS 重置为“<space><tab><newline>”(如果已设置)。
请注意,环境的默认行为如下:
$HOME、$SHELL、$USER、$LOGNAME、$PATH 和 $IFS 环境变量被重置。
如果未使用 --login ,则复制环境,但上述变量除外。
如果使用 --login,则 $TERM、$COLORTERM、$DISPLAY 和 $XAUTHORITY 环境变量在已设置的情况下将被复制。
其他环境可能由 PAM 模块设置。
因此,是否以及在多大程度上sudo su改变环境取决于您的发行版和设置。因此sudo -i理论上更便携。
主要问题是(并非如此)健全的环境设置之一。
使用sudo su新 shell 从发出命令的用户那里获取其环境 - 这可能有问题。
有了sudo -i干净的根外壳。
仍然需要注意的是,很少需要创建根 shell。