用户什么时候可以执行 `sudo su` 而不是 `sudo su -`?

usu*_* me 5 su sudo

以下发生在我身上:

$ sudo su - superman

Sorry, user clarkkent is not allowed to execute '/bin/su - superman' as root in krypton101.
Run Code Online (Sandbox Code Playgroud)

但是,以下工作正常:

$ sudo su superman
Run Code Online (Sandbox Code Playgroud)

什么时候允许用户做sudo su但不做有用sudo su -?这个设置是如何设置/取消设置的?我读了这个页面,但没有帮助。

更多细节:

  • 我不是管理员
  • 我无权访问 /etc/sudoers
  • 发行版是 Centos 7

And*_*rew 0

回答这个问题:什么时候允许用户执行 sudo su 而不是 sudo su - 有用?

用户名su之前的连字符指示 su 允许当前用户继承用户名的环境。只要clarkkent的环境设置了必要的环境变量就可以以超人身份运行,就不需要运行了。 sudo su - superman

不允许的一个合理的“原因”sudo su - superman可能是系统管理员认为这sudo su - superman造成了安全风险。这是因为,在不指定用户名的情况下,指示系统以rootsudo su -用户身份登录,这可能是系统管理员试图避免的事情。我实际上不确定添加连字符是否会产生这种风险,但我想当涉及到安全性时,安全总比抱歉好

如何设置/取消设置此设置?

配置在/etc/sudoers文件中定义。