00:01
大家好。欢迎大家继续收看上硅谷的云计算课程,我是沈超老师。这节课呢,我们继续来学习这个权限。那这节课呢,我们来讲一个叫做u mask的默认权限。来各位。Linus的这个基本权限有六种,我们前面首先讲的就是这个读写执行的基本权限,对吧,读写。执行,那接下来呢,我们学的这个东西叫做u mak默认权限,那讲完这两个之后,后面其实还有四种权限,那我们后面有专门的权限章节,我们来讲,那这两个东西呢,为什么要放在常规定位的讲,因为第一它还不是太难,虽然是有点绕。第二呢,它常用我们在前期的时候就要会,否则让后面的很多实验就做不了,那我们今天呢,来学习的这个u mask默认权限,那这是一个什么权限。或者说这玩意儿是干什么的?
01:00
那。我们。来做这样一个实验,来,各位看一下。我这里新建一个文件,比如说HDK那。我们来看一下这个HJK。来,我们可以看到看到什么。新建的文件,我从来没有碰它。我也没改它的权限,我也没动它,新建完它直接就有权限,对吧,那我们把这种权限叫做默认权限。那也就是说。我们现在要保证,不论是Windows还是Windows都一样,要保证我们系统当中所有的文件都要有权限,包括你新建立的权限啊,这个文件或者目录都要有默认权限,这就是默认权限的这种做法。各位。那我们的Linux是如何得到文件的默认权限呢?它是通过一个叫做u mask的这样一个值来得到和获取的,那各位这个权限呢,我们先说啊,各位。
02:03
基本上不用你改。就说系统默认设置好了是挺好的。哎,是挺好了,你只要能看懂就行,但是这个还是需要你知道,你需要知道系统下为什么我们所有的文件,新建文件和新建目录都有权限,就是这个原因。好了,那我们先来试一下,直接我们使用UMAS肯定列会直接回撤,它是用来查询我当前系统的u mask权限的,哎,各位,我们前面讲的权限755644,是不是就三个数。而这里查出来是四个数,证明我们还有部分权限没有讲,那我说了,这些权限我们在后面有专门的章节来说,所以暂时你可以忽略第一个数,你不理他就行了。我们就可以理解,我们后面这个数,就第一个数先不理它,我们后面这仨就是我们现在要用的这个u must权限,至于第一个是什么,我们后边的权限章节率我们再详细说,好吧,那好。
03:05
这是我们当前得到的u ma值啊,这是我的U的值,那它是如何决定我新建的一个文件,它的权限就是644的呢?那我们来看看它的规则。那我们来看看他的计算方法。首先。我们需要了解一下默认的最大权限什么意思,各位系统认为对文件来讲,执行权限是有风险。所以我们系统是不允许你新建的文件,你一建立完文件就有执行权限的。那也就是说我的系统允许最大的权限,对文件来讲,最大的权限是六,那也就说就是666,听明白了吗?那也就是说,如果你打算让这个文件有执行权限,你必须是先建立这个文件。
04:00
然后再给他加入执行权限,才能给这个文件复执行。而系统是不允许你建立的,同时就拥有执行,这是不行的,这个是不行的,听明白了,这就是为什么说系统新建立的文件对文件来讲最大权限是六。而不能是气。但是啊,各位。执行权限对目录,而且仅仅只代表进入目录,所以对目录来讲是没有风险。所以你新建的目录。它的最大默认权限可以是其听明白了。听明白了,我再说一遍啊。因为执行权限对文件来讲是有风险,所以系统是不允许你建立的,同时就给这个文件给执行权限,它只允许你先建立文件,后面手工来加入执行,所以对于文件来讲,最高权限就新建的默认最高权限96。而对目录来讲没有这个风险,所以目录的最大权限是七好,那各位我们看到一件事啊。
05:06
我说最大权限是六。对吧,而这个值是022对吧。而我们新建完的文件是64啊,在这简简单了,咋咋算出来一减就是64对吗?课外答案不对。答案是错的,不是这样的原因,那我问你啊。我用mask来修改一下,我的这个用mask值,各位这种方法是临时修改,哎,我前面说过了,要想永久修改怎么办?是不是要写入它对应的配置文件对吧,那到底是哪个配置文件,我们待会儿说啊,现在先看这个临时改一下看改完。改了对吧,那我touch一个新的文件UIO,那好,那我现在问你,我UIO的默认权限是多少。那如果按你刚刚想的666。
06:00
对吧,那减去现在是033,那减完之后是不是就是633了。对吗?三是什么。三可是二加一写加执行,而我们前面说了。对文件来讲,不允许默认建立的时候就是执行。对吧,所以啊各位这个事儿可能是有问题的,那我们看一下看下单看,发现就算u max时是033,这个UIO的权限依然是644。而不是你想象中的633,所以这就足以证明它绝不是拿这个666和你的u max值相减做数字相减得出结果绝不是,那它到底是怎么算出来的这个权限呢?各位?Linux在真正计算u ma可持的时候,它采用的是二进制逻辑运算,做了两次,先进行了一次逻辑运算,再进行了一次逻辑非的联合运算,才得到你新建文件的权限。
07:04
过来。这种运算对计算机来讲极其的这个迅速,不基本上不消耗任何资源,原因我们现在计算机的运算速度极快,像这么简单的速度对计算机来讲甚至就可以认为是瞬间完成,根本就不需要消耗手机。但是。对人来讲,这玩意儿可就要了命了。我们如果真的是人,也是先一次逻辑,再一次逻辑飞,首先不说计算多的,这个快慢肯定是很慢,其次呢,出错的几率也很高。所以各位。我们并不推荐就按计算机的方式来算,其实我说那怎么办,那各位官方给我们给了个建议,说啥你可以不用按计算机的方法来算,你干嘛,你把这个权限。给它换成字母。
08:00
用字母来减,得出的结果就不会有问题。各位。我们推荐这样来算,这是官方给的建议,这样的算法比这个人容易理解,OK,换句话说,我再说计算机实际上是这样算的。那我们人这么算起来很痛苦,那怎么办?用这种方法算结果会和他是一样的,所以我们推荐,如果我们需要理解的时候,就这样算就行了,把它换成字母,OK,好,那我们看看。666文件的默认权限最大是666。右值是零杠二,那么换成字母读写读写读写减去空就是所有者是没权限,然后所属组合其他人是写写完啊。那就是读写。减去空,那减完是不是就是读写。读写减去写减完是不是就是读哎,这样得出来它的文件的权限是644,那刚刚说啊,如果是033,那是不是就刚刚就不行,对吧,用数字解释不行,那看看字母。
09:07
666同样是这样的,那0333呢,就是写和之行对吧,那先看读写。减去空得出来的是读写。那读写减去写直行。那么读减空,那么肯定是不是就是多写减,写减出来是不是就是空,那空减去直行,得出来是负直行。那哪有权限,没有,所以这里也是空,所以剪出来就是蜘株,看明白了。哥们。记得这个事儿就没有负权限,写完如果是负,那它就是空权限,明白了各位我再说啊,这种算法是为了让人理解官方给的建议,那我们也建议你这么算。但是实际计算机是做两次联合逻辑运算做出来了,这个就更麻烦。所以。
10:00
这个事大家了解,那如果是目录呢?看着目录的是最大,因为是最大默认是777U8是零二,所以亲切减去零二,得数就是七五。对吧,这是目录好。这个事儿啊,超哥再说,呃,不是说是一定要会算,其实我只需要你知道,系统是通过u mask来让我们所有的新建文件和新建目录,保证它有默认权限。大家知道这个事儿可能就行,其实真的不用你改,默认人家设的这个挺好对吧,那像我刚刚改完这个实验啊,我把它记得改回来啊,022对吧,把它改回来,但是我前面说了,我说这样修改它是临时修改。重启就没有了,对吧,那要永久修改怎么办?我们前面说了linus下一切性文件,所有内容都是文件,那要永久生效怎么办?写入最定的配置文件写在哪呢?这这样一个文件一起C下的profile。
11:05
各位。一切C下的普通文件。这是一个环境变量配置文件,什么叫环境变量配置文件?就是这里面改的内容会影响你当前系统的操作环境,比如说u max值,如果他改了你当前这个环境,是不是所有新建文件、新建目录都受它的影响对不对?所以叫环境变量配置文件。各位。环境变量配置文件并不止这一个。我们默认是有四个环境变量,配置文件加一个目录,里边有好多文件都可以修改。那我们暂时就是用到哪个说哪个,但是我们最后再讲12编程的时候,会总结一下,这东西其实是12编程当中的部分内容,OK,好,你先记得这个事儿,好,那打开。打开之后你会发现一件事,啥事,这里面写的是纯善脚本,可能看不太懂啊,没事啊,我来举个例子,我来告诉你,其实没那么难。
12:07
这一段内容就是用来定义u must的。看到。其实我说啊,程序跟人其实最大的区别就在于他要把你人的说话方式转变成计算机的说话方式。让计算机能听懂你在说什么,这个东西才可以正常使用,OK,其实也没那么难理解。计算机语言是这样的,看。如果。你定义的这个条件成立。那么执行这个值。否则执行这个字,然后用这个结尾,哎,12程序跟其他语言不太一样,其他语言都是打括号啊,用括号来标示一段,而我们这个是用这个把if反过来写,然后代表结尾格式而已啊,那如果它进立了个什么条件呢?如果。
13:02
你的用户的UID大于199。各位。我们说啊,不论是文件还是用户,文件名和用户名都只是给这个给管理员用的。Linux系统靠的可是ID号啊,对于用户来讲靠的是UID,对文件来讲靠的是ino的号,对吧?那。它是靠ID号来识别用户,而不是靠用户名,那root的u ID root的ID号是多少呢?各位,Root的ID号是零,哎,代表这是超级服,那普通用户的ID号呢?普通用户的ID号呢,会大于500,从500开始计算,500以内的都是留给系统用户,那这里说了,如果你的登录UID大于199,那你就可以看到。Root的时候小于普通用户的时候是大于,那大于的人用maxx值是002,小于的人是002啊零二,那我们看root是不是小于,所以它是零二,至于后面这个并发条件可以不理它,它它判断的是这个用户的UID和JD是相等的,否然后才可以计算这个可以不理它,不起作用,那我们就说这里,就说这儿,那我们可以看到。
14:19
那证明普通用户的用max值应该是002,超级用户的是零是吗?来我这里有个普通用户对吧,我们用mask值查一下。他是零二。而且这个时候我在用我普通用户创建一个,呃,这个这个普通文件我们可以看到。看他这个文件。这里是664。看到了,因为666换成字母减去002,是不是就是664看到了。而我们超级用户的U值是是零二啊对吧,那如果你真的要想永久修改,改这个位置就行,看懂了吧。
15:05
看懂了吧,其实我还是这句话,You askk,只是,只是它会默认生效,而且重要度很高,但是真不需要你用户接入。你能看懂他知道大概是什么东西就行了,甚至不需要你改系统,默认给的这个就是很安全,就挺好,建议你去用这个行。那我们这节课呢,讲了一下u max可值的这个作用和u max值的计算方法,然后呢,如果要想临时修改它,直接用mask直直接用mask直接算就行了,用命令如果永久修改呢,需要你修改这个环境变量配置文件。好,这就是我们这节课的内容,我们下节课再见。
我来说两句