Linux命令分析: chmod

时间:2021-07-13 08:45:46

用途:更改文件的权限

用法:chmod [选项]... mode1,mode2,... 文件...

     或chmod [选项]... 八进制模式 文件...

     或chmod [选项]... --reference=参考文件 文件...

mode是关于文件权限的设定字符串,格式形如 [ugoa][+-=][rwxXst]  ,下面为详细解释

Linux中用户对文件具有三种身份和六种权限,三种身份为:

1. u:文件所有者(owner)

2. g:文件所属用户组(group)

3. o:其他用户(others)

    a:代表以上三种身份的集合,即所有人

对于每种身份,文件又有三种基本权限和三种特殊权限:

1. r:可读(read)

2. w:可写(write)

3. x:可执行(execute)

特殊权限:

4. SUID:s位于文件所有者的x位上,仅对二进制程序有效,当执行者拥有x权限时,在执行过程中会具有文件所有者的权限

5. SGID:s位于文件所属组的x位上,对二进制程序和目录有效,当程序执行者拥有x权限时,在程序执行过程中会具有文件所属组的权限;当用户对目录有r和x权限时,用户在此目录下的有效用户组将变成该目录的所属用户组

6. SBIT:t位于others的x位上,仅对目录有效,当用户对此目录有w和x权限时,其在此目录下创建的文件仅自己和root可以删除


参数:

-c   类似--verbose 只有更改时才显示结果

-f   不显示错误信息

-v   显示处理过程

-R   以递归的方式处理所有文件及子目录


以数字形式改变文件权限

常见文件权限格式如:-rwxr-x-r-x   一共10个字符,第一个字符表示该文件是目录,文件或者链接文件等,后面9个字符每3个为一组,分别对应owner,group,others三种对象的rwx权限,每组权限可以用数字来代替,其中 

r = 4

w = 2

x = 1

每组权限对应的数字为三种权限之和,如rwx为7,r-x为5,--x为1,---为0

故用数字形式改变文件权限的命令格式为

chmod   权限   文件

该形式为chomod命令最常用的格式,可以应付几乎所有情形


以字符形式改变文件权限

字符形式可以单独对文件对某种身份的权限进行修改,而且不必去计算对应的数字,格式为:

chmod   [对象][+-=][权限]   文件...


典型用法:

1. 将文件设置为所有人可读可写可执行

chmod   777   文件             

或者   chmod   a+r,a+w,a+x   文件


2. 给某文件添加权限使同一用户组的用户可执行

chmod   g+x   文件


3. 将文件设置为仅文件所有者可执行

chmod   100   文件


4. 将某目录下的所有文件及目录设置为所有人可读可执行

chmod   -R   555   目录


设置特殊权限:

设置基本的rwx权限只需要三位数字,如果要设置特殊权限则需要四位数字,其中第一位数字代表其特殊权限

4为SUID

2为SGID

1为SBIT


5. 某二进制程序的所有者是root,该程序在执行过程中需要更改某个数据库文件,而该数据库文件仅root有写的权限,若要某个其他帐号能够正常使用该程序,则需为该程序文件设置SUID权限

chmod   4755   二进制文件

执行完成后该文件的权限应该是   -rwsr-xr-x


6. 将某个目录设置成所有人可以访问,同时任何人在上面创建的文件其他人也可以*修改,此时应为该文件夹设置SGID权限,使得任何人进入该目录后获得目录所属用户组的权限

chmod   2771   目录


7. 将某个目录作为大家的共享存储目录,但每个人的文件只有自己可以修改,此时需为该目录设置SBIT权限

chmod   1777   目录