我们希望某些用户应该能够例如sudo
成为root用户,
嗯,这就是sudo旨在解决的问题,因此该部分很容易。
但受限于用户不能更改root密码。
正如SHW在评论中指出的那样,您可以将sudo配置为仅允许某些用户以root身份执行某些操作。就是说,您可以允许user1做sudo services apache2 restart
,允许user2做sudo reboot
其他事情,而不能让hired-as-system-administrator user3
做sudo -i
。有关于如何设置sudo的howto,或者您可以在此处搜索(或询问)。那是一个可解决的问题。
但是,已被授予进入sudo -i
或sudo
进入外壳的能力(sudo bash
例如)的用户可以做任何事情。这是因为在sudo启动外壳时,sudo本身已不在图片之列。它提供了不同用户(通常是root用户)的安全性上下文,但对于执行的应用程序的功能没有发言权。如果该应用程序反过来启动,passwd root
那么sudo对此无能为力。注意,这也可以通过其他应用程序完成。例如,许多更高级的编辑器提供了通过shell执行命令的工具,该shell将使用该编辑器进程的有效uid(即root)执行。
也就是说,无论其他用户将做什么,我们仍然可以登录到该服务器并成为root用户。
抱歉; 如果您确实的意思是“确保无论具有root访问权的人做什么,我们都将能够登录并使用系统”,那么(出于所有意图和目的)将无法完成。快速的“ sudo rm / etc / passwd”或“ sudo chmod -x / bin / bash”(或任何shell根目录使用),无论如何,您几乎都处于困境。“几乎用胶管”的意思是“您需要从备份中恢复,并希望他们所做的任何事情都比滑过手指更糟”。您可以采取一些措施来减少意外事故导致系统无法使用的风险,但是您不能阻止恶意行为造成非常严重的问题,甚至需要从头开始构建系统,或者至少需要从已知的基础上重建系统。良好的备份。
通过为用户提供不受限制的根访问权限,您可以信任该用户(包括他们可能选择执行的任何软件,甚至是像ls这样普通的东西)都没有恶意,也不会因意外而混乱。这就是root访问的本质。
通过例如sudo进行有限的 root访问会更好一些,但是您仍然必须注意不要打开任何攻击媒介。有了root用户访问权限,特权升级攻击就有许多可能的攻击媒介。
如果您不能以root用户所拥有的访问级别来信任他们,则需要非常严格的sudo配置,或者根本不通过任何方式(sudo或其他方式)完全授予有问题的用户root用户访问权限。
sudo
授予特定于root特权的应用程序的权限。这样,将不允许用户更改root密码