umask 设置文件权限掩码

news2024/10/7 12:23:01

我们在创建文件或者目录时,看到的权限往往和我们设置的不一样,原因就在于创建文件时要受到 umask的影响。


目录

一、实际情景介绍

二、文件权限掩码

1、什么是权限掩码?

2、权限掩码的作用过程

3、设置权限掩码的两种方式

(1) umask 命令设置权限掩码

(2) umask 函数设置权限掩码


一、实际情景介绍

使用open系统函数以写的方式打开一个文件(文件不存在则直接创建),此时OS就会帮我们创建出一个文件,初始赋予的权限是 0666(创建者、组、其他都具有读写权限)

// O_WRONLY: 以只写的形式打开文件
// O_CREAT: 如果文件不存在,则直接创建
// 0666: 设置文件的初始权限,0666由八进制转二进制就是110 110 110,
//       即创建者、组、其他都具有读写权限
open("./log", O_WRONLY | O_CREAT, 0666);

但是实际创建出来的文件权限如下,实际文件的权限是 0644,这是因为受到了文件权限掩码的影响。(详见下面 “权限掩码的作用过程” )

二、文件权限掩码

1、什么是权限掩码?

文件权限掩码是 OS不希望某些成员具备的权限,即便设置了也不会生效。普通用户的权限掩码是 0002,超级用户的权限掩码是0022。

超级用户的权限掩码转化为二进制就是000 010 010(--- -w- -w-),也就是说无论你怎么设置权限,最终组或者其他成员都不会具备 “ 写权限 ”。

2、权限掩码的作用过程

假设设置的权限是 mask,权限掩码是 umask,既然umask表示要剔除的权限,那么 ~umask 就表示要保留的权限,那么最终得到的权限就是

mask & (~umask)

假设mask = 0666,当前用户的权限掩码是 0022,那么就有

mask & (~umask) = 110 110 110 & (~000 010 010)

                             = 110 110 110 & 111 101 101

                             = 110 100 100

因此,最终文件权限是 110 100 100,转换成八进制就是0644.

3、设置权限掩码的两种方式

(1) umask 命令设置权限掩码

umask命令的格式如下:

umask   [ 权限掩码 ]

直接输入 umask 指令可以查看当前用户的默认权限掩码

umask xxx 代表将默认权限掩码改为 xxx

 

(2) umask 函数设置权限掩码

umask函数的声明如下:

umask函数的参数也是权限掩码,成功返回之前的权限掩码,失败返回一个小于0的值。

比如我们将权限掩码设为0

if(umask(0) < 0)
{
    perror("umask");
    exit(-1);
}

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

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

相关文章

【java基础系列】14- Java的内部类与常用类

Java的内部类与常用类 1、内部类 1.1 内部类的分类 成员内部类静态内部类局部内部类匿名内部类 1.2 什么是内部类&#xff1f; 概念&#xff1a;在一个类的内部再定义一个完整的类。特点&#xff1a; 编译之后可生成独立的字节码文件。内部类可直接访问外部类的私有成员&a…

【HIT-OSLAB-实验报告】

文章目录前言实验 0 环境的搭建实验原理&材料实验流程建议实验1 输出硬件参数实验内容基础知识实验代码实验结果实验2 实现系统调用实验内容whoami()评分标准基础知识实验代码实验结果实验3 进程运行轨迹的跟踪实验内容基础知识实验代码实验结果结合自己的体会 从程序设计者…

Elasticsearch

一、Spring Data 1、简介 Spring Data 是一个用于简化数据库、非关系型数据库、索引库访问&#xff0c;并支持云服务的开源框架。Spring Data 可以极大的简化JPA的写法&#xff0c;可以在几乎不用写实现的情况下&#xff0c;实现对数据库的访问和操作。除了 CRUD 之外&#xff…

作业-11.29

将txt中的单词转到数据库中 #include <stdio.h> #include <sqlite3.h> #include <stdlib.h> #include <string.h> void do_insert(sqlite3* db, int id, char word[], char jieshi[]); void txt_todatabase(sqlite3* db); int main(int argc, const ch…

DevExpress FMX Data Grid全面编辑和定制

DevExpress FMX Data Grid全面编辑和定制 FMX数据网格(CTP)FireMonkey(FMX)的高性能数据网格组件&#xff0c;具有集成的主细节和数据分组支持。它被优化并构建为与RAD Studio/Delphi/CBuilder一起使用。它支持Windows、Android和macOS平台。 DevExpress FMX数据网格功能强大&a…

redis介绍和理解

官网 介绍: https://www.bilibili.com/video/BV1Fd4y1T7pD/?spm_id_from333.337.search-card.all.click&vd_source4c263677a216945c0d21ca65ee15a5f9 Redis是一个key value的数据库&#xff0c;基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库。 https://ww…

【Java+LeetCode训练】binarySearch源码解析

二分搜索Arrays.binarySearch(int[] a,int key)源码分析【LeetCode】209. 长度最小的子数组解法1&#xff1a;前缀和 暴力解法解法2&#xff1a;前缀和 二分搜索序&#xff1a;使用Arrays工具类中的binarySearch方法进行二分搜索时&#xff0c;我们知道搜索成功会返回其下标&…

