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

2024-08-22 19:38

本文主要是介绍合理运用su和sudo命令以保证系统用户安全,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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”命令。




本文出自 “邓奇的Blog” 博客,请务必保留此出处http://dengqi.blog.51cto.com/5685776/1260039

这篇关于合理运用su和sudo命令以保证系统用户安全的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1097206

相关文章

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

java中ssh2执行多条命令的四种方法

《java中ssh2执行多条命令的四种方法》本文主要介绍了java中ssh2执行多条命令的四种方法,包括分号分隔、管道分隔、EOF块、脚本调用,可确保环境配置生效,提升操作效率,具有一定的参考价值,感... 目录1 使用分号隔开2 使用管道符号隔开3 使用写EOF的方式4 使用脚本的方式大家平时有没有遇到自

Spring Boot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)

《SpringBoot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)》本文将以一个实际案例(用户管理系统)为例,详细解析SpringBoot中Co... 目录引言:为什么学习Spring Boot分层架构?第一部分:Spring Boot的整体架构1.1

Linux命令rm如何删除名字以“-”开头的文件

《Linux命令rm如何删除名字以“-”开头的文件》Linux中,命令的解析机制非常灵活,它会根据命令的开头字符来判断是否需要执行命令选项,对于文件操作命令(如rm、ls等),系统默认会将命令开头的某... 目录先搞懂:为啥“-”开头的文件删不掉?两种超简单的删除方法(小白也能学会)方法1:用“--”分隔命

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

Java JUC并发集合详解之线程安全容器完全攻略

《JavaJUC并发集合详解之线程安全容器完全攻略》Java通过java.util.concurrent(JUC)包提供了一整套线程安全的并发容器,它们不仅是简单的同步包装,更是基于精妙并发算法构建... 目录一、为什么需要JUC并发集合?二、核心并发集合分类与详解三、选型指南:如何选择合适的并发容器?在多

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java