我之前尝试过配置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 配置(切勿直接编辑配置)。确保环境变量EDITOR
或VISUAL
设置为您喜欢的编辑器,否则您可能会得到一个不熟悉的编辑器。该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)
最大的区别在于,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
。这会检查文件是否合法,并有助于防止您意外破坏它。
归档时间: |
|
查看次数: |
10665 次 |
最近记录: |