linux umask:文件访问权限控制预设值

1. umask 定义

        在 linux 系统中,umask 被定义在 /etc/profile 配置文件中,有一段 shell 脚本对 umask 是这么定义的。在 shell 会话输入命令:

$ cat /etc/profile        # 查看 /etc/profile 配置文件的内容

if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; thenumask 002    # uid 大于 199,并且组名等于用户名 -gn(g:group n:name) -un(u:user n:name),即:普通用户
elseumask 022    # root 用户的 uid = 0
fi

从以上 shell 脚本对 umask 的定义,我们可以知道:

(1)对于普通用户而言,umask 是八进制数(以数字 0 开头的数)002,这个数的二进制表示为:000,000,010。

(2)对于 root(超级用户)而言,umask 是八进制数 022,这个数用二进制表示为:000,010,010。

2. 文件和文件夹的访问权限 = mode & ~umask

        linux 系统在创建新文件夹时,会设置一个默认文件夹访问权限:mode = 0777(八进制数),这个数的二进制表示为:111,111,111。在创建新文件时,会设置一个默认的文件访问权限:mode = 0666(八进制数),这个数的二进制表示为:110,110,110。

        对于这个八进制数的二进制表达与访问权限的对应关系为:每三位为一组,从左往右第一组是拥有者(user)的访问权限、第二组是跟文件拥有者同组的用户的访问权限(group)、第三组是其他用户的访问权限(other)。每组从左往右,第一位是是否可读(1:可以,0:不可以)、第二位是是否可写(1:可以,0:不可以)、第三位是是否可执行(1:可以,0:不可以)。所以

(1)对于普通用户新创建的文件夹的访问权限为:mode & ~umask = 111,111,111 & 111,111,101 = 111,111,101,即对应于在 shell 会话执行命令行 $ ls l- 下显示的:drwxrwxr-x。对于普通用户新创建的文件的访问权限为:mode & ~umask = 110,110,110 & 111,111,101 = 110,110,100,即对应于在 shell 会话执行命令行 $ ls l- 下显示的:-rw-rw-r--。

(2)对于 root 用户新创建的文件夹的访问权限为:mode & ~umask = 111,111,111 & 111,101,101 = 111,101,101,即对应于在 shell 会话执行命令行 $ ls l- 下显示的:drwxr-xr-x。对于 root 用户新创建的文件的访问权限为:mode & ~umask = 110,110,110 & 111,101,101 = 110,100,100,即对应于在 shell 会话执行命令行 $ ls l- 下显示的:-rw-r--r--。

用普通用户创建文件夹,文件验证:

用 root 用户创建文件夹,文件验证:

3. umask 是什么?

        根据以上分析,umask 是 linux 系统对文件和文件夹访问权限控制的预设值。新创建的文件、文件夹的访问权限 = mode & ~umask,默认文件夹的访问权限 mode = 0777,默认文件的访问权限 mode = 0666。默认情况下,普通用户的 umask = 002,root 用户的 umask = 022。

4. 查看当前用户的 umask

$ umask

5. 永久设置 umask

$ vim /etc/profile               // 对 umask 值进行修改

$ source /etc/profile         //刷新环境变量

6. 临时修改 umask

在 shell 会话中,$ umask 002,仅在当前 shell 会话中有效。

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

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

相关文章

iOS 13.2升级后:iPhone、iPad频繁杀后台,怎么解决呢?

编辑|排版| 宅哥技术转载请联系商务合作给你开白名单来源:宅哥技术(zg_jishu) ---------♥--------- 杀后台 现在很多小伙伴都更新到了iOS13.2版本,更新完后很多朋友都说系统杀后台好严重,什么是…

分享如何升级macOS Catalina

了解如何下载和安装最新版 Mac 操作系统 macOS Catalina。 macOS Catalina 让您喜爱的所有 Mac 体验都更进一步。在三个全新的 Mac 应用程序中体验音乐,电视和播客。在 Mac 上畅玩您最喜欢的 iPad 应用。拿起 iPad 和 Apple Pencil 扩展您的工作空间,释放…

LeetCode700. 二叉搜索树中的搜索

