9.8 受限的特权:sudo

本文介绍了如何使用sudo程序来管理用户的特权操作,避免直接使用root权限带来的风险。通过配置sudoers文件,管理员可以详细设定特定用户能执行的命令及执行方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

9.8  受限的特权:sudo

使用su命令提升权限已经让系统安全得多了,但root权限的不可分割让事情变得有些棘手。如果用户john想要运行某个特权命令,那他除了向管理员索取root口令外别无他法。仅仅为了一个特权操作而赋予用户控制系统的完整权限,这种做法听起来有点可笑,但这确实存在于某些不规范的管理环境中。

最常见的解决方法是使用sudo程序。这个程序接受命令行作为参数,并以root身份(或者也可以是其他用户)执行它 。在执行命令之前,sudo会首先要求用户输入自己的口令,口令只需要输入一次。出于安全性的考虑,如果用户在一段时间内(默认是5分钟)没有再次使用sudo,那么此后必须再次输入口令。这样的设置避免了特权用户不经意间将自己的终端留给那些并不受到欢迎的人。

管理员通过配置/etc/sudoers指定用户可以执行的特权命令,下面是Ubuntusudoers文件的默认设置。

 

# User privilege specification

root    ALL=(ALL) ALL

 

# Members of the admin group may gain root privileges

%admin ALL=(ALL) ALL

 

按照惯例,“#”开头的行是注释行。以“root    ALL=(ALL) ALL”这句话为例,这段配置指定root用户可以使用sudo在任何机器上(第1ALL)以任何用户身份(第2ALL)执行任何命令(第3ALL)。最后一行用“%admin”替代了所有属于admin组的用户。在Ubuntu中,安装时创建的那个用户会自动被加入admin组。

总体来说,sudoer中的每一行权限说明包含了下面这些内容。

q      该权限适用的用户;

q      这一行配置在哪些主机上适用;

q      该用户可以运行的命令;

q      该命令应该以哪个用户身份执行。

下面来看一段稍复杂一些的配置。这段配置涉及3个用户,并为他们设置了不同的       权限。

 

Host_Alias    STATION = web1, web2, databank

 

Cmnd_Alias   DUMP = /sbin/dump, /sbin/restore

 

lewis         STATION = ALL

mike         ALL = (ALL) ALL

john          ALL = (operator) DUMP

 

这段配置的开头两行使用关键字Host_AliasCmnd_Alias分别定义了主机组和命令组。后面就可以用STATION替代主机web1web2databank;用DUMP替代命令/sbin/dump/sbin/restore。这种设置可以让配置文件更清晰,同时也更容易维护。

%注意:sudoers中的命令应该使用绝对路径来指定,这样可以防止一些人以root身份执行自己的脚本程序。

接下来的3行配置了用户的权限。第1行是关于用户lewis的。lewis可以在STATION组的计算机上(web1web2databank)执行任何命令。由于在代表命令的ALL之前没有使用小括号“( )”指定用户,因此lewis将以root身份执行这些命令。

2行是关于用户mike的。mike可以在所有的计算机上运行任何命令。由于小括号中的用户列表使用了关键字ALL,因此mike可以用sudo以任何用户身份执行命令。可以使用带-u选项的sudo命令改变用户身份。例如mike可以这样以用户peter的身份建立文件。

 

$ sudo -u peter touch new_file

最后一行是关于用户john的。john可以在所有主机上执行/sbin/dump/sbin/restore这两个命令——但必须以operator的身份。为此,john必须像这样使用dump命令。

 

$ sudo -u operator /sbin/dump backup /dev/sdb1

 

修改sudoers文件应该使用visudo命令。这个命令依次执行下面这些操作。

1)检查以确保没有其他人正在编辑这个文件。

2)调用一个编辑器编辑该文件。

3)验证并确保编辑后的文件没有语法错误。

4)安装使sudoers文件生效。

现在看起来sudo的确要比su灵活和有效得多。但没有什么解决方案是十全十美的。使用sudo实际上增加了系统中特权用户的数量,如果其中一个用户的口令被人破解了,那么整个系统就面临威胁。保证每个拥有特权的用户保管好自己的口令显然比自己保管一个root口令困难得多——尽管除此之外并没有什么好办法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值