合理运用su和sudo命令以保证系统用户安全

本文涉及的产品
运维安全中心(堡垒机),免费版 6个月
运维安全中心(堡垒机),企业双擎版 50资产 7天
简介:

Linux系统为我们提供了su、sudo两种用户权限管理机制,其中su主要是用来切换用户,而sudo用户来提升执行权限。下面分别进行详细讲解。

一、su命令——切换用户

使用su命令,可以切换为指定的另一个用户,从而具有该用户的所有权限。当然,切换时需要目标用户的密码进行验证(从root切换为其他用户时列外)

例如:当普通用户切换root身份时,需要输入root的密码。

163534235.jpg

上述命令操作中,选项“-”等同于“--login”或“-l”,表示切换后进入目标用户的登录shell环境,若缺少此选项则仅切换身份,不切换用户环境。

默认情况下,任何用户都允许使用su命令,从而有机会反复尝试其他用户的登录密码,带来安全风险。为了加强su命令的使用控制,可以借助于pam_wheel认证模块,只允许极个别用户使用su命令进行切换。实现过程如下:

1、将需要使用su命令的用户加入wheel组

164222174.jpg

2、修改配置文件/etc/pam.d/su、启用pam_sheel认证。

vim /etc/pam.d/su

auth    required    pam_wheel.so use_uid

......//省略部分内容

3、此时user用户就可以使用su命令了,而其他没有加入wheel组的用户就不可以使用su命令。


二、sudo命令——提升权限

使用sudo命令可以使某些用户具有一些特殊的权限,而这个用户不需要知道管理员的密码,不过,这需要有管理员预先进行授权,指定允许那些用户以管理员的身份来执行那些命令。

sudo命令的配置文件在/etc/sudoers中,需要向这个配置文件中添加指定用户的指定权限,此用户才能执行这些权限,可以使用visudo命令或vim等命令进行编辑。(注意:使用vim进行编辑时需要加!强制保存)

配置文件/etc/sudoers中,授权记录的基本配置格式如下所示。

user    MACHING=COMMANDS

主要包括用户、主机、命令三个部分,即那些用户从那些主机执行那些命令。

用户(user):授权的用户名,或采用“%组名”的形式表示一个组。

主机(MACHING):使用此配置文件的主机名,一般设为localhost。

命令(COMMABDS):允许授权的用户通过sudo方式执行的命令,需要填写命令程序的完整路径,多个命令之间使用逗号“,”隔开。

1、修改/etc/sudores配置文件给指定用户授权

列如:授权用户user具有执行ifconfig命令的权限。

[root@lcoalhost /]#visudo

......//省略部分内容

user    localhost=/sbin/ifconfig

2、使用别名定义的方式给多个用户授权

当使用相同授权的用户较多时,或者授权的命令较多时,可以采用集中定义别名。用户、主机、命令部分都可以定义别名(别名必须大写),分别通过关键字User_Alias、Host_Alias、Cmnd_Alias来进行设置。

如下:设置允许用户user1、user2、user3在主机localhost执行rpm、yum等命令

[root@lcoalhost /]#visudo

......//省略部分内容

User_Alias    USERS=user1,user2,user3

Cmnd_Alias    PKGTOOLS=/bin/rpm,/usr/bin/yum

USERS        localhost=PKGTOOLS

在给用户授权时,命令部分可以使用通配符“*”和取反符号“!”,当需要授权某个目录下的所有命令,取消其中个别命令时特别有用。

3、为sudo启用日志记录功能

默认情况下,通过sudo方式执行的操作并不记录。若要启用sudo日志记录功能,应在/etc/sudores文件中增加“Defaults logfile”选项。

如下:添加sudo日志记录功能

[root@lcoalhost /]#visudo

......//省略部分内容

Defaults logfile=“/var/log/sudo”

4、用户通过sudo命令执行授权命令

对于已获得授权的用户,通过sudo方式执行特权命令时,只需要将正常的命令行作为sudo命令的参数即可。如下:user用户执行ifconfig命令

172203577.jpg

首次执行sudo命令需要输入当前用户的密码,有效期是5分钟,也就是输入密码后5分钟内没有使用sudo密码,那么下次执行sudo命令时又会提示输入密码。

