范例中的使用linux版本为 Ubuntu 14.04.4 LTS (GNU/Linux 4.2.0-27-generic x86_64)
什么是文件的权限?
在命令行中输入 ls -la 查看当前目录下所有的文件属性
文件属性开头的前十个编码即为文件的权限 例如mian.cpp文件,该文件的权限编码为- rwx r-- r-- 。
第一个编码为d,则代表此文件为目录文件(文件夹),如果为l 代表是个链接,一般文件则用 - 表示。
第2位编码至第4位编码在mian.cpp中为 rwx ,这三个编码表示为所属用户 的访问权限。
r 则代表读的权限 w 代表写的权限 x则代表执行的权限,所以这也就表明了所属用户享有了读写与执行的所有权限。
第5位编码至第7位编码为 r-- ,代表了所属组的访问权限 。r表示所属组拥有了读的权利,但是第六位编码与第七位编码均为 -- ,这表明所属组没有写与执行的权利。
第8为编码至第10位编码 也为 r-- ,表示了其他组的访问权限 ,这里的其他组权限和所属组相同。
如何修改文件的权限?
chmod可以用于修改一个文件和目录的权限,如果需要改变一个目录及其目录下所有文件(包括子目录)的权限,则需要添加 -r 命令。它以“用户组 +/- 权限” 的表达方式来增加和删除相应的权限。具体来说,用户组包括了文件所属用户(u),文件属组(g),其他(o)和所有人(a),这4个字母在命令中分别代表你想要修改的权限范围。
范例:修改mian.cpp文件 剥夺所属用户的执行权限 增加文件属组的写权限
命令为:
修改前的权限为:
修改后权限为:
修改成功,可以看到所属用户的执行权限x,已经变为了 - ,而所属组增加了w 。此命令修改了该文件两个范围的权限 ,在进行多项操作时请以逗号","隔开。
除此之外还有一种修改权限的方法叫做位修改法,分别使用了0-7来表示不同的权限。前面已经介绍了权限编码的含义,例如第2位至第4位编码代表了 该文件所属用户的权限。
那么用二进制如何来表示呢? 我们可以把第2至第4位编码 看做是三个二进制数字,假设所属用户的权限为rwx,则换算成二进制数字为 111 ,对应的十进制数为 7 ,那么我们在命令中则可以直接使用 7 来表示 rwx 。如果对应的权限为 rw- ,则换算成二进制数字为 110 , 对应的十进制数则为 6
范例:使用位修改法再次修改mian.cpp文件 增加所属用户的执行权限 剥夺文件属组的写权限 其他不变
命令为:
修改前权限为:
修改后权限为:
可以看到在命令中使用了 744 。7 表示所属用户权限 rwx ,4表示所在组权限 r--,最后一个4 表示其他组权限 r-- ,744 则表示rwxr--r-- 。