文件或目录权限命令:chmod与umask及chown

image.png文件的属性和权限的设置对于linux系统来说是相当重要的,如果对这一块的知识没有一个深入的了解,你的系统就有可能有很大的危险。那么首先我们来看一看文件的属性所对应的都是什么意思吧。

1.png

上图第一个字符是d,他代表了文件的类型,d的意思就是目录文件,那么除了目录文件还有什么文件呢?

d:表示是一个目录 

-:表示是一个文件

 l:表示是一个链接文件

 b:表示是一个可以存储的接口设备

 c:表示是一个串行端口设备(键盘,鼠标)

文件类型具体的介绍可以在之前写的linux中的文件类型和目录属性去了解。

接下来的九个字符以三个为一组分别是

image.png

红色方框的【rwx:所有者的权限。】绿色放款的【r-x:所属组的权限。】紫色方框的【 r-x:其他用户的权限。】 

它们所表示的是:r(read):可读取 ;w(write):可写入; x(execute):可执行。如果不可写或不可读或不可执行都使用“-”来表示,如上图的所属组与其他用户的权限【r:可读,-:不可写,x:可执行】,权限可以用数字表示,每一组的权限都是由三位的数字相加,“r”用数字表示:r=4;“w”用数字表示:w=2;“x”用数字表示:x=1。比如图上的红色方框的所有者权限“rwx”要用数字来表示则:rwx=4+2+1;所有者的权限用数字来表示那就是“7”。又如所属组与其他用户的权限用数字又怎么表示呢?不可执行的“-”在数字上表示的话是“0”所以,所属组的权限使用数字表示:r-x=4+0+1;所属组的权限数字表示那就是“5”。这么说,这个文件要完整使用数字表示权限就是三组计算的值拼起来:755。

所以上面这个文件的所有者是root。他对文件可读可写可执行。文件的所属组是root,root组内成员可读可执行,其他用户 对该文件可读可执行。

修改文件或目录的权限:chmod

文件权限的改变可以使用chmod这个命令,但是权限的设置方法有两种,分别可以使用数字或者是符号来进行更改。

命令使用格式

chmod [OPTION]… OCTAL-MODE FILE…

如要改变1.txt文件的权限所有者可读可写可执行,所属组与其他用户都不可读不可写不可执行,如下图:

image.png

命令上的“u”表示所有者,“g”表示所属组,“o”表示其他用户,接下来用数字方式来修改2.txt文件权限也跟1.txt权限一致,数字表示所有者可读可写可执行:rwx=4+2+1=7,所属组与其他用户:不可读不可写不可执行:---=0+0+0=0,那么三组拼起来就是:700.命令如下图:

image.png

umask

系统有一个概念叫做umask,直接运行一下umask命令如下图:

image.png

这是系统root用户的umask值,,通过这个值我们就可以确定一个文件或目录的权限是什么,这个umask值也是可以修改的,比如修改为0002,简写002如图:

image.png

这时我们创建一个文件来看看,如下图:

image.png

未修改umask值时,默认touch一个文件时,它的默认权限是rwx------,也就是700,修改umask值后默认权限改变了,变成了rw-rw-r--也就是664,在创建一个目录看看这个目录权限是什么

image.png

xunnet目录是未改umask值所创建,它的权限是rwxr-xr-x也就是755,修改umask值后的xunnet1目录权限是rwxrwxr-x也就是775.

以上得意得出一个规律,目录为什么必须有"x"权限,不管是所有者,所属组或普通用户都必须有"x"权限,目录相当于windows下的一个文件夹,那么目录下面有文件也有子目录,如果想要查看目录里边有什么内容,是不是要先进入这个目录呢?进入目录其实就是执行这个目录,所以它不管是所有者,所属组或普通用户都必须有"x"权限,如果没有"x"权限,我们连目录浏览都不能浏览,与文件是不一样的,文件有"x"权限你才能执行,但是目录有"x"权限才能去打开浏览它。所以在这有了一个概念,目录就用777减umask值(777-022)得出755,而文件呢就用666减umask值(666-022)得出644。那umask值变成刚刚修改的002,文件是不是666-002=664。这计算貌似是这样的规律,但实际上是不对的,假如把umask的值修改为003,再创建一个文件如图:

