【我的技术我做主】浅谈linux中umask值及其对应的文件权限

简介:

 最近刚好系统学习到linux文件权限这一块,在“umask值及其对应的文件权限”这一个问题上,找过视频看(老男孩老师的视频,强烈推荐),也看过鸟哥的书,当然也在网上找了找,发现计算方法都是多种多样的,但是个人觉得掌握一种就好了,看了各种方法,觉得其实大多数都是在找规律,不是找规律的又实在是太复杂,因此个人感觉不太好记,时间一长可能就忘记了,于是就根据自己的理解,做各种测试,发现有了如下更好的方法。(从理解和记忆的层次上更好的方法)


 1.问题引出:设置umask为004与005时,创建的文件默认权限都是一样的

设置umask为004的情况:

1
2
3
4
5
6
[root@xpleaf right]# umask  005
[root@xpleaf right]# umask
0005
[root@xpleaf right]# touch 005file
[root@xpleaf right]# ls -l 005file 
-rw-rw--w-  1  root root  0  7 月   29  12 : 19  005file

这里的分析,为了简便,我都是只关注others的权限来进行分析。

由上面的输出可以看到,others的权限为-w-,即为3,由umask的含义(表示拿掉的权限)知,拿掉5,即拿掉了r权限和x权限(由r w x分别对应数字4 2 1知),所以创建005file文件中others的权限即为-w-,也就是2了,这与我们的认知是不相违背的。


设置umask为004的情况:

1
2
3
4
5
6
7
[root@xpleaf right]# umask  004
[root@xpleaf right]# umask
0004
[root@xpleaf right]# touch 004file
[root@xpleaf right]# ls -l 004file
总用量  0
-rw-rw--w-  1  root root  0  7 月   29  12 : 21  004file

根据上面的分析,按道理来说,这里拿掉了others 4即r的权限,那么新创建文件others的权限就应该为-wx,可是这里怎么会是-w-呢?难道系统出错了?

当然不是了,这里也是最关键的问题所在,对此,有如下结论:

  • 对于文件来说,如果umask没有去掉x权限,则系统自动处理掉x权限;

  • 对于文件来说,如果umask有去掉x权限,则系统按正常情况去掉相应权限;

  • 对于目录来说,则不存在这样的情况。

什么意思呢?

拿上面的两个例子来说:

(1)对于设置umask为004的情况,即表示要拿掉(others)r的权限,所以默认权限就应该为-wx才对,可是由于umask没有去掉x权限,所以在我们创建新文件时,系统自动帮我们把x权限拿掉了,因此,创建的文件的权限才为-w-。

(2)对于设置umask为005的情况,即表示要拿掉(others)r和x的权限,此时,umask有去掉x权限,所以我们就按正常情况来处理好了,即创建的文件的权限就为-w-

(3)所以由上面的分析可以知道,设置umask为004和005时,文件的默认权限都是一样的。


2.深入分析:为什么系统会自动帮我们拿掉x权限?

    想一下,我们平时用touch来创建文件,绝大多数都是用来干嘛的?当然是用来存储和记录数据的,因此,这样的文件应该是不能够执行的(即使有x的权限),所以既然如此,在我们创建文件时,就应该没有必要把x权限也加上去了,如果实在需要的话,就自己手动给一个文件加x权限好了。

    于是出于这样的原因,系统就帮我们自动把x权限给拿掉了。


3.建议:用理解的方法去吸收“umask值及其对应的文件权限”知识

    以上的内容(第2点)并非有什么科学依据,只是我自己个人根据实际中测试的结果所做的一个猜测,当然鸟哥的书当中似乎也有在透露这一点(只是感觉不够清晰和明确)。

    我自己作为一个linux的新手,目前正在努力看老师的视频,同时也在看鸟哥的书,个人觉得这样去记忆是比较好的,比如umask是006,由于6表示把r和w权限拿掉,但是没有把x权限拿掉,所以在我们创建文件的时候,系统就把这个x权限也拿掉了,最终ohters的权限也就为---了;再比如umask为3,由于3表示把w和x权限拿掉,有包括x权限,以在我们创建文件的时候,最终ohters的权限也就为r--了。

    我想对于大多数人来讲,这样的方法算出答案应该还是比较快的吧,至少我觉得我不算聪明,但是也可以比较快的口算出来,当然前提是你要知道:1.umask是表示要拿掉的权限  2.r w x对应的数字分别为4 2 1(其实就是二进制的一、二、三位,分别是2的0次、1次、2次方),相比记忆奇数或偶数,我想这样的方法对于新手来讲应该是更能去理解和记忆的。

    当然,上面只是个人的一点看法而已,不过作为新手来讲,真心是建议用这样的方法去理解和记忆。


