日期:2014-05-16  浏览次数:20520 次

linux 文件权限(a)

?

?

Linux系统的文件属性比较复杂,主要包括文件类型和文件权限两个方面。

?

?????? 文件的权限

  Linux系统是一个典型的多用户系统,不同的用户处于不同的地位。为了保护系统的安全性,Linux系统对不同用户访问同一文件的权限做了不同的规定。

  对于一个Linux系统中的文件来说,它的权限可以分为三种:读的权限、写的权限和执行的权限,分别用r、w和x表示。不同的用户具有不同的读、写和执行的权限。

  对于一个文件来说,它都有一个特定的所有者,也就是对文件具有所有权的用户。

?

权限的概念

  Linux文件系统安全模型是通过给系统中的文件赋予两个属性来起作用的,这两个赋予每个文件的属性称为所有者(ownership)和访问权限(access rights)。Linux下的每一个文件必须严格地属于一个用户和一个组。

图1是在我机器上的/mydoc目录下运行ls -l命令的情况。

?

从上面显示的内容可以注意到,每个文件的目录条目都是以下面类似的一些符号开始:

-rw-r--r--

?

这些符号用来描述文件的访问权限类别,也就是常说的文件权限。这些访问权限指导Linux根据文件的用户和组所有权来处理所有访问文件的用户请求。总共有10种权限属性,因此一个权限列表总是10个字符的长度。它的格式遵循下列规则:

  ◆ 第1个字符表示一种特殊的文件类型。其中字符可为d(表示该文件是一个目录)、b(表示该文件是一个系统设备,使用块输入/输出与外界交互,通常为一个磁盘)、c(表示该文件是一个系统设备,使用连续的字符输入/输出与外界交互,如串口和声音设备),“.”表示该文件是一个普通文件,没有特殊属性。

  ◆ 2~4个字符用来确定文件的用户(user)权限,5~7个字符用来确定文件的组(group)权限,8~10个字符用来确定文件的其它用户(other user,既不是文件所有者,也不是组成员的用户)的权限。其中,2、5、8个字符是用来控制文件的读权限的,该位字符为r表示允许用户、组成员或其它人可从该文件中读取数据。短线“-”则表示不允许该成员读取数据。与此类似,3、6、9位的字符控制文件的写权限,该位若为w表示允许写,若为“-”表示不允许写。4、7、10位的字符用来控制文件的制造权限,该位若为x表示允许执行,若为“-”表示不允许执行。

?

-rwxr-xr-- 1 user admin 20480 11月 11 09:23 Readme.txt



  在该项中,第1个位置是短线“-”,表示该文件是一个普通文件,没有特殊属性。该文件对任何人都可读,只对user可写,user和admin的组成员可以执行该文件。

  另外需要注意的是,当用户访问一个文件时,权限检查是从左到右的。假设上述的readme.txt文件具有以下权限:

-r--rw-r--



  那么即使user是属于admin组的一个成员,也不能对该文件进行写操作,因为已经被左边的写权限设置拒绝了。



修改文件或者目录权限

  文件或者目录的用户能够使用chmod命令修改文件的权限。Chmod命令有两种方式:一种是字符方式,使用字符来修改文件的权限;另外一种是数字方式,使用3个数字的组合来修改文件的权限。

  字符方式的基本语法是:chmod [ugoa] +或者-或者= [rwx] [文件...]

  在上述命令中,使用“+”或者“-”是在保存原来权限设置的基础上修改权限。当使用“=”时,权限被明确地赋予要修改的文件。其中字符u表示文件或者目录的所有者,g表示文件或者目录所属组,o除所有者和所属组以外的用户,a表示全部用户。

  数字方式的基本语法是:chmod nnn 文件

其中第1、2、3个n分别表示用户、组成员和所有其它用户。各个位置上的n要么是一个0,或者是一个由赋予权限的相关值相加得到的单个阿拉伯数字之和。这些数字的意义如表1所示。

    表1 数字的含义

值       表示的意义
4      表示文件或者目录的读权限
2      表示文件或者目录的写权限
1   表示文件或者目录的执行权限



  很显然,当使用数字方式时,这3个数字必须为0至7中的一个。

?

修改文件或者目录权限

  文件或者目录的用户能够使用chmod命令修改文件的权限。Chmod命令有两种方式:一种是字符方式,使用字符来修改文件的权限;另外一种是数字方式,使用3个数字的组合来修改文件的权限。

  字符方式的基本语法是:chmod [ugoa] +或者-或者= [rwx] [文件...]

  在上述命令中,使用“+”或者“-”是在保存原来权限设置的基础上修改权限。当使用“=”时,权限被明确地赋予要修改的文件。其中字符u表示文件或者目录的所有者,g表示文件或者目录所属组,o除所有者和所属组以外的用户,a表示全部用户。

  数字方式的基本语法是:chmod nnn 文件

其中第1、2、3个n分别表示用户、组成员和所有其它用户。各个位置上的n要么是一个0,或者是一个由赋予权限的相关值相加得到的单个阿拉伯数字之和。这些数字的意义如表1所示。

    表1 数字的含义

值       表示的意义
4      表示文件或者目录的读权限
2      表示文件或者目录的写权限
1   表示文件或者目录的执行权限



  很显然,当使用数字方式时,这3个数字必须为0至7中的一个。

?

修改文件或者目录权限

  文件或者目录的用户能够使用chmod命令修改文件的权限。Chmod命令有两种方式:一种是字符方式,使用字符来修改文件的权限;另外一种是数字方式,使用3个数字的组合来修改文件的权限。

  字符方式的基本语法是:chmod [ugoa] +或者-或者= [rwx] [文件...]

  在上述命令中,使用“+”或者“-”是在保存原来权限设置的基础上修改权限。当使用“=”时,权限被明确地赋予要修改的文件。其中字符u表示文件或者目录的所有者,g表示文件或者目录所属组,o除所有者和所属组以外的用户,a表示全部用户。

  数字方式的基本语法是:chmod nnn 文件

其中第1、2、3个n分别表示用户、组成员和所有其它用户。各个位置上的n要么是一个0,或者是一个由赋予权限的相关值相加得到的单个阿拉伯数字之和。这些数字的意义如表1所示。

    表1 数字的含义

值       表示的意义
4      表示文件或者目录的读权限
2      表示文件或者目录的写权限
1   表示文件或者目录的执行权限



  很显然,当使用数字方式时,这3个数字必须为0至7中的一个。

?

使用chmod和数字改变文件或目录的访问权限:?????? [root@localhost ~]# chmod 664 a.txt