image.png

那003.txt权限是:rw-rw-r--也就是664,按照刚才的推测是不是666-003呢?是不是应该是663呢?实际这个文件的权限呢?这样计算就不对了,那应该怎么样计算才能得到一个正确的权限呢?把666改变一下:666:(rw- rw- rw-)-003(--- --- -wx)=rw-rw-r--=664,怎么计算的呢?是这样计算的,九位数来相对应相减,如果r减r它的结果就是“-”,w减w或-减-也一样等于“-”那么本身是“-”(什么也没有的)减r,w或x时同样也都是什么都没有所有结果是“-”,那么前边所有者与所属组的rw- 减umask值的所有者与所属组的---得出rw-,前边其他普通用户的rw-减去后边其他用户的-wx得出r--,所以结果是:rw- rw- r-- 也就是664.那么目录又是什么权限呢?我们可以计算一下777转变为:rwx rwx rwx ,003转变为:--- --- -wx

那么rwx rwx rwx 减去--- --- -wx等于rwx rwx r--也就是774.我们创建一个目录来验证一下,如图:

image.png

结论:umask是用来决定我们创建文件或目录的默认权限,通过umask值怎么判断我们默认的文件或目录权限呢?就是通过减法,当然是不能直接使用数字去减,而是用九位的权限位去减,还有一个原则就是九位权限的“-”,它减去权限位上的r、w或者x,它依然什么都没有,结果依然是权限位的“-”。

一般都是使用数字方式来修改权限,方便很多,建议大家也一样都是数字方式。

常用选项

-R: 递归修改权限(意思就是当你修改一个目录的权限加上-R时,这个目录下所有的目录或文件都被修改)

修改一个文件的权限是用不到这-R的选项,当在修改目录权限时,这个-R选项大有用处,一般要修改一个目录的权限时,该目录下的子文文件以及子目录也需要跟随改变,比如FTP等。

先看看给一个目录修改权限不加-R选项的效果,如下图:

image.png

加上-R选项,如下图:

image.png

不管是xunnet这个目录设置了777,其目录下的所有子文件或子目录都跟着改变。

更改所有者和所属组chown

语法:chown 所有者:所属组  目标文件或目录。如要修改tmp目录下的xunnet目录的所有者,为xunnet这个用户,不更改所属组,如下图:

image.png

-R 递归,加上这个选项后其目录下的所有子文件或子目录都跟着改变,先看看上图没加选项-R改变xunnet目录的所有者后,它的子目录或文件是什么情况:

image.png

没加-R选项修改所有者为xunnet,这仅仅是修改了xunnet这个目录的本身,并没有对这个目录下的子文件或目录一起修改,加上-R后就是递归修改在目录下所有的子目录与文件,如下图:

image.png

chown不仅可以修改所有者,且还可以修改所属组,如把tmp/xunnet目录也修改一次所属组,如下图:

image.png

同样加上选项-R,与权限修改的参数选项-R一致的意思,都是递归修改该目录下的所有子目录和子文件,如图:

image.png

如上图,我们看到chown :xunnet /tmp/xunnet/ 。这里先说说语法,chown 所有者:所属组 目标   。这里所有者与所属组使用英文状态下的冒号":"隔开,如果只想修改所有者或只想修改所属组,可以这样使用,只修改所有者【chown 所有者 目标】,所有者修改是不需要加冒号的“:”。同样只修改所属组【chown :所属组 目标】。
 现在把所有者全部修改为“root”,如下图:

image.png

现在又把所属组修改为“root”,如下图:

image.png

有时候也会看到这样写【xunnet.xunnet】,r这样写与【xunnet:xunnet】 的作用一致,如下图。把所有者与所属组修改为xunnet,如下图

image.png

有个chgrp也是修改文件或目录的所属组,语法与chown一致,如图:

image.png

不过chown都能干chgrp的活,所以基本都没有chgrp。了解即可!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.gzievs.net.cn/post/44.html

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。