sudo su "username" vs. su "username"

Pet*_*ter 6 sudo su

请解释一下,sudo su "username"su "username"之间有什么区别

哪个特权更高?如果我使用sudo su "username"登录 root ,我只是一个命令的 root 用户?所以可能是脚本的开头工作正常,但其余部分却没有?那么在这种情况下,建议使用su "username",因为它具有更高的权限?请解释这两个命令之间的区别,谢谢。

agt*_*ver 11

以下是差异:

  • su <someuser>为 user 启动一个 shell someuser。除非您是 root,否则系统会要求您输入someuser.
  • su(没有用户名)为用户启动一个 shell root(在询问 root 密码之后)。
  • sudo询问您的密码并(假设您具有 sudo 权限)执行具有 root 权限的命令(sudo reboot询问您的密码并重新启动计算机)。
  • sudo su <somesuer>su以 root 权限执行。所以它不会询问someuser的密码。但是,它会要求您输入密码以验证您的 sudo 权限。之后它将为用户 someuser启动一个 shell 。

在权限方面,由sudo su <someuser>或所打开的外壳没有区别su <someuser>。这不是安全问题,因为 shell 进程无法升级到父进程的权限。

如果您查看流程树,您可以看到不同之处。sudo su <someuser>显示(假设 bash):

+???bash???su???bash
Run Code Online (Sandbox Code Playgroud)

虽然su <someuser>显示:

+???bash???sudo???su???bash
Run Code Online (Sandbox Code Playgroud)

您的下一个问题可能是如何在不需要用户输入的无人参与脚本中传递密码。我认为有两种选择:

  • 从 cron(或其任何变体)运行脚本并以 root 身份运行它
  • 从您自己的帐户运行脚本并使用 sudo 的 -S 选项,如下所示:echo <yourpassword> | sudo -S su -l <someuser>或者甚至更好:echo <yourpassword> | sudo -S su -l <someuser> -c '<somecommand>'。确保脚本只能由您自己读取,因为您的密码在其中。更间接地,您可以将您的密码存储在一个文件中,然后将其添加到 sudo。然后您的脚本可以读取,但您的密码文件不能。

  • 当您以不同的用户身份启动 shell 时,使用命令 `su - &lt;someuser&gt;` 很有用。这将加载所有用户的正常环境。有时您可能不希望那样,但如果您试图解决用户遇到的问题,让他/她的环境就像他们通常所拥有的那样会很方便。 (2认同)

归档时间:

查看次数:

33947 次

最近记录:

10 年,10 月 前