【运维实战】Linux 中su和sudo之间的区别以及如何配置sudo!

article/2025/7/14 0:34:54

Linux 系统相比其他操作系统具有更高的安全性,其安全机制的核心之一在于用户管理策略和权限控制--普通用户默认无权执行任何系统级操作。

若普通用户需要进行系统级变更,必须通过susudo命令提权。

1.susudo的本质区别

su 要求直接共享 root 密码,而 sudo 允许用户在不知晓 root 密码的情况下执行系统命令。

sudo 通过验证用户自身密码来委派系统权限。

2.什么是sudo

sudo是一个具有 setuid 位的 root 二进制程序,允许授权用户以 root 身份执行命令,执行时需输入用户自身密码(后接命令)。

3.谁可以执行 sudo

通过/usr/sbin/visudo 可添加/删除可以执行 sudo的用户列表。

$ sudo /usr/sbin/visudo

默认情况下,sudo列表类似以下字符串(需root权限编辑visudo文件):

root ALL=(ALL) ALL
4.授予sudo访问权限

新手系统管理员常误将root ALL=(ALL) ALL作为模板,盲目授予用户无限制权限(如下所示),这将导致严重安全隐患:

root ALL=(ALL) ALL
adam ALL=(ALL) ALL
tom ALL=(ALL) ALL
mark ALL=(ALL) ALL
5.sudo配置参数

合理的sudo配置兼具灵活性与精确性,其语法结构为:

用户名 主机名=(有效用户) 命令

以上语法分为四个部分,解释如一:

  • 用户名:sudo授权用户。

  • 主机名:该sudo权限生效的主机(适用于多主机环境)。

  • 有效用户:允许执行命令的 '有效用户',此列允许用户执行系统命令。

  • 命令:用户可以运行的命令或一组命令。

6.典型场景配置示例
场景1:授予数据库管理员mark仅在数据库服务器(mydb_server.com)的完整权限
mark mydb_server.com=(ALL) ALL
场景2:允许用户tom以非root身份执行命令(在mydb_server.com数据库上)
tom mydb_server.com=(tom) ALL
场景3:限制用户cat 在mydb_server.com数据库上仅能执行特定命令dog
cat mydb_server.com=(cat) dog
场景4:多个命令授权(10条以内)
mark mydb_server.com=(cat) /usr/bin/command1 /usr/sbin/command2...

当需要授权的命令数量过多时(例如多到无法逐一手动输入),就需要使用命令别名(Aliases)机制。

以下是可在sudo配置文件中使用的别名示例:

User_Alias ADMINS=tom,jerry,adam
user_Alias WEBMASTER=henry,mark
WEBMASTERS WEBSERVERS=(www) APACHE
Cmnd_Alias PROC=/bin/kill,/bin/killall, /usr/bin/top

可以通过在组名前添加%前缀来指定系统用户组(而非单独用户),格式如下:

%apacheadmin WEBSERVERS=(www) APACHE
场景5:免密码执行sudo(通过NOPASSWD标记)
adam ALL=(ALL) NOPASSWD: PROCS

在此配置下,用户"adam"无需输入密码即可执行"PROCS"命令别名组中的所有命令。

7.为什么选择sudo

相比susudo提供更安全的权限管控环境且配置简便,现在 Linux 发行版大多默认启用sudo作为安全实践。

添加用户至sudo组(如用户bob):

adduser bob sudo
8.最佳实践示例
8.1典型生产环境配置
# 用户别名组定义
User_Alias SYSADMINS = admin1,admin2
User_Alias DBADMINS = db1,db2
User_Alias WEBADMINS = %nginx# 命令别名组定义
Cmnd_Alias DISK_CMD = /bin/df, /bin/mount, /bin/umount
Cmnd_Alias PROCESS_CMD = /bin/kill, /usr/bin/killall
Cmnd_Alias NETWORK_CMD = /sbin/ifconfig, /usr/sbin/iptables# 权限分配
SYSADMINS ALL=(ALL) ALL
DBADMINS ALL=(DB) /usr/bin/mysql*, /usr/bin/psql
WEBADMINS WEBSERVERS=(www-data) /usr/sbin/nginx
%developers ALL=(ALL) NOPASSWD: /usr/bin/git, /usr/bin/docker
8.2企业级安全配置
# 基础安全策略
Defaults    env_reset
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults    logfile="/var/log/sudo.log"
Defaults    log_host, log_year# 角色化权限定义
User_Alias SECURITY_TEAM = sarah,john
Runas_Alias UNPRIVILEGED = nobody,www-dataCmnd_Alias FIREWALL_CMD = /usr/sbin/iptables, /usr/sbin/firewalld
Cmnd_Alias AUDIT_CMD = /usr/bin/ausearch, /usr/sbin/aureport# 精细化授权
SECURITY_TEAM ALL=(root) FIREWALL_CMD, AUDIT_CMD
%backup_operators ALL=(UNPRIVILEGED) /usr/bin/rsync
zabbix ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart zabbix-agent

