两个命令:
sudo -i -u username
sudo su - username
如果我输入我的密码,那么会将我登录为用户名
。这些命令之间实际上有任何区别吗?
su
命令代表 "替换用户",可以让你成为不同的用户(超级用户)。
sudo su
将当前用户更改为 root,但是 环境设置(PATH)
会保持不变。它允许有权限的用户将命令作为超级用户或另一个用户执行,如 sudoers
文件中所指定的那样。sudo -i
可以获得一个干净的 root shell。
选项 ‑i (模拟初始登录)会运行目标用户密码数据库条目指定的 shell 作为登录 shell。这意味着登录特定的资源文件,例如 .profile
或者 .login
将被 shell 读取。如果指定了命令,则传递给 shell 执行通过 shell 的 ‑c 选项。如果没有指定命令,则执行交互式 shell。su
代表着“替换用户”,而不是“切换用户”(甚至不是“超级用户”)。 - NaN
sudo -i -u username
,检查你的环境变量,然后运行命令sudo su - username
,再次检查你的环境变量。你应该会看到它们不同。 - Mischasudo su
,那么除了您的sudoers
配置之外,您的su
PAM配置也很重要;如果只使用sudo
,则仅依赖于sudo
(以及其中包含的所有配置,例如其PAM模块、配置等),而另外使用su
意味着您依赖于两个具有独立行为和配置的工具(并且前者需要配置以允许后者)。 - Charles Duffysudo -i -u someuser
没有从/etc/environment
设置变量,但是sudo su - someuser
可以。(在这个 Ubuntu 14.04 系统上,sudo -i
曾经可以工作。) - cjs