Linux(Ubuntu)新建文件权限继承问题

当你在一个工作目权限为777的文件下,新建一个文件的时候,就有可能发生,新建的这个文件,权限和其他文件,或者工作目录不一致的问题,我们不可能每次新建一个文件,就要

sudo chmod -R 777 /PATH

所以就不得不聊一聊权限继承的问题,即我们如何让新建的文件权限与目录保持一致

一 通过ACL设置,继承权限(部分文件)(推荐) 

1. 确保Linux系统支持ACL

下载(Ubuntu)

sudo apt install acl

2. 为目录设置默认ACL规则

将目标目录的权限模式(如 777)设置为默认继承规则:

  • -d:设置默认 ACL(对新创建的文件和目录生效)。

  • -m:修改 ACL 条目。

  • u::rwx,g::rwx,o::rwx:用户、组、其他用户均拥有 rwx 权限。

  • -R:递归应用到现有子目录(可选)。

  • sudo setfacl -Rdm u::rwx,g::rwx,o::rwx /PATH

3. 验证ACL规则

查看目录内的ACL配置:

getfacl /path/

输出应该为:

default:user::rwx
default:group::rwx
default:other::rwx

 

 4. 测试新建文件的权限

touch /path/newfile.txt
ls -l /path/newfile.txt

新建文件test04.sh与03.sh的区别

 

二 通过umask 设置,继承权限(全局)

通过修改 umask 值,控制新创建文件的默认权限。但此方法影响整个用户会话,存在安全风险。

1. 临时修改 umask(仅当前终端有效)

在终端中设置 umask 为 000

000:新建文件权限为 666(rw-rw-rw-),目录为 777(rwxrwxrwx)。

umask 000

 2. 永久修改 umask(谨慎操作)

1. 编辑用户配置文件(如 ~/.bashrc),添加:
umask 000
2. 然后重新加载配置:
source ~/.bashrc

三 权限继承原理与注意事项

  1. ACL 与 umask 的优先级

    • 若目录设置了默认 ACL,新文件的权限由 ACL 规则与 umask 共同决定

    • 例如:若 umask 为 022,则文件最终权限为 ACL权限 & ~umask(即 666 & ~022 = 644)。

    • 推荐优先使用 ACL,避免全局修改 umask。

  2. 文件与目录的权限差异

    • 文件默认不继承执行权限(x),需手动添加(如通过 ACL 显式设置)。

    • 目录需要执行权限(x)才能进入,因此默认应保留 rwx

  3. 安全性警告

    • 风险:开放 777 权限可能导致恶意用户篡改或删除文件。

    • 建议:仅在测试环境或完全信任的场景下使用,生产环境应精细化控制权限。


总结:

  • 最佳方案:使用 setfacl 设置目录的默认 ACL 规则,实现权限自动继承。

  • 应急方案:临时修改 umask,但需注意安全影响。

  • 验证命令:通过 getfacl 和 ls -l 检查权限是否符合预期。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/news/906977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3和React中插件化设计思想

Vue 3 和 React 都广泛支持插件化设计思想,但因为它们的架构和理念不同,插件化的实现方式也不尽相同。以下分别详细讲解这两者中如何实现插件化: 🟩 一、Vue 3 中的插件化实现 Vue 3 继承了 Vue 2 的插件机制,同时增强…

Excel 密码忘记了?巧用PassFab for Excel 解密帮您找回数据!

在工作中,你是否遇到过这样的尴尬时刻?打开重要的 Excel 文件,却发现忘记密码,里面的财务报表、客户数据、项目计划瞬间变成 “加密天书”。重新制作耗时耗力,找专业人员解密又担心数据泄露,这个时候&#…

Vue3 与 Vue2 区别

一、Vue3 与 Vue2 区别 对于生命周期来说,整体上变化不大,只是大部分生命周期钩子名称上 “on”,功能上是类似的。不过有一点需要注意,组合式API的Vue3 中使用生命周期钩子时需要先引入,而 Vue2 在选项API中可以直接…

Axure高级交互设计:中继器嵌套动态面板实现超强体验感台账

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!如有帮助请订阅专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:中继器嵌套动态面板 主要内容:中继器内部嵌套动态面板,实现可移动式台账,增强数据表现…

Spring中用到的设计模式详解

