Linux使用Sudo委派权限

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

这并不是说我不能亲自运行这个项目,而是由于各种原因,包括旅行和生病,我并不总是在那里。即使在我在场的时候,作为“懒惰的系统管理员”,我也喜欢让别人为我做我的工作。因此,我编写脚本来自动化这些任务,并使用sudo来指定几个用户来运行这些脚本。许多Linux命令要求用户是root用户才能运行。这可以保护系统免受意外损坏,比如我自己的愚蠢和恶意用户的故意破坏。

做你做得很好的事

sudo程序是一个方便的工具,它允许我作为一个具有根访问权限的系统管理员,将所有或几个管理任务的责任委托给计算机的其他用户。它允许我在不损害根密码的情况下执行该委托,从而在主机上保持高度的安全性。

例如,让我们假设我给了常规用户“ruser”对我的Bash程序“myprog”的访问权限,它必须作为root运行才能执行其部分功能。首先,用户使用自己的密码以ruser身份登录,然后使用以下命令运行myprog。

 myprog  

sudo程序检查/etc/sudoers文件并验证ruser是否允许运行myprog。如果是这样的话,sudo请求用户输入他们的密码-而不是根密码。在ruser输入密码后,程序将运行。此外,sudo用程序运行的日期和时间、完整的命令以及运行它的用户记录对myprog的访问事实。此数据已登录。/var/log/security.

我发现让sudo运行每个命令的日志来进行培训是很有帮助的。我能看出谁做了什么,他们是否正确地输入了命令。

我这样做是为了授权我自己和另一个用户运行一个程序;然而,sudo可以用来做更多的事情。它允许sysadmin将管理网络功能或特定服务的权限委托给一个人或一组受信任的用户。它允许在保护根密码安全性的同时委派这些函数。

配置sudoers文件

作为一个系统管理员,我可以使用/etc/sudoers文件以允许用户或用户组访问单个命令、定义的命令组或所有命令。这种灵活性是使用sudo进行委托的力量和简单性的关键。

一开始我发现sudoers文件非常混乱,所以下面我从我使用它的主机复制并解构了整个sudoers文件。希望当你通过这个分析的时候,它对你来说不会很模糊。顺便说一句,我发现基于RedHat的发行版中的默认配置文件往往有大量的注释和示例来提供指导,这使事情变得更简单,减少了在线搜索的需求。

不要使用标准编辑器修改sudoers文件。使用visudo命令,因为它的设计目的是在保存文件并退出编辑器后立即启用任何更改。除了Vi之外,还可以使用与visudo.

让我们从一开始就用几种别名来分析这个文件。

宿主别名

主机别名部分用于创建可用于提供访问的命令或命令别名的主机组。其基本思想是为组织中的所有主机维护这个单一文件,并将其复制到/etc每一个主人。因此,可以将某些主机(如服务器)配置为一个组,使某些用户能够访问特定的命令,例如启动和停止httpd、DNS和网络等服务的能力;挂载文件系统的能力等等。