Linux计算文件权限的mode和umask

文章目录

  • 文件权限
      • 文件权限的三类用户
      • 文件权限的三种类型
      • mode 的格式
      • 常见的权限设置示例
  • umask的作用
      • `umask` 的作用
      • 例子
      • 常见 `umask` 设置
  • 通过位操作计算权限
      • 解释公式的背景
      • 位操作解释
      • 具体例子


文件权限

在 Unix/Linux 系统中,文件权限通过 mode 来指定,通常是使用 chmod 命令设置的。mode 是一个八进制数,由三个部分组成,每个部分表示不同的用户组对文件的权限。

文件权限的三类用户

  1. 文件所有者(Owner)
  2. 所属组(Group)
  3. 其他用户(Others)

文件权限的三种类型

  1. 读(r):值为 4,表示可以读取文件内容。
  2. 写(w):值为 2,表示可以修改文件内容。
  3. 执行(x):值为 1,表示可以执行该文件(对于目录,表示可以进入该目录)。

mode 的格式

文件权限由三个数字组成,每个数字分别表示文件所有者、所属组和其他用户的权限。例如,chmod 755 filename 中的 755 是一个八进制数,表示:

  • 7:文件所有者(Owner)的权限,7 = 4(读) + 2(写) + 1(执行),即具有读、写、执行权限。
  • 5:所属组(Group)的权限,5 = 4(读) + 1(执行),即具有读和执行权限,没有写权限。
  • 5:其他用户(Others)的权限,5 = 4(读) + 1(执行),即具有读和执行权限,没有写权限。

常见的权限设置示例

  • chmod 777 filename:所有用户都具有读、写、执行权限。
  • chmod 644 filename:文件所有者可以读写,其他用户只能读。
  • chmod 755 filename:文件所有者可以读写执行,其他用户只能读和执行。

通过这种方式,可以灵活地为不同的用户组设置文件的权限。

Linux的open()函数也引用了这个参数:Linux系统文件IO


umask的作用

umask 是一个用于控制文件和目录默认权限的系统设置。它在创建新文件或目录时,影响文件系统的权限掩码,从而影响最终设置的权限。

umask 的作用

  1. 权限掩码umask 是一个权限掩码,用于指定在创建新文件或目录时应当“屏蔽”(即剥除)哪些权限位。它不直接设置权限,而是从默认权限中去掉一些权限。

  2. 默认权限

    • 文件:默认权限通常是 0666(读写权限,文件创建时)。
    • 目录:默认权限通常是 0777(读写执行权限,目录创建时)。
  3. umask 的工作原理

    • umask 的值是一个八进制数,用于指定应当去除的权限位。
    • 新创建文件或目录的权限 = 默认权限 - umask

例子

假设当前的 umask 值为 022,这表示屏蔽写权限(写权限是 2,因此去掉了这个权限)。以下是如何计算最终权限的过程:

  • 文件的默认权限0666

    • 去掉的权限022
    • 最终权限0666 - 022 = 0644
    • 结果:新文件的权限是 0644,即所有者具有读写权限,组和其他用户具有读权限。
  • 目录的默认权限0777

    • 去掉的权限022
    • 最终权限0777 - 022 = 0755
    • 结果:新目录的权限是 0755,即所有者具有读写执行权限,组和其他用户具有读执行权限。

常见 umask 设置

  • 022:默认的 umask 值,通常用于给文件和目录设置合适的权限,抹掉了同组的其他人和组外人的写权限
  • 002:允许同组用户写权限,但屏蔽其他用户的写权限。
  • 077:非常严格,只有所有者具有所有权限,其他用户没有权限。

通过位操作计算权限

mode & ~umask 这个公式是用来计算新创建文件或目录的最终权限的。这个公式涉及到位操作,用于在创建文件时应用 umask

解释公式的背景

  1. 默认权限

    • 文件:通常是 0666(即所有用户都具有读写权限)。
    • 目录:通常是 0777(即所有用户都具有读写执行权限)。
  2. umask

    • umask 是一个掩码,用于定义在创建文件或目录时哪些权限应该被去掉。它是以八进制表示的。
  3. 计算方法

    • 新文件或目录的最终权限 = 默认权限 - umask
    • 这个计算可以通过位操作实现:mode & ~umask

