在我们使用Linux创建文件时;我们可以看到文件信息的最前面有一行由字母组成的一串信息;它表达出来的意思就是我们的文件权限的展示。
权限是用来约束人或者对象的;使用者只能在规定的权限下进行操作;而超出权限范围的事情则无法做到。文件权限=人;文件属性。
人分为三种;拥有者;owner;;所属组;grouper;;其他人;other;
而我们今天详细要说的就是文件属性了;从上面的图可以看出;Linux的文件类型是由十个字母组成的;每个Linux文件具有四种访问权限;可读(r)、可写(w)、可执行(x)和无权限(-)。
利用ls -l命令可以看到某个文件或目录的权限;它以显示数据的第一个字段为准。第一个字段由10个字符组成;如下;
drwxrwxr-x
第一位表示文件类型;-表示文件;d表示目录
第二到第四位表示文件所有者的权限;u权限
第五到第七位表示文件所有者所属组成员的权限;g权限
第八到第十位表示所有者所属组之外的用户的权限;o权限
由于Linux和Windows的文件的后缀差别很大;所以我们在Linux中创建文件时;给文件名称后面加上后缀;仅仅是为了给用户做一个提示;表示它的文件类型;在Linux看来这也只是一个名称。
我们只需要通过查看第一列的第一个字符来区分文件类型
Linux的文件类型;
- ;表示普通文件;源代码;库文件;可执行程序;文档压缩包等等;
d ;目录文件
c ;字符设备文件;比如;键盘;显示器。。。;
b ;块设备;磁盘;
l ;链接文件;快捷方式;
p ;管道文件
s ;socket文件
如果我们想要获得或减少拥有的权限呢?
1.设置文件属性 chmod
2.设置文件所属角色 chown/chgrp
chmod (a/u/g/o) (;/-) (r/w/x) 文件名
通过chmod u-rwx a的指令;我们的a文件中拥有者的权限就都没有了。
拥有者 所属组 other
r w x r w x r - x
1 1 1 1 1 1 1 0 1
从上面的信息我们可以了解到;当我们拥有的权限在数字中表示1;没有则表示0;再通过八的二进制的方案转换;所以上面的权限数字表示法为775。
然后我们便可以通过数字法来进行权限修改了。
为什么我们创建的目录或者普通文件;默认权限是我们所看到的样子呢?
在Linux规定中
目录的起始权限是777
普通文件的起始权限是666
在起始权限之下;系统还有一个叫umask权限掩码
第一个0我们不用管;我们只关心后面三个数字
umask -- 系统默认会配置好umask权限掩码;凡是在umask中出现的权限;都必须在起始权限中去掉。002转化成二进制就是000 000 010;那么放在777去掉other权限就变成了775;666就变成了664;所以我们看到的默认权限就是现在这个样子。
我们也可以修改umask的后面三个数字来修改新创建时的默认文件权限。