数字化餐饮| 刘大厨湘菜馆进杭州,开场及巅峰

盼了几年的刘大厨辣椒炒肉终于来杭州了&#xff0c;但我却没有吃到&#xff0c;小钱对雨科网说&#xff1a;驱车三十里&#xff0c;排队三小时都没吃上&#xff0c;原来他们是每天10点开始放号&#xff0c;11点开餐&#xff0c;去的晚就吃不到。 5月20日&#xff0c;刘大厨在杭…

5G无线技术基础自学系列 | 5G上行物理信道和信号

素材来源&#xff1a;《5G无线网络规划与优化》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 5G上行的物理信道包括PRACH、PUCCH、PU…

产品经理要不要考PMP?进化你能力的阶梯!(附:新版考纲及教材)

产品经理和项目经理看起来是毫不相关的两个专业&#xff0c;那么产品经理要不要考PMP呢&#xff1f;其实是非常有必要的。 以前去面试产品经理&#xff0c;HR只会问1个问题&#xff1a;会用axure吗&#xff1f;一开始对产品经理的定义就是设计产品原型的。能设计产品原型&…

【附源码】计算机毕业设计JAVA中小学教务管理平台

【附源码】计算机毕业设计JAVA中小学教务管理平台 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JAVA …

【北京迅为】RK3568开发板android11系统固件讲解

脚本里面写入这些内容&#x1f446;&#xff0c; apt-get install uuid 后面就是包名&#xff0c;比如说安装了这些内容uuid 在安装之前先执行这个命令增加下载源&#x1f447; 这里会提示&#xff0c;需要输入 回车继续&#xff0c;还是输入 Ctrl-c取消 当然要输入回车继续…

51单片机学习笔记4 新建工程及点亮LED实战

51单片机学习笔记4 新建工程及点亮LED实战一、使用keil新建工程二、项目设置1. 点击魔术棒&#xff0c;钩选Output-Create Hex File2. 设置仿真器三、编写代码1. 尝试编译代码2. 点亮LED的代码3. GPIO引脚介绍4. GPIO内部结构P0端口&#xff1a;P1 端口四、软件仿真一、使用kei…

aws cloudformation 理解自定义资源的使用

资料 AWS::CloudFormation::CustomResourcecfn-response module 自定义资源的逻辑 cloudformation只能对aws service进行部署和配置&#xff0c;但是用户可能需要使用第三方产品&#xff0c;此时需要通过自定义资源将其纳入到cloudformation的管理中。通过编写自定义逻辑&am…

为什么我们提供了新的公共镜像库

众所周知&#xff0c;建木在项目初期就已经完成了“自举”&#xff0c;就是使用建木完成自身的全部CI/CD/CO等自动化流程。 另外&#xff0c;由于建木本身和官方支持的节点都是打包为镜像发布到Docker Hub上&#xff0c;结果最近半年我们频繁碰到如下场景。 场景一 “CI服务的…

flink程序执行管理-1.13

1. 版本说明 本文档内容基于 flink-1.13.x&#xff0c;其他版本的整理&#xff0c;请查看本人博客的 flink 专栏其他文章。 2. 执行配置 StreamExecutionEnvironment 包含 ExecutionConfig 对象&#xff0c;该对象允许程序指定运行时的配置值。改变默认值可以影响所有的任务…

【Nginx 原理】进程模型、HTTP 连接建立和请求处理过程、高性能、高并发、事件处理模型、模块化体系结构

Nginx 原理 Nginx 以其高性能&#xff0c;稳定性&#xff0c;丰富的功能&#xff0c;简单的配置和低资源消耗而闻名。 Nginx进程模型 Nginx 是一个多进程的模型&#xff0c;主要分为一个 Master 进程、多个 Worker 进程。 Master 进程&#xff1a; 管理 Worker 进程。 对外…

TKE 超级节点,Serverless 落地的最佳形态

陈冰心&#xff0c;腾讯云产品经理&#xff0c;负责超级节点迭代与客户拓展&#xff0c;专注于 TKE Serverless 产品演进。 背景 让人又爱又恨的 Serverless Serverless 炙手可热&#xff0c;被称为云原生未来发展的方向。信通院报告显示&#xff1a;在核心业务中使用 Server…

[oeasy]python0022_ python虚拟机_反编译_cpu架构_二进制字节码_汇编语言

程序本质 回忆上次内容 ​python3​​ 的程序是一个 5.3M 的可执行文件 我们通过which命令找到这个python3.8的位置将这个python3.8复制到我们的用户目录下这个文件还是能够执行的 将这个文件转化为字节形态 确实可以转化但是这个文件我们看不懂啊&#xff01;&#xff01;&a…

【应用多元统计分析】上机四五——主成分分析因子分析

目录 一、主成分分析 1.princomp命令 2.screeplot命令 3.【例7.3.3】对【例6.3.3】中的数据从相关矩阵出发进行主成分分析 ​编辑&#xff08;1&#xff09;代码 &#xff08;2&#xff09;碎石图 &#xff08;3&#xff09;散点图 二、因子分析 1.载荷矩阵求解 &…