引言: Linux系统对用户的权限定义比较严格,root用户具有至高无上的权限。管理员一般先以普通用户身份登录,需要时再利用su命令切换到root用户身份。普通用户如果需要更高权限,则可以由管理员通过sudo命令对其授权。本文将介绍su和sudo命令在Linux运维工作中的一些常见用法
Linux系统对用户的权限定义比较严格,root用户在系统中具有至高无上的权限,而普通用户的权限则受到严格限制。在实际使用中,管理员一般都是先以普通用户的身份登录,然后当需要时再利用su命令切换到root用户身份。对于普通用户,如果需要执行更高权限的命令,则可以由管理员通过sudo命令对其授权。本文将介绍su和sudo命令在Linux运维工作中的一些常见用法。
默认情况下,任何用户只要知道了root用户的密码,都可以执行su命令切换到root用户。但是我们并不希望所有用户都能切换到root身份,而是只想指定某个用户可以切换,比如只允许zhangsan用户使用su命令切换身份。
要限制使用su命令的用户,需要进行两个方面的设置。
首先需要启用pam_wheel认证模块:
这样,凡是执行“su -root”命令的用户都将受到限制,只有wheel组中的成员才有权限执行该命令。
因而下面需要做的就是将zhangsan加入到wheel组中:
这样,当使用一个不属于wheel组成员的账号切换到root时,系统便会拒绝。
例如,使用lisi切换到root,即使输入了正确的root用户密码,也会提示“密码不正确”:
口令:
su: 密码不正确
利用su命令切换到root身份,必须要知道root用户的密码。这对于管理员没什么问题,但如果将密码透露给一个普通用户,则很明显不利于系统安全管理,因而对于普通用户更常使用的是sudo命令。
sudo命令的作用主要在于能够允许经过授权的个别普通用户以root权限执行一些授权使用的管理命令。
比如以普通用户zhangsan的身份创建用户,系统会提示没有权限:
下面让zhangsan使用sudo命令以root权限去执行命令。注意,普通用户使用sudo执行命令时,会要求提供自己的密码进行验证。
zhangsan使用sudo命令仍然无法创建用户,这是因为在Linux中只有被授权的用户才能执行sudo命令,而且使用sudo也只能执行那些被授权过的命令。
所以,要使用sudo命令,首先必须要经过管理员的授权设置,需要修改配置文件“/etc/sudoers”,sudoers文件的基本配置格式如图1所示。
图 1 sudoers文件的配置格式
例如授权普通用户zhangsan可以通过sudo方式执行所有的命令:
授权普通用户lisi可以执行/sbin/和/usr/sbin/目录中的所有命令:
注 意,“/etc/sudoers”是 一个只读文件,修改完成保存退出时,要使用“wq!”命令。
如果希望用户只能执行部分命令,可以在“/etc/sudoers”中指定用户所能执行的命令的文件路径,命令的文件路径可以通过which命令查找。
例如:授权zhangsan只能执行 useradd、userdel和passwd命令:
用户每次在执行sudo命令时,都要输入自己的密码,为了省去普通用户执行sudo命令时需要输入密码的麻烦,可以在“/etc/sudoers”进行如下设置:
除了针对用户授权之外,我们也可以对用户组授权,这样用户组内的所有成员用户就都具有了执行sudo命令的权限。如果授权的对象是用户组,需要在组名的前面加上“%”。
例如:授权managers组内的成员用户可以添加、删除用户账号:
% managersALL=NOPASSWD:/usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd,! /usr/bin/passwd
图2 查看用户被授权执行的命令
图3 命令测试结果
最后,我们以zhangsan的身份登录系统,执行“sudo-l”命令可以查看当前用户被授权执行的命令(如图2)。进行命令测试,发现zhangsan可以更改普通用户lisi的密码,即使密码不符合安全规则也同样可以设置成功,这证明zhangsan是在以root用户的权限执行passwd命令。而当zhangsan试图更改root用户的密码时,系统则提示没有权限。测试结果如图3所示。