700. 二叉搜索树中的搜索 文章目录 [700. 二叉搜索树中的搜索](https://leetcode.cn/problems/search-in-a-binary-search-tree/)一、题目二、题解方法一:迭代方法二:递归 带main函数测试用例 一、题目 给定二叉搜索树(BST)的根节…

升级鸿蒙系统效果,鸿蒙系统初体验 全方位体验升级[多图]

鸿蒙系统是近期华为发布的,这个的话,在更新了以后,就能够看到了,不过只是对于某些适配机型来说是这样,其他的话,是没有的,很多用户都十分的好奇,也是在观望当中,这个的话…

android6.1内存,iPhone 6为何坚持1GB内存?安卓太坑爹!

这个问题说简单也简单,说复杂也很复杂。有人该回答了:“是苹果优化好呗!”说苹果好,里面本身就带着几分“Android呵呵”的意思。而事实似乎并非如此。iOS设备采取了与Android不同的内存垃圾回收机制,因此两者对运存容量…

iPad Pro 11 英寸(2021 年)评测:比笔记本电脑更奢华

Apple 的高端中型 iPad 还没有完全准备好取代您的 MacBook,但我们不否认它是一款出色的平板电脑。那么 11 英寸iPad Pro具体性能如何呢?它能替代MacBook吗? iPad Pro 11in (2021, M1) 全面评测 苹果公司于 2020 年夏季开始,处理器…

牛客题解-------BC99:正方形图案

目录 一、题目相关 二、题目链接 三、题目 题目描述: 输入 输出 样例 四、题目分析 五、AC参考代码 六、共勉 一、题目相关 在对于初学C语言的我来说,对于图形打印一直都有一种未知的恐惧,大家是否跟我一样在开始对于图形的打印只…

Python爬虫:抓取表情包的下载链接

Python爬虫:抓取表情包的下载链接 1. 前言2. 具体实现3. 实现代码 1. 前言 最近发现了一个提供表情包的网址,觉得上面的内容不错,于是就考虑用Python爬虫获取上面表情包的下载链接。整体而言,实现这个挺简单的,就是找到提供表情包…

步入React正殿 - 事件处理

目录 扩展学习资料 React事件和DOM事件 和传统DOM事件处理异同 this关键字的处理 this关键字 在JSX中使用bind方法 在构造函数中使用bind方法 使用箭头函数【推荐】 向事件处理程序传递参数【不跨组件】 向父组件传递参数 /src/App.js /src/components/listItem.jsx…

微信对接系列——微信自动退款

业务背景 关于微信自动退款串接背景基于酷客多多商户系统,系统组成主要有前端小程序、商家后台管理系统、运营商系统等 业务流程 退款单状态:待退款、退款中、退款完成、自动退款失败等 由于微信申请退款接口接受请求后不会立即进行退款处理&#xf…

基于grpc从零开始搭建一个准生产分布式应用(1) - 开始准备

开始前必读:​​基于grpc从零开始搭建一个准生产分布式应用(0) - quickStart​​ 本来笔者并不想开设这个系列,因为工作量比较大,另外此专题的技术点也偏简单。最近复盘了下最近的工作,发现一个问题就是各个互联网大厂一般都会有…

微信小程序开发(十)小程序支付-查询退款

应用场景 提交退款申请后,通过调用该接口查询退款状态。退款有一定延时,用零钱支付的退款20分钟内到账,银行卡支付的退款3个工作日后重新查询退款状态。 接口说明 这里退款还是根据商户订单号-out_trade_no去微信那边查询 代码实现 /** 根…

微信中的这个功能尽早设置,即使转错账也能及时收回!

生活在快节奏的我们,是离不开互联网的,出门在外,旅行,购物,点餐等等都离不开手机中,手机中最不可能缺少的两款APP就是微信和支付宝,不管是微信,还是支付宝这两款软件在大家心目中是不…

Java - 微信支付

首先贴出官方文档,关于介绍,场景,参数说明,可以直接看文档:https://pay.weixin.qq.com/wiki/doc/api/index.html 一. APP支付 官方文档:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter9_1…

JAVA微信退款(JSAPI支付)

上一章咱们介绍了微信支付整个流程,这章就趁热打铁地整理下微信退款(JSAPI支付)相关的知识,为这几章的微信支付画上一个句号把。 前提:从微信公众号那边获取appid,mchid,paternerKey三个参数备…

实例:用C#.NET手把手教你做微信公众号开发(20)--使用微信支付线上收款:jsapi方式

在做线上、线下销售时,可以使用微信便捷支付,通过微信公众号收款有很多种收款方式,如下图: 今天我们来讲一下jsapi支付,场景就是在微信内打开某个页面,完成在线支付,同样一个网页,使…

基于时态差分法的强化学习:Sarsa和Q-learning

时态差分法(Temporal Difference, TD)是一类在强化学习中广泛应用的算法,用于学习价值函数或策略。Sarsa和Q-learning都是基于时态差分法的重要算法,用于解决马尔可夫决策过程(Markov Decision Process, MDP&#xff0…

微信小游戏直播在Android端的跨进程渲染推流实践

本文由微信开发团队工程师“virwu”分享。 1、引言 近期,微信小游戏支持了视频号一键开播,将微信升级到最新版本,打开腾讯系小游戏(如跳一跳、欢乐斗地主等),在右上角菜单就可以看到发起直播的按钮一键成…

辞职信微信html,微信退款处理.html

微信退款处理 $axure.utils.getTransparentGifPath function() { return resources/images/transparent.gif; }; $axure.utils.getOtherPath function() { return resources/Other.html; }; $axure.utils.getReloadPath function() { return resources/reload.h…

php微信退款到银行卡,微信支付PHP开发教程七查询退款

重要:本文最后更新于2019-06-07 08:47:57,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗。 上一篇我们已经学会了如何使用微信支付的退款接口发起退款请求,并且能判断退款成功与否,为了安…