linux chmod命令设置目录/文件权限详解

linux中chmod命令用于改变系统文件或目录的访问权限,用数字设定法或者文字设定法去控制文件或目录的访问权限。linux系统每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。当用ls -l命令显示文件或目录的详细信息时,最左边的一列为文件的访问权限。

参数

chmod [-cfvR] [--help] [--version] mode file

选择参数:

--reference=<目录或者文件> 设置成具有指定目录或者文件具有相同的权限

--version 显示版本信息

<权限范围>+<权限设置> 使权限范围内的目录或者文件具有指定的权限

<权限范围>-<权限设置> 删除权限范围的目录或者文件的指定权限

<权限范围>=<权限设置> 设置权限范围内的目录或者文件的权限为指定的值

-c 若该文件权限确实已经更改,才显示其更改动作

-f 若该文件权限无法被更改也不要显示错误讯息

-R 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)

-v 运行时显示详细处理信息

mode 权限设定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...]

u : 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。

+ : 表示增加权限、- 表示取消权限、= 表示唯一设定权限。

r : 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。

权限解读

ls -al java.txt

-rw-r--r-- 1 root root  61 10-13 08:23 java.txt   //表示java.txt是文件不是目录,属主有读写权限,属主同组的用户只有读权限,其他用户也只有读权限

第一列共有10个位置,第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是d,表示是一个目录。从第二个字符开始到第十个共9个字符,3个字符一组,分别表示了3组用户对文件或者目录的权限。权限字符用横线代表空许可,r代表只读,w代表写,x代表可执行。

文字设定法

1. 语法

chmod [who] [+ | - | =] [mode] 文件名

2. 实例

ls -al tomcat001.log //查看原来文件的权限
-rw-r--r-- 1 root root 302108 10-13 10:03 tomcat001.log
chmod a+x tomcat001.log //增加文件所有用户组可执行权限
ls -al tomcat001.log  //查看新的文件权限
-rwxr-xr-x 1 root root 302108 10-13 10:03 tomcat001.log

数字设定法

1. 语法

chmod abc 文件名     //其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。

第一个数字表示文件所有者的权限

第二个数字表示与文件所有者同属一个用户组的其他用户的权限

第三个数字表示其它用户组的权限。

权限分为三种:读(r=4),写(w=2),执行(x=1)。综合起来还有可读可执行(rx=5=4+1)、可读可写(rw=6=4+2)、可读可写可执行(rwx=7=4+2+1)。

2. 实例

chmod 755 abc.log

chmod 4755 abc.log

1.文件所有者可读可写可执行

2.与文件所有者同属一个用户组的其他用户可读可执行

3.其它用户组可读可执行

chmod 4755与chmod 755 的区别在于开头多了一位,这个4表示其他用户执行文件时,具有与所有者相当的权限。

实例

chmod 751 test.conf
chmod u=rwx,g=rx,o=x test.conf

2种方式效果一样,给test.conf的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限

chmod =r ccc.log
chmod 444 ccc.log

2种方式效果一样,为所有用户分配读权限

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。