位操作解释

  • ~umask:对 umask 进行按位取反(NOT)操作,得到一个掩码,其中 umask 中的位被清零,其他位被置为1。

    • 例如,如果 umask022,其二进制表示为 000 000 010 010。取反后得到 111 111 101 101(八进制表示为 755)。
  • mode & ~umask:通过与操作将 mode 中的某些位清零,保留其他位。具体来说,这会将 umask 指定的权限位从默认权限中去掉。

    • 例如,如果 mode0666(文件默认权限),umask022,则 ~umask0755。执行 0666 & 0755 会得到 0644,这就是最终文件权限。

具体例子

假设 umask022,默认权限为 0666(文件),我们用公式 mode & ~umask 计算最终权限:

  1. umask(八进制):022

    • 二进制000 000 010 010
    • 按位取反111 111 101 101(八进制表示为 755
  2. 默认权限(文件):0666

    • 二进制110 110 110 110
  3. 计算

    • 0666 & 0755
    • 结果0644(即最终文件权限)

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

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

相关文章

LINUX下载编译zlog

下载 Tags HardySimpson/zlog GitHub 解压编译 make 检查 $ ll src/libzlog.a -rw-rw-r-- 1 weiyu weiyu 745782 9月 9 19:17 src/libzlog.a

Python青少年简明教程:类和对象入门

Python青少年简明教程:类和对象入门 Python支持多种编程范式(programming paradigms),即支持多种不同的编程风格和方法。初学者开始重点学习关注的编程范式,一般而言是面向过程编程和面向对象编程。面向过程编程&#…

RTMP播放器延迟最低可以做到多少?

技术背景 RTMP播放器的延迟可以受到多种因素的影响,包括网络状况、推流设置、播放器配置以及CDN分发等。因此,RTMP播放器的延迟并不是一个固定的数值,而是可以在一定范围内变化的。 正常情况下,网上大多看到的,针对R…

email2case生成case的过程是以哪个用户的触发的

在 Salesforce 中,通过 Email-to-Case 生成的 Case 其实是由一个特定的用户在后台系统中触发的,这个用户通常称为 Automated Case User。这个用户负责代表系统执行 Email-to-Case 的所有自动化操作。 1. Automated Case User Automated Case User 是一…

docker 重启容器且修改服务映射端口

要重启 Docker 容器并修改服务的映射端口,可以按照以下步骤进行操作: 1. 停止当前运行的容器 如果你想重新配置端口,通常需要先停止当前运行的容器。你可以使用以下命令停止容器: docker stop <container_name_or_id>2. 删除现有容器 为了修改端口映射,你需要删…

小琳AI课堂:LLaMA 3.1 开源大模型的全新里程碑

引言 大家好&#xff0c;这里是小琳AI课堂&#xff01;今天我们要聊的是Meta最新发布的开源大模型LLaMA 3.1。这个版本在AI界掀起了不小的波澜&#xff0c;不仅在参数规模上有显著提升&#xff0c;还在多项性能上实现了突破。让我们一起来看看LLaMA 3.1带来的新变化和意义吧&a…

爆改YOLOv8|利用SCConv改进yolov8-即轻量又涨点

1&#xff0c;本文介绍 SCConv&#xff08;空间和通道重构卷积&#xff09;是一种高效的卷积模块&#xff0c;旨在优化卷积神经网络&#xff08;CNN&#xff09;的性能&#xff0c;通过减少空间和通道的冗余来降低计算资源的消耗。该模块由两个核心组件构成&#xff1a; 空间重…

PHP轻量级高性能HTTP服务框架 - webman

摘要 webman 是一款基于 workerman 开发的高性能 HTTP 服务框架。webman 用于替代传统的 php-fpm 架构&#xff0c;提供超高性能可扩展的 HTTP 服务。你可以用 webman 开发网站&#xff0c;也可以开发 HTTP 接口或者微服务。 除此之外&#xff0c;webman 还支持自定义进程&am…

策略模式实现搜索功能

概念&#xff1a; 策略模式是一种行为设计模式&#xff0c;用于定义一系列算法&#xff0c;将他们封装起来&#xff0c;并使他们可以互相替换。使用策略模式可以让代码更加灵活&#xff0c;且易于扩展和维护 背景&#xff1a; 假设你有一个功能需要多种不同的算法或行为实现…

Obsidian git sync error / Obsidian git 同步失敗

Issue: commit due to empty commit message Solution 添加commit資訊&#xff0c;確保不留空白 我的設置&#xff1a;auto-backup: {{hostname}}/{{date}}/

Scala尾递归解决爆栈问题

引言 我在上篇中详细的讲了递归的一系列问题&#xff0c;多路递归&#xff0c;爆栈问题&#xff0c;尾递归优化等&#xff0c;今天就实际演示一下尾递归是如何解决爆栈问题的&#xff0c;以及它的原理是什么&#xff1f; 支持尾递归优化的语言 尾递归是一种特殊的递归形式,如果…

SpringBoot开发——整合Logbook进行HTTP API请求响应日志输出

文章目录 1. 简介依赖管理2. 实战案例2.1 基本用法2.2 结合Logback日志记录到文件2.3 自定义核心类Logbook2.4 自定义日志输出Sink2.5 与RestTemplate集成1. 简介 记录HTTP API请求响应日志对于监控、调试和性能优化至关重要。它帮助开发者追踪API的使用情况,包括请求来源、参…

接口自动化测试推荐用什么框架?

在推荐接口自动化测试框架时&#xff0c;需要考虑多个因素&#xff0c;包括项目需求、技术栈、团队经验和个人偏好。 以下是几个常用的接口自动化测试框架供你参考&#xff1a; Postman&#xff1a; Postman是一个功能强大且易于上手的接口测试工具&#xff0c;它提供了许多…

景联文科技:专业数据标注公司,推动AI技术革新

数据标注作为AI技术发展的重要支撑&#xff0c;对于训练高质量的机器学习模型以及推动应用领域的创新具有不可替代的作用。 景联文科技作为专业的数据标注公司&#xff0c;致力于提供专业的数据标注服务&#xff0c;帮助客户解决AI链条中的数据处理难题&#xff0c;共同推动人工…

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、…

k8s的加密配置secret和应用配置configmap

目录 加密配置 secret的三种类型 创建opaque类型的两种方式 方法一 方法二 如何把secret挂载到pod当中 把secret作为环境变量传到pod当中 指定harbor私有仓库加密的secret配置 应用配置 configmap 创建configmap的方式 在pod里面用configmap做pod的环境变量 **用c…

Java项目: 基于SpringBoot+mybatis+maven校园资料分享平台(含源码+数据库+答辩PPT+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismaven校园资料分享平台 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简…

gdb 前端:kdbg 安装使用

文章目录 1. 前言2. kdbg 安装使用2.1 安装 kdbg2.2 使用 kdbg 1. 前言 限于作者能力水平&#xff0c;本文可能存在谬误&#xff0c;因此而给读者带来的损失&#xff0c;作者不做任何承诺。 2. kdbg 安装使用 2.1 安装 kdbg kdbg 是 gdb 的图形化界面的前端&#xff0c;在 …

如何使用Jmeter关联influxDB?

一、添加"添加后端监听器" 二、后端监听器实现选择&#xff0c;"org. apache. jmeter. visualizers. backend. influxdb.InfluxdbBackendlistenerClient" 三、修改"influxdbUrl&#xff1a;自己的主机、application:取一个项目名" 四、influxDB&…

网络层协议介绍

目录 一、网络层的功能 二、ip数据包格式 三、ICMP协议&#xff08;Internet控制报文协议&#xff09; 3.1功能 3.2 ping命令 3.2.1ping命令的用法 3.2.2扩展 3.3 tracert命令&#xff08;windows&#xff09; 四、arp协议 4.1ARP协议是如何工作的 4.2工作原理&#x…