linux 下 "chmod 777" 中 777 这个数字是怎么出来的

本贴最后更新于 2048 天前,其中的信息可能已经时移俗易

引言

相信很多同学在 Linux 上执行命令或者写入文件甚至读取文件的时候都会遇到一个错误“Permission denied”,大家一般都会使用“chmod 777”这个命令来消除错误获取权限,那么大家思考过为什么是 777 这个数字吗,这个数字是如何得出的?看完这篇文章后相信大家就会对 Linux 下的权限相关有了非常详细的了解,也可以针对各种情况获取相对应的权限。

Linux 下的用户与群组的概念

大家应该或少的都知道 Linux 是一个允许多用户的操作系统,那么大家有没有了解过 Linux 下的用户分为哪几种呢?说到这里,我们就要提一句话“在 Linux 中任何东西都是文件”,所以可以看出,Linux 是以文件为核心的一个操作系统,那么回到用户类型的问题上来,答案就是 Linux 的用户分为三种,分别是 owner、group、others,翻译成中文就是所有者、群组、其他。针对每个文件都有着 owner、group、others 的三个身份所对应的权限。

Linux 下的文件权限类型以及如何查看文件的权限

相信大家都使用过 ls 命令吧,有时候大家在执行 ls -al 的时候有没有想过每个文件前面那一大段是什么意思呢?,现在我们就来解析一下。举个例子

clipboard.png

这里大概的简要说明一下
第一栏表示文件的类型以及权限,第二栏表示有多少文件链接到这个节点,第三栏表示文件的所有者,第四栏表示文件的 group,第五栏则是文件的大小,第六栏就文件的最后修改时间,接下来就是文件的名称

我们这篇文章的关注重点是第一栏,举个例子,拿 main.go 来说,第一栏文件类型和权限的表示是"-rw-r--r--",这是什么意思呢,我们将这一串字符拆解成第一个、第 2-4 个、第 5-7 个以及第 8-10 个字符,先说说第一个字符,表示的是文件的类型,"-"表示这个是一个文件,“d”表示这是一个目录,“l”则表示这是一个链接文件,当然还有其他的类型,这里我们暂且不关注。
接下来就是拆分的三个字符串,他们是什么意思呢?还记得我们上面讲过的 owner、group、others 吗,这三串字符就是分别表示的这个文件对应这三个身份的的权限。下面我们来讲解一下单个权限字符对应的意思

rwx 是什么意思

上面我们看到,有的文件权限是 rwx,有的却是 rw-,有的是 r--,这是什么意思呢?我们先来说一下 rwx 三个字符分别代表什么,“r”表示可读,即 read。“w”表示可写,即“write”。“x”表示可执行。在 Linux 下一组完整的权限必须是三个字符同时出现的。并且他们的顺序是不会变的,这是什么意思呢,表示不管在任何时候,我们都应该三个三个的去看权限,如果没有某个权限则需要用“-”代替,现在我们知道了,第一栏的第一个字符表示的是文件的类型,接下来每三个字符表示对应身份的权限,拿 main.go 举例,他是一个文件,owner 拥有读写权限没有执行权限,group 有用可读的权限没有写以及执行权限,others 也是拥有可读权限没有写及执行权限。

如何更改文件的权限

还记的我们上面的三种身份吗,那么对应的,更改一个文件的权限也有三种方式,分别是:
chgrp :改变文件所属群组
chown :改变文件拥有者
chmod :改变文件的权限
这里我们只说 chmod,回到文章的标题来,777 这个数字是什么出现的呢。首先我们要知道个权限对应的分值,r:4、w:2、x:1,权限就是对应分值的相加,比如 rwx 就是 4+2+1=7,rw-就是 4+2+0=6,现在大家明白 777 是什么意思了吗?就是分别为三种身份赋予 rwx 的权限,777 这个数字就是这么算出来的。

结语

相信大家通过这篇文章会对 Linux 的用户以及权限有一个了解,以后在工作学习中也可以按照自己的需求制定权限啦,而不是一味地使用 777。

  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    944 引用 • 943 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...