【问题标题】:What's the difference between `sudo -i -u user` and `sudo su - user`? [closed]`sudo -i -u user` 和 `sudo su - user` 有什么区别? [关闭]
【发布时间】:2015-10-20 04:34:20
【问题描述】:

两个命令:

sudo -i -u username
sudo su - username

如果我输入密码,我将以username 登录。这些命令实际上有什么区别吗?

【问题讨论】:

  • 运行sudo -i -u username 并检查您的环境变量,然后运行sudo su - username 并检查您的环境变量您应该会看到不同
  • 可能这个答案可能对你有一些帮助,我也试图找到相同问题的答案。 askubuntu.com/questions/376199/…
  • 还有非常显着的配置变化。如果您使用sudo su,那么除了sudoers 配置之外,您的su 的PAM 配置也很重要;如果只使用sudo,那么您只依赖sudo(以及其中包含的所有配置作为参考——它的PAM模块、它的配置等),而另外使用su意味着您依赖在 两个 具有独立行为和配置的工具上(以及将前者配置为允许后者)。
  • 有趣的是,我刚刚看到sudo -i -u someuser 没有设置来自/etc/environment 的变量但sudo su - someuser 设置的情况。 (sudo -i 在这个 Ubuntu 14.04 系统上曾经可以工作。)

标签: bash sudo su


【解决方案1】:

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

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

【讨论】:

  • Afaik su 代表“替代用户”而不是“切换用户”(甚至是“超级用户”)。
  • 谢谢 NaN..我更正了..抱歉打错了。
  • “将当前用户更改为 root 但环境设置 (PATH) 将保持不变” - 实际上这对我来说不是这样
  • sudo su - 用户名,在他的例子中 bash 被称为登录 shell,所以 /etc/profile、.profile 和 .bashrc 被执行,你会发现自己在用户的主目录和用户的环境中。 sudo su 和 sudo su 之间有区别 - 请检查askubuntu.com/questions/376199/…
猜你喜欢
  • 1970-01-01
  • 2021-06-16
  • 2013-09-03
  • 1970-01-01
  • 2021-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-02
相关资源
最近更新 更多