大家好,又见面了,我是你们的朋友全栈君。
目录
查看文件权限可以通过ls -l命令查看,如下所示:
如果只想查看某一个文件的权限,可以使用grep,如下所示:
可以发现,每一个文件的第一个字段都是由r、w、x等10个字符构成,这10个字符所组成的字符串反映了文件的权限。
在linux下,文件权限分为三种:可读权限(read)、可写权限(write)以及可执行权限(execute),三者分别对应的字符为r、w和x;
除此之外,文件权限身份也分三种:文件所有者(user)、文件所有者所在组(group)以及其他(others),这里所说的“其他”,就是指的非文件所有者及其所在组的用户。在上述查询结果中的第3个字段和第4个字段分别反映了该文件的所有者以及文件所有者所在组。
现在再来说说如何通过每个文件第一个字段中的字符串来了解文件的权限。
整个10个字符分为以下4个部分:
①第1个字符。描述文件\目录 类型,如果为‘-’则表示这是一个文件,如果为’d’表示这是一个目录;
②第2~4个字符。这3个字符为一组,按照顺序描述了文件所有者对该文件的可读、可写和可执行权限;
②第5~7个字符。这3个字符为一组,按照顺序描述了文件所有者所在组对该文件的可读、可写和可执行权限;
②第8~10个字符。这3个字符为一组,按照顺序描述了其他身份对该文件的可读、可写和可执行权限;
也就是说,第1个字符反映了文件类型,后面9个字符每3个字符为一组,分别反映了文件所有者、文件所有者所在组和其他身份对该文件的可读、可写和可执行权限,如果为‘r’表示可读,为’w’表示可写,为’x’表示可执行,为’-‘表示无相应权限。
以上面的client.cpp为例,第一个字段为”-rw-rw-r–“,它的含义表示:这是个文件(非目录),文件所有者可以进行读和写但是不能执行(对应“rw-”),文件所有者所在组可以进行读和写但是不能执行(对应“rw-”),其他身份可读但不可写也不可执行(对应“r–”)。
修改文件权限使用chmod指令。该指令常用的有两种使用方式:
1.chmod abc filename
指令中的a、b、c分别表示一个数字,其中a对应文件所有者权限,b对应文件所有者所在组权限,c对应其他身份权限。
对于a、b、c各自来讲,它们都是0~7的数字,对应r、w、x三个二进制位按序组成的二进制数,举个例子,如果是只可读,对应的二进制数就是“100”,也就是4;如果是可读可写不可执行,那么对应二进制数为“110”,也就是6……
再举个最常见的chmod 777 xxxx指令,这里有3个7,但是每个7的含义是不同的。7的二进制形式为111,表示可读可写可执行,第1个7表示文件对于文件所有者来说可读可写可执行;第2个7表示文件对于文件所有者所在组来说可读可写可执行;第3个7表示文件对于其他身份的用户来说可读可写可执行。也就是说,通过chmod 777,文件就没有了读写执行权限限制了。
如果我要将上述client.cpp文件权限改为“文件所有者可读可写可执行,其余身份只可读”,那么就可以使用如下指令:
chmod 744 client.cpp
2.chmod u/g/o/a +/- r/w/x filename
该指令除了chmod和filename之外,还有三个部分:
①描述文件权限身份。u表示文件所有者、g表示文件所有者所在组、o表示其他用户、a表示三者全部。可以搭配使用,如ug表示文件所有者及其所在组;
②指定权限配置行为。‘+’表示添加权限,‘-’表示删除权限;
③权限类型。分别对于可读可写可执行。
举个例子,通过chmod的第一种方式,我已经将client.cpp的权限改为“文件所有者可读可写可执行,其余身份只可读”,如果我现在想删除文件所有者的可执行权限(u -x),增加文件所有者所在组和其他身份的可写和可执行权限(go +wx),就可以使用如下指令:
chmod u-x,go+wx client.cpp
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/164470.html原文链接:https://javaforall.cn