Chinaunix首页 | 论坛 | 博客
  • 博客访问: 793421
  • 博文数量: 858
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5015
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-29 17:43
文章分类

全部博文(858)

文章存档

2011年(1)

2008年(857)

我的朋友

分类: LINUX

2008-08-29 17:46:23

 
  文件的权限

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

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

  对于一个文件来说,它都有一个特定的所有者,也就是对文件具有所有权的用户。同时,由于在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。文件所有者以外的用户又可以分为文件所有者的同组用户和其它用户。因此,Linux系统按文件所有者、文件所有者同组用户和其它用户三类规定不同的文件访问权限。

  权限的概念

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

  使用ls-l查看文件以及文件夹,从显示的内容可以注意到,每个文件的目录条目都是以下面类似的一些符号开始:

  -rw-r--r--

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

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

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

  任何列在/etc/passwd文件中的用户都可以是一个文件的所有者,也称为该文件的用户。同样任何列在/etc/group文件中的组都可以是文件组的所有者,也简称为文件的组。

  下面来看两个例子,以便加深理解。

  drwxrwxr--2rootroot40962月1110:36guo

  因为guo的第1个位置的字符是d,所以由此知道guo是一个目录。第2至4位置上的属性是rwx,表示用户root拥有权限列表显示guo中所有的文件、创建新文件或者删除guo中现有的文件,或者将guo作为当前工作目录。第5至7个位置上的权限是rwx,表示root组的成员拥有和root一样的权限。第8至10位上的权限仅是r--,表示不是root的用户及不属于root组的成员只有对guo目录列表的权限。这些用户不能创建或者删除guo中的文件、执行junk中的可执行文件,或者将junk作为他们的当前工作目录。

  下面再来看一个例子:

  -rwxr-xr--1useradmin2048011月1109:23Readme.txt

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

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

  -r--rw-r--

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

  修改文件或者目录权限

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

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

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

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

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

    表1数字的含义

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

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

  一般而言,作为系统管理员,更喜欢使用数字方式,因为这种方式的速度明显快得多。

  很显然,系统中各种文件的权限设置对特定用户的数据安全有很大影响。但是要求用户逐一明确设置系统中每个文件的权限也是不现实的,为此,需要使用umask命令,该命令可以为用户账号中新文件的创建进行缺省设置。具体来说,umask是用来设置权限掩码的,权限掩码由3个数字组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时默认的权限。例如,root的权限为777,若权限掩码设为022,那么两都相减后可得755。

关于Linux中文件权限的文章关于Linux中文件权限的文章关于Linux中文件权限的文章关于Linux中文件权限的文章关于Linux中文件权限的文章关于Linux中文件权限的文章关于Linux中文件权限的文章关于Linux中文件权限的文章关于Linux中文件权限的文章关于Linux中文件权限的文章
阅读(246) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~