若不希望用户执行sudo命令时输入密码,可以修改配置文件/etc/sudores如下:

[root@lcoalhost /]#visudo

......//省略部分内容

user    localhost=NOPASSWD:/sbin/ifconfig

此时在使用user用户执行ifconfig命令时就不在提示输入密码了。

若要查看当前用户以获得哪些sudo授权命令时,可是执行“sudo -l”命令。


本文转自yun5277 51CTO博客,原文链接:http://blog.51cto.com/dengqi/1260039,如需转载请自行联系原作者

相关文章
|
Linux
centos7 升级qemu-kvm版本
centos7 手动升级qemu-kvm版本
2678 0
|
前端开发 JavaScript API
使用 JavaScript 检测系统主题色
使用 JavaScript 检测系统主题色
640 0
|
5月前
|
前端开发 Java 关系型数据库
基于Java+Springboot+Vue开发的鲜花商城管理系统源码+运行
基于Java+Springboot+Vue开发的鲜花商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的鲜花商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。技术学习共同进步
414 7
|
7月前
|
人工智能 供应链 BI
从“被动响应”到“主动决策” | 智能小Q如何助力快消品行业供应链数智化升级
编者按:在大模型技术重构数据智能分析应用的背景下,Quick BI 推出的问数助手——智能小Q 凭借其革新功能体验,自面世以来持续获得市场青睐。历经一年多的商业化验证,已成熟融入金融、零售、高端制造、生物医药等领域的行业标杆企业,在生产管控、运营决策等场景中实现数据分析提效。本文将以某头部快消企业供应链场景应用为研究样例,深度解析智能小Q如何帮助企业提升供应链智能化管理水平,为更多行业数智化建设提供可行性路径参考。 作为中国快消品类行业的领军者,企业面对快速变化的市场环境,积极拥抱创新和数字化转型,利用大数据及人工智能等前沿技术,洞察消费者需求,优化生产流程,提高运营效率,推动企业可持续发展。
|
12月前
|
存储 Java 关系型数据库
[LDAP: error code 34 - invalid DN]
`亲测可用,之前搜索了很多博客,啥样的都有,就是不介绍报错以及配置用处,根本不懂照抄那些配置是干啥的,稀里糊涂的按照博客搭完也跑不起来,因此记录这个。` `项目背景`:公司项目当前采用http协议+shiro+mysql的登录认证方式,而现在想支持ldap协议认证登录然后能够访问自己公司的项目网站。 `举例说明`:假设我们公司有自己的门户网站,现在我们收购了一家公司,他们数据库采用ldap存储用户数据,那么为了他们账户能登陆我们公司项目所以需要集成,而不是再把他们的账户重新在mysql再创建一遍,万一人家有1W个账户呢,不累死了且也不现实啊。
196 13
[LDAP: error code 34 - invalid DN]
|
11月前
|
安全 物联网 大数据
基于开元鸿蒙(OpenHarmony)的【智能药房与药品管理综合应用系统
基于开元鸿蒙(OpenHarmony)的【智能药房与药品管理综合应用系统
310 7
|
JavaScript 关系型数据库 数据库
PostgreSQL支持哪些编程语言?
【8月更文挑战第5天】PostgreSQL支持哪些编程语言?
483 8
|
11月前
|
机器学习/深度学习 搜索推荐 语音技术
进阶教程:优化语音克隆效果与提升TTS自然度
【10月更文挑战第20天】语音克隆技术和基于文本到语音(Text-to-Speech, TTS)系统的应用已经在诸多领域展现出了巨大的潜力,从智能助手到个性化客服,再到教育和娱乐产业。作为一名在语音技术领域有着多年实践经验的研发人员,我希望通过本文分享一些我个人在优化语音克隆效果与提升TTS自然度方面的经验和见解,帮助那些已经具备了一定基础并希望进一步提升自身技能的同行们。
558 0
|
Java 开发者
别再傻傻分不清!Java if-else与switch的性能对比全解析!
别再傻傻分不清!Java if-else与switch的性能对比全解析!
350 1

热门文章

最新文章