概述
在Linux系统中,每一个文件或目录都有拥有者(文件属主),都属于某个或某些组(文件属组)。
Linux给文件设定了一定的访问权限,分三级权限:文件所有者、与文件所有者同组的用户、其他用户。对文件的访问主要是三种处理操作:读取、写入和执行。
普通文件的所有权和访问权限
文件三种访问身份:是指对文件有三种访问身份:
- (u)ser owner:文件拥有者,文件属主;
- (g)roup owner:文件属组;
- (o)ther owner:不属于前两种的用户访问者;
文件权限:是一种限制用户对文件操作的规则,Linux系统中文件访问权限通常分为三类:
- r:可读,可以使用类似cat等命令查看文件内容;
- w:可写,修改文件内容;
- x:可执行,executable,可以在命令提示符下当作命令提交给内核运行;
Linux目录的所有权和访问权限
目录三种访问身份:是指对目录也有三种访问身份:
- (u)ser owner:目录拥有者,目录属主;
- (g)roup owner:目录属组;
- (o)ther owner:不属于前两种的用户访问者;
目录权限:
- r:可以对此目录执行ls以列出目录内容;
- w:可以在此目录创建、删除文件;
- x:可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息。
关于目录的读权限:允许读取目录包含的内容,如果只有读权限,而没有x权限,只能列出目录下的文件或子目录名称,而不能查看其属性或者具体内容。
权限的八进制表示:
- 0 000 ---:无权限
- 1 001 --x: 执行
- 2 010 -w-: 写
- 3 011 -wx: 写和执行
- 4 100 r--: 只读
- 5 101 r-x: 读和执行
- 6 110 rw-: 读写
- 7 111 rwx: 读写执行
例如:
- 755:rwxr-xr-x
- 640:rw-r-----
- 660:rw-rw----
- 775:rwxrwxr-x
修改文件的所有权
Linux下有两个命令用于修改所有权,chgrp修改文件属组,chown修改文件属主。
chgrp命令
chgrp命令用来改变文件或目录所属的用户组,使用者必须是超级用户。一般格式:
chrgp [选项] 组名 文件名
其中,组名可以是用户组的ID,也可以是用户组的组名,但是要求组名必须在/etc/group文件中存在。文件名可以是由空格分开的要改变属组的文件列表,也可以是由通配符描述的文件集合。
常用选项:
-R 递归式地改变指定目录及其下面的所有子目录和文件的用户组
chown命令
chown命令改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。用户可以是用户或者是用户ID,用户组可以是组名或组ID。文件名可以使用由空格分开的文件列表,在文件名中可以包含通配符。
一般格式:
chown [选项] 用户或组 文件名
选项:
-R 递归式地改变指定目录及其所有子目录、文件的文件主。
-v 详细列出该命令所做的工作。
注意:只有超级用户才可以使用该命令。
修改文件访问权限:chmod
chmod命令是非常重要的,用于改变文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
文字设定法
命令格式
chmod [who] [+ | - | =] [mode] 文件名
命令中各选项的含义为:
- 操作对象who可是下述字母中的任一个或者它们的组合: u 表示“用户(user)”,即文件或目录的所有者。 g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。 o 表示“其他(others)用户”。 a 表示“所有(all)用户”。它是系统默认值。
- 操作符号可以是:
+ 添加某个权限。
- 取消某个权限。
= 赋予给定权限并取消其他所有权限(如果有的话)。 - 设置mode所表示的权限可用下述字母的任意组合:
- r 可读。
- w 可写。
- x 可执行。
- X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
- s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。
- t 保存程序的文本到交换设备上。
- u 与文件属主拥有一样的权限。
- g 与和文件属主同组的用户拥有一样的权限。
- o 与其他用户拥有一样的权限。
文件名:以空格分开的要改变权限的文件列表,支持通配符。
在一个命令行中可给出多个权限方式,其间用逗号隔开。例如:
chmod g+r,o+r example 使同组和其他用户对文件example 有读权限。
数字设定法
- 0 000 ---:无权限
- 1 001 --x: 执行
- 2 010 -w-: 写
- 3 011 -wx: 写和执行
- 4 100 r--: 只读
- 5 101 r-x: 读和执行
- 6 110 rw-: 读写
- 7 111 rwx: 读写执行
数字设定法的一般形式为:
chmod [mode] 文件名
文件和目录默认权限
系统创建目录默认拥有rwxrwxrwx权限,也就是777(八进制)
Linux为了安全起见,不允许新建的文件带有x属性,系统创建文件默认拥有rw-rw-rw-权限,也就是666(八进制)。
而目录默认拥有777权限。即多了x执行权限
默认文件或目录权限与掩码做减法运算,就是用户创建文件或目录的最终默认权限。
例如:掩码是022(或者0022),则新建目录的权限是755,也就是rwxr-xr-x;新建的文件权限是644,也就是rw-r--r--。
掩码一般拥有四位,第一位默认为0并不做改变,掩码从后三位开始
umask 查询当前掩码
umask [权限掩码] 更改掩码