我们之前讲过了权限的简单知识,现在我们来进行详细讲解。
面对如上这张图片,我们今天就通过知识讲解,来把其中的大部分信息学明白
我们都知道,图中第一个符号:即d/-表示为文件类型
之前我们也大概讲过了:d表示为目录文件? ?-表示为普通文件
那么问题来了,后面九个英文又代表什么意思呢?
关于这个问题,由于图中两个文件不同,所以我们先分开讲解。
我们就先拿text.txt文件进行讲解。
上面的九个字符三个为一组,共三组,分别表示为:拥有者 所属组 other
而英文字母的意思我们先学习在了解上面的分组吧。
r:表示为reading,即对于这个普通文件用户有读的权限
w:表示为writing,即对于这个普通文件用户有写的权限
x:表示为可执行权限,这个大家先知道我们后面会讲
具体来说:(我们现在只对普通文件)
r:具有读取文件内容的权限;
w:Write对文件而言,具有修改文件内容的权限;
x:execute对文件而言,具有执行文件的权限
?
现在我们在来看这个图,是不是大家对这九个英文有了更加深入的了解,我们将上面的知识结合来看,前三个英文字母表示为---拥有者对于普通文件的权限,中三个英文字母表示为---所属组对于普通文件的权限,后三个英文字母表示为---other对于普通文件的权限。
那么我们来验证一下吧!
在验证之前,我们先带大家学习两个新指令
1.chmod
?功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
用户表示符+/-=权限字符
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
?
如图:
当然我们也可以连用:
这样我们就可以更改命令了。
现在我们再探讨一个问题?
谁可以更改命令呢?
首先root一定可以更改,其次拥有者也可以更改,其他人肯定是不能改的。
权限存在有什么意义呢?
肯定是用来保护用户文件的安全性的。
好了,现在我们对于十个英文字母有了深入的了解,现在我们要学习后面的内容了,
仔细看最上面的图片,我们发现图中还存在两个名字,请问他们分别代表什么意思呢?
聪明的你一定看出来了,是的,第一个名字表示拥有者,第二个名字则表示为所属组。
学到这里,我们要告诉大家一个概念:
Linux只会对一个用户进行一次识别,如果是拥有者,那么是不会对其是否为所属组进行识别的,这样就可能出现权限问题。
那么我们可以修改拥有者、所属组吗?
现在我们就来带大家认识新的两个指令。
chown
?功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
普通用户需要提权,sudo才行,root才可以直接换
2.chgrp
?功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
其实我们也可以通过八进制来操作。
现在我们对于一个文件的属性大部分都是清楚了,现在我们结合下图理解即可。
我们之前简单讲解了文件类型,那么我们就讲文件有什么类型进行补充:
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
磁盘文件:
c:字符设备文件
在这里我们补充知识点:
我们知道Linux是不像windows哪样以.后缀区分不同文件的,但是我们要注意的是Linux是可能区分后缀的,如gcc,只有以.c后缀才能编译。
我们学完普通文件的权限问题,现在我们是不是该讨论目录文件的权限问题了。
可执行权限: 如果目录没有可执行权限, 则无法cd到目录中.
可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.
?
简单理解:(对于普通用户)
r:用户具有读取目录文件中的内容
w:用户具有向目录文件中写的权限
大家可能会发现我们无论是新建一个目录文件还是普通文件,刚开始就是有一定的权限的,这个就是文件掩码:
umask
?功能:
查看或修改文件掩码
新建文件夹默认权限=0666
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到
umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
格式:umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002
如图:
我们当然可以修改:
我们最终的文件权限等于:开始权限&(~umask)
最后,感谢大家的支持!