Spring 在设计和实现过程中大量使用了设计模式,这些设计模式不仅提升了 Spring 的灵活性和可扩展性,还为开发者提供了更高效、更优雅的编程方式。以下是 Spring 框架中使用的一些常见设计模式: 1. 单例模式(Singleton Pattern&am…

Typescript学习教程,从入门到精通,TypeScript 集合类型语法知识点及案例代码(11)

TypeScript 集合类型语法知识点及案例代码 TypeScript 提供了多种集合类型,用于存储和管理数据。以下将详细介绍 数组(Array)、元组(Tuple)、集合(Set) 和 映射(Map)&am…

在 Win 10 上,Tcl/Tk 脚本2个示例

参阅:Tcl/Tk 教程 set PATH 新增 D:\Git\mingw64\bin where tclsh D:\Git\mingw64\bin\tclsh.exe where wish D:\Git\mingw64\bin\wish.exe 编写 test_tk.tcl 如下 #!/usr/bin/tclsh # test 文件对话框 package require Tk# 弹出文件选择对话框,限…

Qt环境的搭建

Qt安装 Qt开发环境需要安装三个部分 1.C编译器(不是vs) 2.Qt SDK 3.需要一个Qt的集成开发环境 说是需要三个部分,但实际上是需要安装Qt SDK就足够了 QtSDK可以直接去官网下载 下载完成后需要配置一下环境变量 可以直接在系统中搜索"编辑系统环境变量" 为什么要…

Vue3中reactive响应式使用注意事项

Vue 3 的 reactive 是创建响应式对象的核心 API,但在使用过程中有一些需要注意的事项: 1:基本使用限制 仅对对象类型有效:reactive 只能用于对象类型(Object、Array、Map、Set 等),不能用于原始…

STM32+rt-thread使用MQTT协议连接腾讯物联网平台

STM32rt-thread使用MQTT协议连接腾讯物联网平台 一、腾讯云sdk下载1、进入腾讯物联网平台文件[点击链接跳转](https://cloud.tencent.com.cn/document/product/1081/48356)2、下载csdk 二、移植腾讯云sdk1、将上面解压的文件夹复制到自己工程目录下2、文件添加到自己工程 三、连…

【MySQL成神之路】MySQL函数总结

以下是MySQL函数的全面总结,包含概念说明和代码示例: 一、MySQL函数分类 1. 字符串函数 -- CONCAT:连接字符串 SELECT CONCAT(Hello, , World); -- 输出 Hello World -- SUBSTRING:截取子串 SELECT SUBSTRING(MySQL, 2, 3…

JavaScript 异步编程、对象/数组操作

异步编程 JavaScript 是单线程语言,通过事件循环机制处理异步操作。任务分为两种: 宏任务(Macrotask): script整体代码、setTimeout(时间结束执行)、setInterval(间隔执行)、I/O、UI渲染 微任务(Microtas…

中小制造企业网络安全防护指南

考虑到文章内容较长,简要内容图片在文档末尾,请直接翻阅到底部查看 引言:中小制造企业面临的独特网络安全挑战 中小制造企业 (SME) 在当今数字化浪潮中扮演着至关重要的角色,然而,伴随技术进步而来的是日益严峻且独特…

es学习小结

1.​客户端类型​ ​推荐场景​ ​版本兼容性​ Elasticsearch Java API Client 新项目、ES 8.x集群 8.x及以上 Spring Data Elasticsearch Spring生态项目、简化ORM操作 ES 7.x-8.x(需版本匹配) Low-Level REST Client 需要底层HTTP控制、兼容多版本ES …

Axure项目实战:智慧运输平台后台管理端-订单管理2(多级交互)

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!如有帮助请订阅专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:订单管理2 主要内容:中继器筛选、表单跟随菜单拖动、审批数据互通等 应用场景:订单管理…

2025年——ComfyUI_连接HuggingFace及更改缓存路径

本篇分享在 ComfyUI 中连接 huggingface 以及更改模型缓存路径。 我们在使用 ComfyUI 的一些插件时,有些必要模型只能通过连接 huggingface 来缓存才能让流程得以进行。但目前在上网不科学的情况下是无法打开 huggingface 网站的,好在国内有其镜像网站&a…

wx.getPrivacySetting接口needAuthorization一直返回false

我们在开发小程序的隐私协议授权时往往会使用到wx.getPrivacySetting接口,当返回的needAuthorization为true时候提示我们需要去授权,但你们有没有遇到过needAuthorization一直为false的情况呢,下面是最常见的三个解决方法,都完善了…

旅游信息检索

旅游信息检索 旅游信息检索是系统中实现数据获取和处理的关键环节,负责根据用户输入的目的地城市和出游天数,动态获取并生成高质量的旅游数据。 模块的工作流程分为以下几个阶段:首先,对用户输入的信息进行标准化处理&#xff0…

机器学习笔记【Week2】

一、多变量线性回归(Multivariate Linear Regression) 为什么需要多变量? 现实问题中,一个目标可能受多个因素影响,比如预测房价时: x 1 x_1 x1​:面积 x 2 x_2 x2​:卧室数量 x 3…

Axure 基本用法学习笔记

一、元件操作基础 1. 可见性控制 隐藏/显示:可以设置元件的可见性,使元件在特定条件下隐藏或可见 应用场景:创建动态交互效果,如点击按钮显示隐藏内容 2. 层级管理 层级概念:元件有上下层关系,上层元件…