Linux使用Sudo委派权限

2019-01-16 21:13:52于海丽

默认sudoers文件,修改为粗体。

用户别名

用户别名配置允许根将用户排序为别名组,以便整个组能够访问特定的根功能。这是我添加了一行的部分。User_Alias AUDIO = dboth, ruser,它定义了别名音频,并为该别名分配了两个用户。

如sudoers文件中所述,可以简单地使用/etc/groups文件而不是别名。如果您已经在其中定义了一个满足您需要的组,如“audio”,请使用该组名,前面是%这样的标志:%audio在为sudoers文件后面的组分配将可用的命令时。

命令别名

在sudoers文件的下面是一个命令别名部分。这些别名是相关命令的列表,例如安装更新或新的RPM包所需的网络命令或命令。这些别名允许sysadmin轻松地允许访问命令组。

本节中已经设置了许多别名,这些别名可以方便地将访问委托给特定类型的命令。

环境缺省

下一节将设置一些默认环境变量。本节中最有趣的项目是!visiblepw行,如果用户环境设置为显示密码,则阻止sudo运行。这是一种不应被推翻的安全防范措施。

指挥部分

命令部分是sudoers文件的主要部分。通过在这里添加足够的条目,您需要做的每一件事都可以在没有所有别名的情况下完成。化名只会让事情变得简单多了。

本节使用您已经定义的别名告诉sudo谁可以在哪个主机上做什么。当您理解本节中的语法时,这些示例是不言自明的。让我们看看我们在命令部分中找到的语法。

ruser =ALL ALL

这意味着ruser可以像任何用户一样在任何主机上运行任何程序。

这是我们的用户,ruser的通用条目。第一ALL在行中,指示此规则适用于所有主机。第二ALL允许ruser像其他用户一样运行命令。默认情况下,命令以根用户的身份运行,但ruser可以在sudo命令行上指定程序以其他用户的身份运行。最后一次ALL意味着ruser可以不受限制地运行所有命令。这将有效地使ruser根。

注意,根有一个条目,如下所示。这使得根用户可以对所有主机上的所有命令进行全方位的访问。

root =ALL ALL

这意味着root可以任何用户的身份在任何主机上运行任何程序。

为了尝试这一点,我注释掉了行,并作为根用户,尝试在没有sudo的情况下运行chown。那确实奏效了-真让我吃惊。然后我用sudo chown这个消息失败了,“根不在sudoers文件中,这个事件将被报告。”这意味着root可以root的身份运行所有东西,但在使用sudo命令时则不能运行。这将防止root用户以其他用户的身份通过sudo命令,但是root有很多方法可以绕过这个限制。

下面的代码是我为控制对myprog的访问而添加的代码。它指定在音频组中列出的用户,如在sudoers文件顶部定义的那样,只能访问一个主机上的一个程序myprog,即guest 1。