在Linux系统中应用su和sudo

简介:

原文发表于《网络安全和信息化》2017年第1期,现转发到博客。


Linux系统对用户的权限定义比较严格,root用户在系统中具有至高无上的权限,而普通用户的权限则受到严格限制。在实际使用中,管理员一般都是先以普通用户的身份登录,然后当需要时再利用su命令切换到root用户身份。对于普通用户,如果需要执行更高权限的命令,则可以由管理员通过sudo命令对其授权。本文将介绍susudo命令在Linux运维工作中的一些常见用法。

1.    限制能够使用su命令的用户

 默认情况下,任何用户只要知道了root用户的密码,都可以执行su命令切换到root用户。但是我们可能并不希望所有用户都能切换到root身份,而是只想指定某个用户可以切换,比如只允许zhangsan用户使用su命令切换身份。

要限制使用su命令的用户,需要进行两个方面的设置。

首先需要启用pam_wheel认证模块,


[root@server ~]# vim /etc/pam.d/su       //将文件中下面一行前的#去掉

auth            required        pam_wheel.so use_uid


这样凡是执行“su – root”命令的用户都将受到限制,只有wheel组中的成员才有权限执行该命令。

因而下面需要做的就是将zhangsan加入到wheel组中。


[root@server ~]# gpasswd -a zhangsan wheel   

[root@server ~]# id zhangsan

uid=501(zhangsan) gid=501(zhangsan) groups=501(zhangsan),10(wheel)


这样当使用一个不属于wheel组成员的账号切换到root时,系统便会拒绝。

例如,使用lisi切换到root,即使输入了正确的root用户密码,也会提示“密码不正确”。


[lisi@localhost ~]$ su - root

口令:

su: 密码不正确


2.    利用sudo命令对普通用户授权

利用su命令切换到root身份,必须要知道root用户的密码。这对于管理员没什么问题,但如果将密码透露给一个普通用户,则很明显不利于系统安全管理,因而对于普通用户更常使用的是sudo命令。

sudo命令的作用主要在于能够允许经过授权的个别普通用户以root权限执行一些授权使用的管理命令。

比如以普通用户zhangsan的身份创建用户,系统会提示没有权限:


[zhangsan@localhost ~]$ useradd test

-bash: /usr/sbin/useradd: 权限不够


下面让zhangsan使用sudo命令以root权限去执行命令。注意,普通用户使用sudo执行命令时会要求提供自己的密码进行验证。


[zhangsan@localhost ~]$ sudo useradd test

[sudo] password for zhangsan:

zhangsan is not in the sudoers file.    This incident will be reported.


zhangsan使用sudo命令仍然无法创建用户,这是因为在Linux中只有被授权的用户才能执行sudo命令,而且使用sudo也只能执行那些被授权过的命令。

所以要使用sudo命令首先必须要经过管理员的授权设置,需要修改配置文件“/etc/sudoers”,sudoers文件的基本配置格式如图1所示。

    wKioL1l9gViA7Xv6AAB9WjT6wIk374.jpg-wh_50

 1 sudoers文件的配置格式

例如授权普通用户zhangsan可以通过sudo方式执行所有的命令:


[root@localhost ~]# vim /etc/sudoers     //在文件末尾增加下列内容

zhangsan    ALL=ALL


授权普通用户lisi可以执行/sbin//usr/sbin/目录中的所有命令:


lisi    ALL=/sbin/*,/usr/sbin/*


注意,“/etc/sudoers”是一个只读文件,修改完成保存退出时要使用“wq!”命令。

如果希望用户只能执行部分命令,可以在“/etc/sudoers”中指定用户所能执行的命令的文件路径,命令的文件路径可以通过which命令查找。

例如:授权zhangsan只能执行useradduserdelpasswd命令。


zhangsan    ALL=/usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd


用户每次在执行sudo命令时都要输入自己的密码,为了省去普通用户执行sudo命令时需要输入密码的麻烦,可以在“/etc/sudoers”进行如下设置:


zhangsan    ALL=NOPASSWD:/usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd


zhangsan被授权执行passwd命令,为了防止zhangsan修改root用户的密码,我们可以在/etc/suoders中加入“! /usr/bin/passwd root”:


zhangsan    ALL=NOPASSWD:/usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd,! /usr/bin/passwd root


除了针对用户授权之外,我们也可以对用户组授权,这样用户组内的所有成员用户就都具有了执行sudo命令的权限。如果授权的对象是用户组,需要在组名的前面加上“%”。

例如:授权managers组内的成员用户可以添加、删除用户账号。


%managers    ALL=NOPASSWD:/usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd,! /usr/bin/passwd root


最后我们以zhangsan的身份登录系统,执行“sudo –l”命令可以查看当前用户被授权执行的命令,如图2所示。

wKioL1l9gbKxRC1LAADPl0XuQts125.jpg-wh_50

 2查看用户被授权执行的命令

进行命令测试,发现zhangsan可以更改普通用户lisi的密码,即使密码不符合安全规则也同样可以设置成功,这证明zhangsan是在以root用户的权限执行passwd命令。而当zhangsan试图更改root用户的密码时,系统则提示没有权限。测试结果如图3所示。

wKiom1l9gc3B8rfZAABsTNQY1GI768.jpg-wh_50

 3命令测试结果\


本文转自 yttitan 51CTO博客,原文链接:http://blog.51cto.com/yttitan/1952091


相关文章
|
6天前
|
Ubuntu 安全 Linux
《Linux 简易速速上手小册》第1章: Linux 系统基础(2024 最新版)
《Linux 简易速速上手小册》第1章: Linux 系统基础(2024 最新版)
38 1
|
13天前
|
资源调度 JavaScript 搜索推荐
Linux系统之部署envlinks极简个人导航页
【4月更文挑战第11天】Linux系统之部署envlinks极简个人导航页
53 2
|
16天前
|
缓存 Linux 测试技术
安装【银河麒麟V10】linux系统--并挂载镜像
安装【银河麒麟V10】linux系统--并挂载镜像
81 0
|
16天前
|
监控 Unix Linux
Linux操作系统调优相关工具(四)查看Network运行状态 和系统整体运行状态
Linux操作系统调优相关工具(四)查看Network运行状态 和系统整体运行状态
30 0
|
14天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
38 6
|
1天前
|
Linux 数据安全/隐私保护
Linux系统忘记密码的三种解决办法
这篇博客介绍了三种在Linux忘记密码时重置登录密码的方法:1) 使用恢复模式,通过控制台界面以管理员权限更改密码;2) 利用Linux Live CD/USB启动,挂载硬盘分区并使用终端更改密码;3) 进入单用户模式,自动以管理员身份登录后重置密码。每个方法都提供了详细步骤,提醒用户在操作前备份重要数据。
|
1天前
|
JSON Unix Linux
Linux系统之jq工具的基本使用
Linux系统之jq工具的基本使用
12 1
|
1天前
|
数据采集 监控 安全
linux系统被×××后处理经历
linux系统被×××后处理经历
|
1天前
|
Ubuntu Linux
Linux(Ubuntu)系统临时IP以及静态IP配置(关闭、启动网卡等操作)
请注意,以上步骤是在临时基础上进行配置的。如果要永久保存静态IP地址,通常还需要修改 `/etc/network/interfaces`文件,以便在系统重启后保持配置。同时,确保备份相关配置文件以防止出现问题。
7 1
|
2天前
|
监控 安全 Linux
Linux系统之安装ServerBee服务器监控工具
【4月更文挑战第22天】Linux系统之安装ServerBee服务器监控工具
39 2