定期审计:sudo -l 查看用户权限。


http://www.hkcw.cn/article/urYvPjwGNS.shtml

相关文章

基于Android的记录生活APP_springboot+vue

开发语言:Java框架:springboot AndroidJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7数据库工具:Navicat12开发软件:eclipse/myeclipse/ideaMaven包:Maven3.6 系统展示 APP登录 A…

2025年渗透测试面试题总结-匿名[校招]攻防研究员(应用安全)(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 匿名[校招]攻防研究员(应用安全) 基础部分 1. HTTP状态码 2. HTTP请求方法及作用 3. 网络分层及协议 OW…

区域未停留检测算法AI智能分析网关V4打造铁道/工厂/机场等场景应用方案

一、背景 在工业生产、公共场所管理等场景中,特定区域的人员/物体停留时间管控关乎作业效率与安全。传统监控系统仅能录像存证,无法主动分析停留行为。AI智能分析网关V4的区域未停留检测功能,依托智能算法实现实时监测与异常告警&#xff0c…

第Y5周:yolo.py文件解读

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 本次任务:将YOLOv5s网络模型中的C3模块按照下图方式修改形成C2模块,并将C2模块插入第2层与第3层之间,且跑通YOLOv5s。 任务…

无人机桥梁3D建模、巡检、检测的航线规划

无人机桥梁3D建模、巡检、检测的航线规划 无人机在3D建模、巡检和检测任务中的航线规划存在显著差异,主要体现在飞行高度、航线模式、精度要求和传感器配置等方面。以下是三者的详细对比分析: 1. 核心目标差异 任务类型主要目标典型应用场景3D建模 生成…

【FlashRAG】本地部署与demo运行(一)

FlashRAG 简介 FlashRAG 是一种高效检索增强生成(Retrieval-Augmented Generation, RAG)技术,旨在优化大规模语言模型(LLMs)的推理性能,尤其在处理长上下文或复杂查询时。其核心特点是结合了快速检索与动态…

低功耗架构突破:STM32H750 与 SD NAND (存储芯片)如何延长手环续航至 14 天

低功耗架构突破:STM32H750 与 SD NAND (存储芯片)如何延长手环续航至 14 天 卓越性能强化安全高效能效图形处理优势丰富集成特性 模拟模块实时监控保障数据完整性提升安全性与可靠性测量原理采样率相关结束语 在智能皮电手环及数据存储技术不…

MySQL之约束和表的增删查改

MySQL之约束和表的增删查改 一.数据库约束1.1数据库约束的概念1.2NOT NULL 非空约束1.3DEFAULT 默认约束1.4唯一约束1.5主键约束和自增约束1.6自增约束1.7外键约束1.8CHECK约束 二.表的增删查改2.1Create创建2.2Retrieve读取2.3Update更新2.4Delete删除和Truncate截断 一.数据库…

在线制作幼教早教行业自适应网站教程

你想知道怎么做自适应网站吗?今天就来教你在线用模板做个幼教早教行业的网站哦。 首先得了解啥是自适应网站。简单说呢,自适应网站就是能自动匹配不同终端设备的网站,像手机、平板、电脑等。那如何做幼早教自适应网站呢? 在乔拓云…

[特殊字符] 超强 Web React版 PDF 阅读器!支持分页、缩放、旋转、全屏、懒加载、缩略图!

在现代 Web 项目中,PDF 浏览是一个常见需求:从政务公文到合同协议,PDF 文件无处不在。但很多方案要么体验不佳,要么集成复杂。今天,我给大家带来一个开箱即用、功能全面的 PDF 预览组件 —— [PDFView](https://www.np…

裂缝仪在线监测装置:工程安全领域的“实时守卫者”

在基础设施运维领域,裂缝扩展是威胁建筑结构安全的核心隐患之一。传统人工巡检方式存在效率低、时效性差、数据主观性强等局限,而裂缝仪在线监测装置通过技术迭代,实现了对结构裂缝的自动化、持续性追踪,为工程安全评估提供科学依…

语音通信接通率、应答率和转化率有什么区别?

语音通信中的接通率、应答率和转化率是三个不同的关键指标,它们各自具有独特的定义和衡量标准,以下是它们之间的区别: 一、定义 1. 接通率: • 是指成功接通的电话数量占总拨打电话数量的百分比。具体来说,只要被叫响…

俄称击落千余架乌军无人机 乌称击退俄28次进攻

当地时间5月30日,俄罗斯国防部发布战报称,在过去一周里,俄军对乌境内的国防工业设施、军用机场基础设施、武器弹药储存设施等目标实施打击。俄军在苏梅、哈尔科夫、顿涅茨克等方向打退乌军多次进攻并发动攻势。俄防空部队击落乌军1439架固定翼无人机。此外,俄军控制了苏梅、…

阿富汗今年已有357人死于麻疹 大部分是儿童

据世界卫生组织报告显示,截至5月25日,阿富汗今年已记录了超过55000例麻疹疑似病例,其中已有357人死亡,死者大部分是儿童。当地医务系统专家认为,疫苗缺乏和营养不足是疾病快速传播的重要原因。目前阿富汗有1580万人吃不饱饭,大量儿童营养不良,难以抵御疾病侵袭,需要获得…

从双向奔赴到分道扬镳 “马特”组合缘何分手

当地时间5月30日,美国总统特朗普和美国企业家、政府效率部负责人埃隆马斯克在白宫举行新闻发布会。这是马斯克在政府效率部的最后一天。马斯克28日在社交媒体上说,他即将离开特朗普政府,不再继续担任“特别政府雇员”一职。这也意味着,马斯克在1月20日就任美国政府效率部负…

Form开发指南-第一弹:开发背景与基础环境

1 用户和常用工具 1.1 区分3类用户 OS用户:包括超级用户root,应用OS用户如applprod,数据库OS用户oraprod。数据库用户:包括内置管理用户sys、system,EBS用户apps,EBS各模块用户applys、gl、inv、po、ar、…

基于LBS的上门代厨APP开发全流程解析

上门做饭将会取代外卖行业成为新一轮的创业风口吗?杭州一位女士的3菜一汤88元套餐引爆社交网络,这个包含做饭、洗碗、收拾厨房的全套服务,正在重新定义"到家经济"的边界。当25岁的研究生系着围裙出现在客户厨房,当年轻姑…

Bootstrap项目 - 个人作品与成就展示网站

文章目录 前言一、项目整体概述1. 项目功能介绍1.1 导航栏1.2 首页模块1.3 关于我模块1.4 技能模块1.5 作品模块1.6 成就模块1.7 博客模块1.8 联系我模块 2. 技术选型说明 二、项目成果展示1. PC端展示1.1 首页1.2 关于我1.3 技能1.4 作品1.5 成就1.6 博客1.7 联系我 2. 移动端…

QML 滑动与翻转效果(Flickable与Flipable)

目录 引言相关阅读核心组件解析Flickable基础属性Flipable核心特性 示例解析示例1:可滑动列表(FlickableDemo)示例2:可翻转卡片(FlipableCard) 总结下载链接 引言 Qt Quick 框架提供的 Flickable 与 Flipa…

氮气吹扫电磁阀

一、氮气吹扫电磁阀的概述 氮气吹扫电磁阀是一种重要的工业自动控制设备,用于对工业设备中出现的杂质和沉淀物进行清理,以保证生产线的畅通和生产效率的稳定。其作用是在需要吹扫清洗的工业设备中,通过控制气源的气压,打开电磁阀…