权限的意义
虽然Windows系统也号称多任务系统,但是它所做的只是给每个用户建立单独的文件夹,在文件权限的控制方面很弱,基本上可以随便删除其他用户的文件。而Linux系统是一个典型的多用户系统,不同的用户不但有不同的私有文件夹,而且为了保护系统的安全性,Linux系统对不同用户访问同一文件的权限做了不同的规定。
对于每一个具体的Linux系统中的文件来说,它的权限可以分为4种:读的权限、写的权限、执行的权限和无权限,分别用r、w、x和-表示,具体来说,分别是(r)ead,(w)rite,e(x)ecute和-的简写。不同的用户具有不同的读、写和执行的权限。
需要注意的是,并没有无权限是最低的、执行权限则是最高的这样的概念,它们是平行的。比如可以设定一个文件可以写但是不可以读。虽然从理论上来说,这样的设置毫无意义。
每一个文件都有一个特定的所有者,叫作owner,也就是对文件具有所有权的用户。
同时,由于在Linux系统中每个用户都会隶属于一个或者多个组,所以文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。因此,Linux系统按文件所有者、文件所有者同组用户和其他用户3类规定不同的文件访问权限Linux文件系统安全模型是通过给系统中的文件赋予两个属性来起作用的。赋予每个文件的这两个属性称为所有者(Ownership)和访问权限(Access Rights),Linux下的每一个文件必须严格地属于一个用户和一个组。
rw-r--r--
这些符号用来描述文件的访问权限类别,长度一般为10位,其格式遵循下列规则:
第1个字符表示文件的类型。字符为“d”表示该文件是一个目录;“b”表示该文件是一个系统设备,使用块输入/输出与外界交互,通常为一个磁盘;“c”表示该文件是一个系统设备,使用连续的字符输入/输出与外界交互,如串口和声音设备:“.”表示该文件是一个普通文件,没有特殊属性;“-”表示为文件。
第2-4个字符用来确定文件的用户(owner)权限;第5~7个字符用来确定与owner相同的组(group)成员的权限;第8-10个字符用来确定文件的其他用户(other user,既不是文件所有者,也不是组成员的用户)的权限。其中,第2、5、8个字符是用来控制文件的读权限的,该位字符为r表示允许用户、组成员或其他人从该文件中读取数据,短线"-"则表示不允许该成员读取数据。与此类似,3、6、9位的字符控制文件的写权限,该位若为w表示允许写,若为"-"表示不允许写:4、7、10位的字符用来控制文件的创建权限,该位若为x表示允许执行,若为"-"表示不允许执行。记住,每一位只有两个选择:"-"或者该属性的缩写字母,表示是否具备相应的权限。
举个例子
drwxr-xr-x
第1
位上的字符是d
,表示此文件是一个目录。
第2~4
位上的属性是rwx
,表示用户root拥有权限列表显示此目录中所有的文件、创建新文件或者删除此目录中现有的文件,或者将此目录作为当前工作目录。
第5~7
位上的权限是r-x
,表示root组的成员只拥有读和执行的权限。
第8~10
位上的权限是r-x
,表示不是root的用户及不属于root组的成员同root组的其他成员拥有一样的权限。