当前位置: 首页 > news >正文

RefuseManualStart/Stop增强Linux系统安全性?详解systemd单元保护机制

一、引子:一个“手滑”引发的血案

某天凌晨,运维工程师小张在维护生产服务器时,误输入了 systemctl start reboot.target,导致整台服务器瞬间重启,线上服务中断30分钟,直接损失数十万元。事后排查发现,这台服务器并未对关键操作做权限隔离。

问题核心:如何防止类似rebootpoweroff等危险命令被误执行?答案就藏在systemd的 RefuseManualStartRefuseManualStop参数中。


二、RefuseManualStart/Stop 是什么?

1. 参数定义

  • RefuseManualStart=yes
    禁止用户手动启动该单元(如systemctl start unit.service

  • RefuseManualStop=yes
    禁止用户手动停止该单元(如systemctl stop unit.service

2. 设计初衷

这两个参数是systemd的安全防护机制,用于限制对关键系统单元(如reboot.target)的直接操作,确保系统状态变更只能通过预定义的依赖链触发。


三、配置实战:给危险操作上锁

案例1:禁用直接重启系统

# 查看reboot.target默认配置
$ systemctl cat reboot.target

在 /etc/systemd/system/reboot.target.d/refuse.conf 中添加:

[Unit]
RefuseManualStart=yes
RefuseManualStop=yes

效果验证

$ sudo systemctl start reboot.target
Failed to start reboot.target: Operation refused, unit reboot.target may be requested by dependency only.

案例2:保护关键服务(如数据库)

保护MySQL服务不被随意停止:

# 创建覆盖配置文件
$ sudo systemctl edit mysql.service# 添加以下内容
[Unit]
RefuseManualStop=yes

此时尝试停止服务

$ sudo systemctl stop mysql
Failed to stop mysql.service: Operation refused, unit mysql.service may be stopped by dependency only.

四、参数原理深度解析

1. 依赖关系优先级

当单元被标记为RefuseManualStart=yes时,它只能通过以下方式启动

  • 被其他单元列为RequiresWants依赖
  • 由定时器(timer)触发
  • 系统状态变更(如切换到特定target)

2. 与权限控制的区别

控制方式作用层级生效场景
RefuseManualStartsystemd单元级阻止systemctl start/stop
Sudo权限用户命令级阻止低权限用户执行命令
文件权限文件系统级阻止所有用户执行二进制文件

五、应用场景:何时该使用这些参数?

1. 生产服务器保护

  • 禁止随意重启:对reboot.targetpoweroff.target启用
  • 保护核心服务:如数据库、负载均衡器

2. 多用户环境管控

  • 限制普通用户通过systemctl操作敏感服务

3. 防止自动化脚本误操作

  • 确保脚本无法直接调用危险命令

六、注意事项与调试技巧

1. 常见问题排查

  • 单元无法自动启动?
    检查依赖链是否完整(使用systemctl list-dependencies

  • 配置未生效?
    执行systemctl daemon-reload重载配置

2. 紧急恢复方法

若误锁关键服务,可通过覆盖配置恢复:

$ sudo systemctl edit SERVICE_NAME
# 删除或注释RefuseManualStart/Stop行

七、扩展:与其他安全机制的联动

1. 结合Sudoers限制

/etc/sudoers中禁止特定命令:

User_Alias  RESTRICTED_USERS = alice, bob
RESTRICTED_USERS ALL = ALL, !/bin/systemctl start reboot.target

2. 使用Polkit细化策略

通过Polkit规则限制图形界面操作:

<!-- 创建 /etc/polkit-1/rules.d/90-refuse-reboot.rules -->
polkit.addRule(function(action, subject) {if (action.id == "org.freedesktop.login1.reboot") {return subject.user == "root" ? polkit.Result.YES : polkit.Result.NO;}
});

八、总结

通过 RefuseManualStart 和 RefuseManualStop,我们实现了对系统关键操作的“双保险”防护。这种机制的优势在于:

  1. 精准控制:针对单个单元设置,不影响其他服务
  2. 防御纵深:与文件权限、Sudo策略形成多层防护
  3. 透明可控:依赖systemd原生功能,无需额外工具

最后提醒:任何安全措施都需要在测试环境充分验证后再部署到生产环境!


附录:本文所有配置已在CentOS 8 / systemd 239环境中验证,理论适用于所有主流Linux发行版。如有疑问,欢迎在评论区留言讨论!

相关文章:

RefuseManualStart/Stop增强Linux系统安全性?详解systemd单元保护机制

一、引子&#xff1a;一个“手滑”引发的血案 某天凌晨&#xff0c;运维工程师小张在维护生产服务器时&#xff0c;误输入了 systemctl start reboot.target&#xff0c;导致整台服务器瞬间重启&#xff0c;线上服务中断30分钟&#xff0c;直接损失数十万元。事后排查发现&…...

国产编辑器EverEdit - 超级丰富的标签样式设置!

1 设置-高级-标签 1.1 设置说明 选择主菜单工具 -> 设置 -> 常规&#xff0c;在弹出的选项窗口中选择标签分类&#xff0c;如下图所示&#xff1a; 1.1.1 多文档标签样式 默认 平坦 渐变填充 1.1.2 停靠窗格标签样式 默认 平坦 渐变填充 1.1.3 激活Tab的…...

装饰器模式:灵活扩展对象功能的利器

一、从咖啡加料说起&#xff1a;什么是装饰器模式&#xff1f; 假设您走进咖啡馆点单&#xff1a; 基础款&#xff1a;美式咖啡&#xff08;15元&#xff09;加料需求&#xff1a;加牛奶&#xff08;3元&#xff09;、加焦糖&#xff08;5元&#xff09;、加奶油&#xff08;…...

# [Linux] [Anaconda]解决在 WSL Ubuntu 中安装 Anaconda 报错问题

在 Windows 10 中安装了 WSL&#xff08;Windows Subsystem for Linux&#xff09;并使用 Ubuntu 后&#xff0c;你可能会下载 Anaconda 的 Linux 版本进行安装。但在安装过程中&#xff0c;可能会遇到 tar (child): bzip2: Cannot exec: No such file or directory 这样的错误…...

【回溯】216. 组合总和 III

题目 216. 组合总和 III 思路 不知道for有几层时&#xff0c;使用回溯&#xff0c;比上一题多了一个条件&#xff0c;组合需要和为n。 代码 class Solution { private:vector<vector<int>>result;vector<int>path;void backtracking(int target,int k,i…...

AI编程工具-(四)

250304今天用【通义灵码】做了下简单的分析建模工作。不够丝滑&#xff0c;但是在数据预处理方面还是有用。 目录 准备工作一分析工作建模结论 这个数据集是网上随手找的时许指标数据&#xff0c;然后分析时序指标A和B关联关系。 准备工作一 问大模型&#xff0c;这个场景有哪…...

一种事件驱动的设计模式-Reactor 模型

Reactor 模型 是一种事件驱动的设计模式&#xff0c;主要用于处理高并发的 I/O 操作&#xff08;如网络请求、文件读写等&#xff09;。其核心思想是通过事件分发机制&#xff0c;将 I/O 事件的监听和处理解耦&#xff0c;从而高效管理大量并发连接&#xff0c;避免传统多线程模…...

AI-Ollama本地大语言模型运行框架与Ollama javascript接入

1.Ollama Ollama 是一个开源的大型语言模型&#xff08;LLM&#xff09;平台&#xff0c;旨在让用户能够轻松地在本地运行、管理和与大型语言模型进行交互。 Ollama 提供了一个简单的方式来加载和使用各种预训练的语言模型&#xff0c;支持文本生成、翻译、代码编写、问答等多种…...

XPath路径表达式

1. 绝对路径表达式 语法&#xff1a;/根元素/子元素/子子元素... 特点**&#xff1a;**必须从根元素开始&#xff0c;完整地逐层写路径。 示例代码&#xff1a; <!-- XML结构 --> <school> <class id"1"> <student>小明</student> &l…...

大语言模型的逻辑:从“鹦鹉学舌”到“举一反三”

引言 近年来&#xff0c;大语言模型&#xff08;LLM&#xff09;在自然语言处理领域取得了突破性进展&#xff0c;其强大的文本生成和理解能力令人惊叹。然而&#xff0c;随着应用的深入&#xff0c;人们也开始关注LLM的“逻辑”问题&#xff1a;它究竟是机械地模仿人类语言&a…...

从0到1构建AI深度学习视频分析系统--基于YOLO 目标检测的动作序列检查系统:(0)系统设计与工具链说明

文章大纲 系统简介Version 1Version2环境摄像机数据流websocket 发送图像帧RTSP 视频流树莓派windows消息队列参考文献项目地址提示词系统简介 Version 1 Version2 环境 # 配置 conda 源 # 配置conda安装源 conda config --add channels https://mirrors.tuna.tsinghua.edu.c…...

在Linux环境部署SpringBoot项目

在xshell中手动开放8080端口 sudo ufw allow 8080/tcp systemctl reload ufw systemctl restart ufw 配置文件要求 也可以使用maven来分平台 部署到linux服务器上 1.建一个文件夹 2.将jar包拖拽到文件夹中 3.运行nohup java -jar jar包 &的命令启动程序 //后台启动 …...

8. 保存应用数据

一、课程笔记 1.0 引入 针对那些体积小&#xff0c;访问频率高&#xff0c;且对它的速度有一定要求的轻量化数据。例如&#xff0c;用户偏好设置用配置参数等&#xff0c;使用传统的惯性数据库进行存储&#xff0c;不惊险的笨重&#xff0c;还可能引入不必要的性能开销。 此时…...

ADC采集模块与MCU内置ADC性能对比

2.5V基准电压源&#xff1a; 1. 精度更高&#xff0c;误差更小 ADR03B 具有 0.1% 或更小的初始精度&#xff0c;而 电阻分压方式的误差主要来自电阻的容差&#xff08;通常 1% 或 0.5%&#xff09;。长期稳定性更好&#xff0c;分压电阻容易受到温度、老化的影响&#xff0c;长…...

量子算法:英译名、概念、历史、现状与展望?

李升伟 整理 #### 英译名 量子算法的英文为 **Quantum Algorithm**。 #### 概念 量子算法是利用量子力学原理&#xff08;如叠加态、纠缠态和干涉&#xff09;设计的算法&#xff0c;旨在通过量子计算机高效解决经典计算机难以处理的问题。其核心在于利用量子比特&#xff08…...

水仙花数(华为OD)

题目描述 所谓水仙花数&#xff0c;是指一个n位的正整数&#xff0c;其各位数字的n次方和等于该数本身。 例如153是水仙花数&#xff0c;153是一个3位数&#xff0c;并且153 13 53 33。 输入描述 第一行输入一个整数n&#xff0c;表示一个n位的正整数。n在3到7之间&#x…...

基于编程语言的建筑行业施工图设计系统开发可行性研究————从参数化建模到全流程自动化的技术路径分析

基于编程语言的建筑行业施工图设计系统开发可行性研究————从参数化建模到全流程自动化的技术路径分析 文章目录 **基于编程语言的建筑行业施工图设计系统开发可行性研究————从参数化建模到全流程自动化的技术路径分析** 摘要引言一、技术可行性深度剖析1.1 现有编程语言…...

【Linux】【网络】UDP打洞-->不同子网下的客户端和服务器通信(未成功版)

【Linux】【网络】UDP打洞–>不同子网下的客户端和服务器通信&#xff08;未成功版&#xff09; 上次说基于UDP的打洞程序改了五版一直没有成功&#xff0c;要写一下问题所在&#xff0c;但是我后续又查询了一些资料&#xff0c;成功实现了&#xff0c;这次先写一下未成功的…...

C# 中的Action和Func是什么?Unity 中的UnityAction是什么? 他们有什么区别?

所属范围&#xff1a;Action 和 Func 是 C# 语言标准库中的委托类型&#xff0c;可在任何 C# 项目里使用&#xff1b;UnityAction 是 Unity 引擎专门定义的委托类型&#xff0c;只能在 Unity 项目中使用。 返回值&#xff1a;Action 和 UnityAction 封装的方法没有返回值&…...

SparkStreaming之03:容错、语义、整合kafka、Exactly-Once、ScalikeJDBC

SparkStreaming进阶 一 、要点:star:4.1 SparkStreaming容错4.1.1 SparkStreaming运行流程4.1.2 如果Executor失败&#xff1f;:star:4.1.3 如果Driver失败&#xff1f;4.1.4 数据丢失如何处理:star:4.1.5 当一个task很慢容错 :star:4.2 SparkSreaming语义4.3 SparkStreaming与…...

让单链表不再云里雾里

一日不见&#xff0c;如三月兮&#xff01;接下来与我一起创建单链表吧&#xff01; 目录 单链表的结构&#xff1a; 创建单链表&#xff1a; 增加结点&#xff1a; 插入结点&#xff1a; 删除结点&#xff1a; 打印单链表&#xff1a; 单链表查找&#xff1a; 单链表…...

Linux系统管理(十八)——Ubuntu Server环境下载安装图形化界面、英伟达显卡驱动、Cuda、cudnn、conda的深度学习环境

安装ubuntu系统 镜像源地址&#xff1a;https://ubuntu.com/download/server 安装镜像是最好联网&#xff0c;这样不需要自己配置网络地址&#xff0c;会自动生成动态地址 配置镜像源 在装系统时最好设置好镜像源地址 清华镜像源&#xff1a;https://mirrors.tuna.tsinghua.…...

深度学习的隐身术:详解 PyTorch nn.Dropout

前言 你是否遇到过这样的情况?训练时模型表现得像个学霸,准确率高得离谱,可一到测试集就原形毕露,像是考试作弊被抓包的学生,成绩一落千丈。这种现象叫过拟合,你的模型可能只是死记硬背了训练数据,并没有真正理解其中的模式。 别慌!解决过拟合的方法之一就是Dropout,…...

vscode工作区看不清光标

案例分析&#xff1a; 有的时候当我们把vscode的背景色设置成黑色或者默认黑色时 "workbench.colorTheme": "Visual Studio Dark"这时鼠标指针在非停留状态(指针移动时就看不清)&#xff0c;需要改下系统的鼠标指针设置&#xff0c;而不是vscode的光标设置…...

2025-03-04 学习记录--C/C++-PTA 习题5-4 使用函数求素数和

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 二、代码&#xff08;C语言&#xff09;⭐️ #include <stdio.h>// 函数声明&#xff1a;判断一个数是…...

Open3D 学习指南 (持续学习)

本章仅为个人学习整理。 Open3D: https://www.open3d.org/ Github repo: https://github.com/isl-org/Open3D 1. 概述 Open3D 是一个开源库&#xff0c;旨在为 3D 数据处理提供高效且易用的工具。它由 Intel 开发和维护&#xff0c;支持多种 3D 数据处理任务&#xff0c;如…...

端口安全测试全方位指南:风险、流程与防护策略

在数字化时代&#xff0c;网络安全至关重要&#xff0c;而端口安全作为网络防护的前沿阵地&#xff0c;稍有疏忽就可能为恶意攻击者打开入侵的大门。以下为您详细阐述端口安全测试的全面流程、核心风险点、应对策略及防护建议。 一、测试前的周密筹备 &#xff08;一&#xf…...

3dsmax烘焙光照贴图然后在unity中使用

效果预览 看不清[完蛋&#xff01;] 实现步骤 使用 软件 软体名称地址photoshophttps://www.adobe.com/products/photoshop.htmlunity3Dhttps://unity.com/3dsmaxhttps://www.autodesk.com.cn/products/3ds-max/free-trialpacker-iohttps://www.uv-packer.com/HDR 贴图地址…...

GCN从理论到实践——基于PyTorch的图卷积网络层实现

Hi&#xff0c;大家好&#xff0c;我是半亩花海。图卷积网络&#xff08;Graph Convolutional Network, GCN&#xff09;是一种处理图结构数据的深度学习模型。它通过聚合邻居节点的信息来更新每个节点的特征表示&#xff0c;广泛应用于社交网络分析、推荐系统和生物信息学等领…...

Ollama存在安全风险的情况通报及解决方案

据清华大学网络空间测绘联合研究中心分析&#xff0c;开源跨平台大模型工具Ollama默认配置存在未授权访问与模型窃取等安全隐患。鉴于目前DeepSeek等大模型的研究部署和应用非常广泛&#xff0c;多数用户使用Ollama私有化部署且未修改默认配置&#xff0c;存在数据泄露、算力盗…...

大模型在高血压预测及围手术期管理中的应用研究报告

目录 一、引言 1.1 研究背景与意义 1.2 研究目的 1.3 国内外研究现状 二、大模型预测高血压的原理与方法 2.1 常用大模型介绍 2.2 数据收集与预处理 2.3 模型训练与验证 三、术前风险预测与手术方案制定 3.1 术前风险因素分析 3.2 大模型预测术前风险的方法与结果 …...

网络安全rt是什么意思

1.什么时EDR :完全不同以往的端点被防护思路&#xff0c;而是通过云端威胁情报&#xff0c;机器学习&#xff0c;异常行为分析&#xff0c;攻击指示器等方式&#xff0c;主动发现来自外部或内部的安全威胁 。并进行自动化的阻止&#xff0c;取证&#xff0c;补救和溯源从而有效…...

数据结构篇—栈(stack)

一、引入 在数学史上有这样一个经典问题——汉诺塔问题。 通过动图演示我们发现每一个圆片的运动是什么样的呢&#xff1f; 我们发现&#xff0c;第一个放入的最大圆片将位于整个塔的最底端。所以若想将最大圆片拿出来&#xff0c;就得将压在它身上的所有圆片先按顺序取出才能将…...

python3.13安装教程【2025】python3.13超详细图文教程(包含安装包)

文章目录 前言一、python3.13安装包下载二、Python 3.13安装步骤三、Python3.13验证 前言 本教程将为你详细介绍 Python 3.13 python3.13安装教程&#xff0c;帮助你顺利搭建起 Python 3.13 开发环境&#xff0c;快速投身于 Python 编程的精彩实践中。 一、python3.13安装包下…...

动态内存分配

动态内存分配 1. malloc1.1函数原型1.2参数1.3特点1.4注意事项 2.calloc2.1函数原型2.2参数2.3特点2.4注意事项 3.realloc3.1函数原型3.2参数3.3特点3.4注意事项 4.free4.1 函数原型4.2参数4.3特点 结语 在 C 语言中&#xff0c;主要使用标准库函数 <stdlib.h> 中的几个函…...

物联网设备数据割裂难题:基于OAuth2.0的分布式用户画像系统设计!格行代理是不是套路?2025有什么比较好的副业?低成本的创业好项目有哪些?

一、行业基本面&#xff1a;双赛道增长逻辑验证 1.1 随身WiFi市场&#xff1a;场景红利与技术博弈 移动办公、户外直播等场景推动随身WiFi需求持续增长&#xff0c;格行核心的三网切换技术&#xff08;移动/联通/电信自动择优&#xff09;有效解决单一运营商信号覆盖盲区问题&…...

17.10 LangSmith Evaluation 深度实战:构建智能评估体系驱动大模型进化

LangSmith Evaluation 深度实战:构建智能评估体系驱动大模型进化 关键词:LangSmith 评估体系, 大模型质量评估, 自动化评测流水线, 多维度指标分析, 生产环境模型监控 1. 评估体系设计哲学 LangSmith Evaluation 采用 规则评估+模型评估+人工反馈 三位一体的评估框架: #me…...

Gravitino SparkConnector 实现原理

Gravitino SparkConnector 实现原理 本文参考了官网介绍&#xff0c;想看官方解析请参考 官网地址 本文仅仅介绍原理 文章目录 Gravitino SparkConnector 实现原理背景知识-Spark Plugin 介绍(1) **插件加载**(2) **DriverPlugin 初始化**(3) **ExecutorPlugin 初始化**(4) *…...

前端开发好用的AI工具介绍

以下是前端开发中提升效率的 AI 工具 推荐&#xff0c;涵盖代码生成、UI设计、调试优化等场景&#xff1a; 一、代码生成与辅助工具 工具名称特点适用场景GitHub Copilot基于 OpenAI&#xff0c;智能代码补全&#xff08;支持 JS/TS/React/Vue&#xff09;快速生成代码片段、函…...

Linux的用户与权限--第二天

认知root用户&#xff08;超级管理员&#xff09; root用户用于最大的系统操作权限 普通用户的权限&#xff0c;一般在HOME目录内部不受限制 su与exit命令 su命令&#xff1a; su [-] 用户名 -符号是可选的&#xff0c;表示切换用户后加载环境变量 参数为用户名&#xff0c…...

COUNT(CASE WHEN ... THEN ... END)详解

在 SQL 查询中&#xff0c;COUNT(CASE WHEN ... THEN ... END) 是一种常见的用法&#xff0c;用于统计满足特定条件的记录数。具体例子&#xff1a; # sexType 2表示女生 COUNT(CASE WHEN h_employee.sexType 2 THEN 1 END) AS 女员工人数解释 CASE WHEN ... THEN ... END&a…...

音视频入门基础:RTP专题(14)——FFmpeg源码中,对H.264的各种RTP有效载荷结构的解析

一、引言 由《音视频入门基础&#xff1a;RTP专题&#xff08;10&#xff09;——FFmpeg源码中&#xff0c;解析RTP header的实现》可以知道&#xff0c;FFmpeg源码的rtp_parse_packet_internal函数的前半部分实现了解析某个RTP packet的RTP header的功能。而在解析完RTP head…...

FPGA——4位全加器及3-8译码器的实现

文章目录 一、全加器1、Verilog实现四位全加器2、下载测试 二、3-8译码器1、Verilog实现3-8译码器2、7段数码管显示3-8译码器 三、总结四、参考资料 一、全加器 全加器的定义&#xff1a; 全加器英语名称为full-adder&#xff0c;是用门电路实现两个二进制数相加并求出和的组合…...

软考中级-数据库-3.4 数据结构-图

图的定义 一个图G(Graph)是由两个集合:V和E所组成的&#xff0c;V是有限的非空顶点(Vertex)集合&#xff0c;E是用顶点表示的边(Edge)集合&#xff0c;图G的顶点集和边集分别记为V(G)和E(G)&#xff0c;而将图G记作G(V&#xff0c;E)。可以看出&#xff0c;一个顶点集合与连接这…...

软考中级-数据库-3.3 数据结构-树

定义:树是n(n>=0)个结点的有限集合。当n=0时称为空树。在任一非空树中,有且仅有一个称为根的结点:其余结点可分为m(m>=0)个互不相交的有限集T1,T2,T3...,Tm…,其中每个集合又都是一棵树,并且称为根结点的子树。 树的相关概念 1、双亲、孩子和兄弟: 2、结点的度:一个结…...

Win11被背刺,官方泄露免费激活方法

AI已经成为科技圈的主旋律了&#xff0c;在PC圈的龙头微软也不例外。 但最近喜欢背刺用户、极力推崇AI的微软被自家产品背刺了一把。 罪魁祸首就是Microsoft Copilot&#xff0c;如果向Microsoft Copilot提问&#xff0c;是否可以帮忙提供激活Windows11的脚本。 Copilot会立马…...

第十天-字符串:编程世界的文本基石

在编程的广阔领域中&#xff0c;字符串是极为重要的数据类型&#xff0c;它就像一座桥梁&#xff0c;连接着人类的自然语言和计算机能够理解与处理的数字信息。下面&#xff0c;让我们深入探索字符串的世界。 一、字符串简介 字符串是由零个或多个字符组成的有序序列&#xff…...

CentOS7 安装Redis 6.2.6 详细教程

本文主要介绍CentOS7系统下安装Redis6.2.6的详细教程。 1.安装依赖 redis是基于C语言开发&#xff0c;因此想要在服务器上运行redis需要验证是否安装了gcc&#xff0c;没有安装gcc则需先安装 查看是否安装gcc gcc -v如果没有安装gcc&#xff0c;则通过如下命令安装 yum in…...

VsCode使用

vscode前端vue项目启动&#xff1a;Vue项目的创建启动及注意事项-CSDN博客 vscode使用教程&#xff1a;史上最全vscode配置使用教程 - 夏天的思考 - 博客园 vscode如何从git拉取代码&#xff1a;vscode如何从git拉取代码 • Worktile社区...

mac上最好的Python开发环境之Anaconda+Pycharm

文章目录 一、前言 1. Anaconda介绍2. Pycharm介绍 编码协助项目代码导航代码分析Python重构支持Django框架集成版本控制 二、下载Anaconda和Pycharm 1. 下载Anaconda2. 下载Pycharm 三、安装Anaconda和Pycharm 1. 安装Anaconda2. 安装Pycharm 一、前言 1. Anaconda介绍 …...