51cto十周年博客活动正在进行,你也来参加吧

   活动地址http://51ctoblog.blog.51cto.com/26414/1679643

相关文章
|
13天前
|
机器学习/深度学习 自然语言处理 Linux
【专栏】Linux 中的机器学习:Whisper适用于语音助手、翻译等领域,随着技术发展,其应用前景广阔
【4月更文挑战第28天】本文探讨了在Linux环境下,先进自动语音识别系统Whisper的运用与实现高效ASR。Whisper基于PyTorch,支持多语言识别,具有高准确性和实时性。文中介绍了安装配置Whisper的步骤,包括安装依赖、下载代码、配置环境变量及编译安装。通过数据准备、模型训练和识别,可实现语音识别功能。Whisper适用于语音助手、翻译等领域,随着技术发展,其应用前景广阔。
|
14天前
|
Cloud Native Linux 开发者
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
|
2月前
|
Linux Shell 文件存储
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(深入df和dh的区别和探索)
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(深入df和dh的区别和探索)
47 1
|
11天前
|
前端开发 Linux iOS开发
【Flutter前端技术开发专栏】Flutter在桌面应用(Windows/macOS/Linux)的开发实践
【4月更文挑战第30天】Flutter扩展至桌面应用开发,允许开发者用同一代码库构建Windows、macOS和Linux应用,提高效率并保持平台一致性。创建桌面应用需指定目标平台,如`flutter create -t windows my_desktop_app`。开发中注意UI适配、性能优化、系统交互及测试部署。UI适配利用布局组件和`MediaQuery`,性能优化借助`PerformanceLogging`、`Isolate`和`compute`。
【Flutter前端技术开发专栏】Flutter在桌面应用(Windows/macOS/Linux)的开发实践
|
12天前
|
Linux Shell 虚拟化
【Linux学习】Linux 的虚拟化和容器化技术
【Linux学习】Linux 的虚拟化和容器化技术
|
1月前
|
Linux 开发者
Linux技术基础(6)——文件管理
这是一个关于文件管理的实验指南,涵盖了`cat`, `cmp`, `diff`, `file`和`find`五个Linux命令。`cat`用于查看和操作文件内容,例如打印、连接和清空文件。`cmp`比较两个文件的差异,`diff`同样比较文件差异但提供更详细输出。`file`识别文件类型,而`find`则在指定目录中搜索文件。实验可在阿里云开发者平台的给定链接进行。
|
1月前
|
安全 Linux Shell
Linux技术基础(5)——文件与权限
ls命令用于显示目录内容,使用-a选项可以展示隐藏文件。pwd命令给出当前工作目录的路径。cd命令用于切换目录,其中.代表当前目录,而..代表父目录。touch命令用于创建或更新文件的时间戳,同时也可以用来新建文件。mkdir命令用于创建目录,添加-p选项可递归创建嵌套目录。rm命令删除文件或目录,使用-rf选项可强制删除。cp命令复制文件或目录,而mv命令则用于移动或重命名文件。rename命令批量重命名文件。 ls -l命令以详细列表形式显示文件权限,第一列信息表示文件类型和访问权限。chmod命令用于修改文件权限,例如u+x表示为文件所有者添加执行权限。chown和chgrp命令分别用
|
2月前
|
存储 Linux Shell
Linux技术基础(4)——磁盘管理
在阿里云开发者平台的实验中,了解Linux磁盘管理涉及`df`、`du`和`fdisk`命令。`df`用于查看文件系统的磁盘空间,如`df`显示总体使用情况,`df -i`查看inode使用,`df -h`以人类可读的单位显示。`du`则用于查看文件和目录的磁盘占用,例如`du -a`列出所有文件和目录的大小,`du -sh`以人类可读单位显示当前目录总大小。`fdisk`用于磁盘分区,`fdisk -l`列出分区信息,通过交互模式对磁盘进行分区操作。
|
2月前
|
存储 移动开发 安全
【Linux技术专题】「必备基础知识」带你仔细梳理一下平时排查问题查询日志的基本操作和指令
【Linux技术专题】「必备基础知识」带你仔细梳理一下平时排查问题查询日志的基本操作和指令
21 0
|
2月前
|
移动开发 网络协议 Shell
最强优化指令大全 | 【Linux技术专题】「系统性能调优实战」终极关注应用系统性能调优及原理剖析(下册)(一)
最强优化指令大全 | 【Linux技术专题】「系统性能调优实战」终极关注应用系统性能调优及原理剖析(下册)
31 0