sudo 打算如何使用?

Naf*_*Kay 24 root sudo

我之前尝试过配置sudo,但我没有太多运气。它与 有什么不同su -l -c "x"?似乎通过配置文件,可以使用户只能访问某些命令等。我一直认为sudo这是将命令作为另一个用户或组的一种方式。由于像 Ubuntu 和 Mint 这样的发行版本质上通过密码让主用户轻松访问 root 来简化它,因此我不确定它的预期用途是什么。

如何将用户添加到 sudo 文件,授予他们仅在 root 下运行某些命令的权限?我也不想打开任何安全漏洞。

Gil*_*il' 16

对于基本操作——以 root 身份运行命令——sudo 和 su 之间最明显的区别是 sudo 需要调用用户的密码(即你的密码),而 su 需要目标用户的密码(即 root 密码)。上一个问题已广泛讨论了安全隐患:获得 root 权限的最安全方法是:sudo、su 还是 login?.

Sudo 具有除 su 之外的其他功能。特别是,一旦您有了用户的密码,您就可以以该用户的身份运行任何命令。另一方面,可以配置 sudo 以便调用它的用户只能像其他用户一样运行特定命令。这是可能的,因为 sudo 不需要任何身份验证(除了可能通过输入密码来确认您是您之外——但这与验证您的任务的用户身份略有不同)。

您可以通过visudo以 root 身份运行命令来更改 sudo 配置(切勿直接编辑配置)。确保环境变量EDITORVISUAL设置为您喜欢的编辑器,否则您可能会得到一个不熟悉的编辑器。该sudoers手册页是有点简洁,但有例子。要允许用户bob运行/bin/foo(使用任意数量的参数)和/bin/bar --safe(但不使用任何其他参数) as root,请使用以下行:

bob ALL = (root) /bin/foo
bob ALL = (root) /bin/bar --safe
Run Code Online (Sandbox Code Playgroud)

  • @Tshepang 阿门,兄弟。如果我必须释放 root 密码并解释关于如何 SU 的支持技术,而不是做 / 任何事情 / 除了 `apache2ctl graceful` 我想我更愿意割开我的手腕并解决它。 (3认同)
  • `sudo` 是一项了不起的发明 (2认同)

Dav*_*ngs 6

最大的区别在于,sudo您不需要 root 密码以 root 身份运行命令,就像su. 您确实需要 root 密码才能将某人添加到sudoers文件中,但此后该人可以以 root身份运行全部或部分(如果您已对其进行限制),而无需其他密码。

另一个区别是,正如您所指出的,sudo允许对可以运行的命令进行更精细的控制。

有关sudoers文件格式的详细信息,请运行man sudoers. 您会在那里找到仅允许以 root 身份运行某些命令的示例。每行的基本结构是:

user_list host_list = cmd_list
Run Code Online (Sandbox Code Playgroud)

cmd_list 可以包含允许真实用户切换到哪个用户的详细信息。例如,您可能允许网站管理员切换到 wwwroot 以重新启动 apache 而不是 root。它还可以包括其他选项,例如切换前是否需要用户密码(这是默认设置)。

示例行可能是:

joe  ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)

这意味着:让 joe 以任何用户身份在任何主机上运行任何命令。更严格的路线可能是:

joe  ALL=(operator) /usr/local/ops/
Run Code Online (Sandbox Code Playgroud)

这意味着:让 joe 以用户“operator”的身份运行 /usr/local/ops 目录中的任何命令。

sudoers 手册页的末尾有很多示例。

您应该/etc/sudoers使用命令进行编辑visudo。这会检查文件是否合法,并有助于防止您意外破坏它。