若依项目Linux生产环境治理:文件系统权限配置实战
前言记得有一次开发同事需要查看application.yml里的数据库连接配置看完之后顺手按了上下键不小心执行了上一条vim application.yml然后手滑按了几个键保存退出了。等他反应过来配置已经乱了整个服务重启后连不上数据库线上炸了半小时。事后复盘根因很简单配置文件太开放了任何能登录服务器的人都能改。本文就来解决这个问题为若依项目配置一套合理的文件系统权限。一、需求分析先从三个问题说起。问题一若依项目根目录归谁管/opt/ruoyi是整个项目的根。我的做法是根目录的所有者和所属组都设为ruoyi权限设为755。这样ruoyi用户拥有完整控制权同组用户可以查看目录内容其他用户可以进入目录但不能随意增删文件。问题二配置文件怎么保护这是最关键的问题。/opt/ruoyi/config/application.yml里存着数据库密码、Redis密码、加密密钥。如果任何登录服务器的人都能cat或vim它敏感信息就等于公开了。解决方案把config目录的权限设为750——只有ruoyi用户能完全控制ruoyi组的成员能读取但不能修改其他用户直接进不了这个目录。生产环境中需要修改配置的人非常少让组内其他人只能看不能改既方便协作排查问题又防止了误操作。问题三日志和程序包呢日志目录要宽进严出所有人都能看日志但只有ruoyi能写。755刚好满足这个要求。JAR包是部署好的不应该被随便替换属主是ruoyi权限644就够了。最终需求表目录/文件属主:属组权限理由/opt/ruoyiruoyi:ruoyi755根目录ruoyi完全控制同组可查看其他人可进入但不可增删/opt/ruoyi/configruoyi:ruoyi750保护敏感配置仅ruoyi可写组内只读防止误操作和信息泄露/opt/ruoyi/logsruoyi:ruoyi755日志宽进严出所有人可读仅ruoyi可写/opt/ruoyi/backend/*.jarruoyi:ruoyi644程序包不应被随意替换属主可读写其他只读二、动手实战开始之前有个小建议如果你用虚拟机做实验建议恢复到干净快照再开始避免前面实验的配置互相干扰。第1步创建专用用户[rootmagedu ~]# useradd ruoyi这个ruoyi用户就是若依应用的主人所有项目文件都归它所有应用进程也以它的身份运行。第2步创建目录结构[rootmagedu ~]# mkdir -p /opt/ruoyi/{config,logs,backend,frontend,backup}创建完成后目录结构如下/opt/ruoyi/ ├── config/ # 配置文件敏感 ├── logs/ # 应用日志 ├── backend/ # 后端JAR包 ├── frontend/ # 前端静态文件 └── backup/ # 备份文件第3步设置所有者和权限# 设置根目录所有者为 ruoyi [rootmagedu ~]# chown -R ruoyi:ruoyi /opt/ruoyi 设置根目录权限 [rootmagedu ~]# chmod 755 /opt/ruoyi 设置 config 目录为 750敏感目录严格限制 [rootmagedu ~]# chmod 750 /opt/ruoyi/config 设置其他目录为 755 [rootmagedu ~]# chmod 755 /opt/ruoyi/logs [rootmagedu ~]# chmod 755 /opt/ruoyi/backend [rootmagedu ~]# chmod 755 /opt/ruoyi/frontend [rootmagedu ~]# chmod 755 /opt/ruoyi/backup第4步验证结果[rootmagedu ~]# ls -la /opt/ruoyi/ drwxr-xr-x 6 ruoyi ruoyi 4096 Jul 19 17:00 . drwxr-xr-x 4 root root 4096 Jul 19 16:55 .. drwxr-x--- 2 ruoyi ruoyi 4096 Jul 19 17:00 config drwxr-xr-x 2 ruoyi ruoyi 4096 Jul 19 17:00 logs drwxr-xr-x 2 ruoyi ruoyi 4096 Jul 19 17:00 backend drwxr-xr-x 2 ruoyi ruoyi 4096 Jul 19 17:00 frontend drwxr-xr-x 2 ruoyi ruoyi 4096 Jul 19 17:00 backup注意config目录的权限是drwxr-x---750这是本配置中最关键的安全设防点。三、理解 755 和 750 的实际效果用户身份/opt/ruoyi(755)/opt/ruoyi/config(750)ruoyi属主读、写、进入读、写、进入ruoyi组成员读、进入、不可写读、进入、不可写其他用户读、进入、不可写不可读、不可进入、不可写同样是普通用户他能进入/opt/ruoyi查看目录结构但cd config时会直接报Permission denied。这就是我们想要的效果目录结构可以看敏感内容不能碰。四、关于最小权限原则通过这篇文章我想传递一个比技术操作更重要的理念最小权限原则——只授予完成工作所必需的最少权限不多给一分。例如config目录设置为750而不是755多出来的那一点限制——不让其他人进入——恰恰是保护了配置文件不被非授权用户看到。权限管理其实就是在做减法默认不给权限只开最小的口子。五、验证权限是否生效测试一普通用户尝试进入 config 目录[rootmagedu ~]# su - ruoyi-admin [ruoyi-adminmagedu ~]$ cd /opt/ruoyi/config -bash: cd: /opt/ruoyi/config: Permission denied预期结果报错Permission denied说明750生效了。测试二确认文件归属[rootmagedu ~]# ls -l /opt/ruoyi/backend/ruoyi-admin.jar -rw-r--r-- 1 ruoyi ruoyi 123456 Jul 19 17:00 /opt/ruoyi/backend/ruoyi-admin.jar预期结果显示ruoyi ruoyi属主属组正确。六、汇总核心操作就是五步步骤命令目的1useradd ruoyi创建专用用户2mkdir -p /opt/ruoyi/{config,logs,backend,frontend,backup}创建目录结构3chown -R ruoyi:ruoyi /opt/ruoyi所有权全部交给 ruoyi4chmod 755 /opt/ruoyichmod 750 /opt/ruoyi/configchmod 755 /opt/ruoyi/logs分目录设置差异化权限5ls -la /opt/ruoyi/验证最终效果最后再提一句权限配置是防御性的。它不能保证系统绝对安全但能防止大多数因手滑或好奇导致的意外——比如开发误改了配置文件、运维误删了日志目录。这些看似不起眼的小事正是生产环境宕机的常见元凶。现在回到开头提到的三个重点检查项✅ 所有目录的属主属组都是ruoyi:ruoyi✅config目录的权限是drwxr-x---750✅ 其他目录的权限是drwxr-xr-x755如果这三项都通过了恭喜你你已经为若依项目搭建了一套既安全又实用的文件系统权限体系。本文是若依项目Linux生产环境治理系列的第三篇。前两篇覆盖目录结构治理和用户体系治理后续文章将深入 sudo 精细化权限管控、日志分析与正则实战、LVM 存储管理等进阶内容构建一套从底层存储到上层审计的完整治理方法论欢迎关注。

相关新闻

AssetRipper终极指南:轻松提取Unity游戏资源的免费开源神器

AssetRipper终极指南:轻松提取Unity游戏资源的免费开源神器

AssetRipper终极指南:轻松提取Unity游戏资源的免费开源神器 【免费下载链接】AssetRipper GUI application to analyze game files 项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipper 你是否曾经遇到过这样的困境?想要分析一个Unity…

2026/7/24 20:41:08 阅读更多 →
第五章 数组(附多道题型详细解析及代码)

第五章 数组(附多道题型详细解析及代码)

【以下就是关于数组的所有内容,如果您觉得这篇文章很好,请打赏一点心意,谢谢大家的支持】 第一节 一维数组 一、为什么要为什么要使用数组 通过前面几章的学习,我们已经可以编写程序来解决各种相当复杂的问题了,但是当需要处理的数据比较多时,仅依靠前面的知识…

2026/7/24 20:40:08 阅读更多 →
YOLOv8在轴承缺陷检测中的工业应用实践

YOLOv8在轴承缺陷检测中的工业应用实践

1. 项目背景与核心价值 轴承作为机械设备中的关键部件,其运行状态直接影响整个设备的寿命和安全性。传统人工检测方式存在效率低、漏检率高的问题,而基于深度学习的视觉检测技术正在工业质检领域掀起革命。这个项目采用YOLOv8这一当前最先进的目标检测算…

2026/7/24 20:40:08 阅读更多 →

最新新闻

SDC命令详解:使用set_sense命令进行约束

SDC命令详解:使用set_sense命令进行约束

相关阅读 SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm1001.2014.3001.5482 目录 时钟极性 指定引脚、端口列表/集合 指定类型 指定正单调性 指定负单调性 指定停止传播 指定时钟脉冲 指定时钟列表/集合 指定时钟叶节点 Multicorner-Multim…

2026/7/24 20:47:09 阅读更多 →
HarmonyOS ArkTS 实战:实现一个校园竞赛报名与项目管理应用

HarmonyOS ArkTS 实战:实现一个校园竞赛报名与项目管理应用

HarmonyOS ArkTS 实战:校园竞赛报名与项目管理完整实现 摘要项目难度:⭐⭐⭐ 中级实战 适用人群:有 ArkTS 基础、希望学习学习类应用开发的 HarmonyOS 开发者 开发环境:DevEco Studio Next / API 24 代码规模:单页面约…

2026/7/24 20:47:09 阅读更多 →
为什么说12306是技术难度最大的实时交易系统?

为什么说12306是技术难度最大的实时交易系统?

当年12306上线后经常崩溃,铁道部转而寻求IBM、阿里巴巴等业界巨头的协助,以期攻克技术难关,开出的条件是资金无上限,但务必确保问题得到圆满解决。然而,这些行业巨擘最终都婉拒了这一挑战。在后面透露出的信息显示,即便是IBM、Oracle、Sybase这样的国际领先企业,也无法满…

2026/7/24 20:47:09 阅读更多 →
NSC_BUILDER:高效管理Switch游戏文件的完整解决方案

NSC_BUILDER:高效管理Switch游戏文件的完整解决方案

NSC_BUILDER:高效管理Switch游戏文件的完整解决方案 【免费下载链接】NSC_BUILDER Nintendo Switch Cleaner and Builder. A batchfile, python and html script based in hacbuild and Nuts python libraries. Designed initially to erase titlerights encryption…

2026/7/24 20:47:09 阅读更多 →
播客总结怎么做?把通勤路上听的播客转文字变成可读笔记

播客总结怎么做?把通勤路上听的播客转文字变成可读笔记

你有没有这样的经历:通勤路上听完一期播客,觉得收获很大,但到了公司想跟同事聊具体观点的时候,发现只记得好像讲得挺好的,具体案例、数据、细节一个都说不上来。 播客的问题是它太「耳过不留」了。不像文字可以反复看、…

2026/7/24 20:47:09 阅读更多 →
openclaw源码解读(2) —— 消息进来后怎么变成 Agent 调用

openclaw源码解读(2) —— 消息进来后怎么变成 Agent 调用

文件解析: gateway/server.ts文件职责:懒加载 启动打点 纯代理L10-17 如果process.env也就是环境变量中有OPENCLAW_GATEWAY_STARTUP_TRACE 这个环境变量的设置,才会开启启动线程执行的log日志跟踪L19-28 异步执行懒加载server.impl.js类&a…

2026/7/24 20:46:09 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