一、Linux中的文件权限与目录权限
Linux中定义了3种访问权限,分别是r、w、x。其中r表示对象是可读的,w表示对象是可写的,x表示对象是可执行的,这3种权限组成一组rwx分别对应对象的3个安全级别。这3个安全级别分别是对象的所属者,对象的所属组,系统其他用户。比如图1-1所示,文件的权限
图 1-1
二、理解权限(rwx)的位权值
rwx3种权限中,每一个权限代表一个二进制位。其中r权限二进制表示为100,八进制表示为4;w权限二进制表示为010,八进制表示为2;r权限二进制表示为001,八进制表示为1;无任何权限表示为---,即二进制表示为000,八进制表示为0。所以拥有rwx权限即可表示为4+2+1即7,rw-权限表示为4+2+0即6,r-x权限表示4+0+1即5,r--权限即4,以此类推即可获得权限的位权值表示。
三、chmod命令的用法
(1)chmod mode dest_file:改变指定文件或目录的权限,其中mode参数可以使用八进制模式或符号模式进行权限设置。
(2)chmod -R mode dest_file:-R选项可以让权限改变递归地作用到文件和子目录。
下面来说说使用常用符号模式进行权限设置,如下是在符号模式下指定权限的格式:
chmod [ugo][[+-w][rwx]] dest_file
符号模式中第一组字符定义了权限作用的对象:u代表所属者,o代表所属组,o代表系统其他用户,
第二组字符中(+)表示你是想在现有权限基础上增加权限,(-)表示现有权限基础上移除权限,(=)表示将权限设置成后面的值,
第三组字符中即是权限rwx。如下所示
chmod u+w dest_file:给目标文件的所属者增加w权限。
chmod u+wx,g+x,o+w dest_file:给目标文件的所属者增加w权限,所属组增加x权限,系统其他用户增加w权限。
chmod o-w dest_file:给目标文件的其他用户移除w权限。
chmod u=rwx dest_file:不管所属者拥有什么权限,该符号模式给所属者赋予rwx权限。
四、效果演示
首先,在temp目录下创建222.txt文件,对应的权限如图4-1所示
图 4-1
接下来,用符号模式给222.txt文件的所属者增加x权限,所属组增加w权限,其他用户增加x权限,linux命令如下,执行后的效果如图4-2所示
1 chmod u+x,g+w,o+x 222.txt
图 4-2
再者,用八进制模式给222.txt文件的所属者移除w权限,所属组移除w权限,增加x权限,其他用户移除x权限,linu命令如下,执行后的效果如图4-3所示
1 chmod 554 222.txt
图 4-3
我个人觉得符号模式与八进制模式都挺好用的,符号模式更接近自然语言的表述,八进制模式也挺不错。不过基本上都使用八进制模式,因为在linux的bash脚本中都采用八进制模式进行权限的赋予。