第六章 文件安全性 翻译:hfzheng 电子邮件:hfzheng@sohu.com 转载请务必保留译者信息! 查看文件和目录权限 使用ls –l命令来查看文件和目录的权限。Ls –l命令第一个域的信息定义了文件类型,紧跟着三不同的用户权限。 1、文件类型:识别列出项为文件或目录 2、用户:文件或者目录所有者的访问权限 3、组:列出了组成员的访问权限,由系统管理员定义 4、其他:列出了其他其他所有用户的访问权限 访问权限类型 接下来的部分描述了文件的访问类别 文件类型 ls –l命令的第一个字符定义了文件类型 d代表目录 -代表普通文件 用户访问权限 接下来的三个字符代表所有者的访问权限,指出了文件所有者拥有的访问权限。 组访问权限 紧接下来的三个字符代表的是组成员的访问权限,定义了创建文件的组内成员对该文件的访问权限。一个组为一个需要访问同一文件的用户的集合。在同一组内的用户都可以根据文件的组访问权限来互相访问各自创建的文件。 系统管理员在文件/etc/group创建和维护组,并且赋予组内成员根据共享的文件访问权限的访问文件的权利。 其他用户的访问权限 第三组的三个字符为其他用户的文件访问权限,它定义了其他所有用户对文件的访问权限。这里所说的其他,除了文件所有者、组内成员之外的其他可以登录到系统中的用户。 确定对文件或者目录的访问权限 文件或目录的访问权限由UID和GID确定。 1、UID:确定创建文件和目录的用户 2、GID:确定创建文件和目录的用户所在组别,文件和目录一次只可以属于一个组 所有的文件和目录都包括有UID和GID。Solaris操作环境使用UID和GID来确定文件和目录的所有者以及组成员属性 要查看UID和GID使用ls –n命令。 $ ls -n total 108 -rw-r--r-- 1 11001 10 0 Feb 22 14:51 brands -rw-r--r-- 1 11001 10 1320 Feb 22 14:51 dante -rw-r--r-- 1 11001 10 368 Feb 22 14:51 dante_1 确定访问权限的过程 当用户试图访问一个文件和目录时,Solaris操作环境比较用户的UID和文件的UID,如果UID相同,使用文件的User访问权限。 如果UID不相同,比较用户GID和文件的GID,如果相同,使用文件GID权限,如果不同,则使用其他用户访问权限。 访问权限类型 文件和目录的访问权限由一组默认访问权限保护,这是文件或者目录创建时由Solaris操作环境分配的。 文件和目录的访问权限分别由字符r(read)、w(write)、x(execute)和-(拒绝)。当一个用户创建文件和目录时,默认情况下,Solaris操作环境自动分配给文件的权限为rw-r--r--,分配给目录的权限是rwxr-xr-x。 可执行权限可以由用户使用chmod命令来设置,但是这些权限从来不会由系统在文件分配时分配。 文件的read/write/execute和目录的read/write/execute有不同的解释。说明如下: 权限权限符号文件目录 Readr文件可以显示和拷贝可以用ls列出目录内容 Writew文件内容可以修改可以添加和删除文件 Executex文件可以被执行可以用cd进入和ls –l列出 改变访问权限 可以使用chmod命令来改变新建文件和目录的访问权限,该命令要么被文件和目录的所有者使用,要么被超级用户用来改变访问权限。 chmod可以使用符号模式或者八进制模式来修改制定的访问权限。 1、符号模式就是使用字母和符号的组合来添加或者删除每类用户的访问权限。 2、八进制模式就是使用数字代表不同的访问权限,这种方式通常也称为绝对模式 chmod mode filename mode部分说明: who op permissions who: u代表文件和目录所有者访问权限 g代表组访问权限 o代表其他用户访问权限 a代表所有的用户访问权限 op: +:增加权限 -:删除权限 =:分配权限 permission: r:可读(read) w:可写(write) x:可执行(execute) 符号模式下改变访问权限 $ ls -l dante -rw-r--r-- 1 user1 staff 1320 Feb 22 14:51 dante $ $ chmod o-r dante $ ls -l dante -rw-r----- 1 user1 staff 1320 Feb 22 14:51 dante $ $ chmod g-r dante $ ls -l dante -rw------- 1 user1 staff 1320 Feb 22 14:51 dante $ 为所有者增加执行权限,为group和other增加读权限: $ chmod u+x,go+r dante $ ls -l dante -rwxr--r-- 1 user1 staff 1320 Feb 22 14:51 dante $ 为所有者、组、其他用户分配读写权限: $ chmod a=rw dante $ ls -l dante -rw-rw-rw- 1 user1 staff 1320 Feb 22 14:51 dante $ 八进制模式(绝对模式) 可以使用八进制数的组合来制定八进制模式,可以使用的八进制数从0到7。 命令格式 chmod octal_mode filename 八进制数代表的访问权限 八进制数 访问权限 4可读 2可写 1可执行 每个八进制数所代表的访问权限如下: 八进制数所设置的权限 7r w x 6r w – 5r - x 4r - - 3- w x 2- w - 1- - x 0- - - 通过使用八进制数的组合,用户可以快速修改每类用户的访问权限。第一个八进制数定义了所有者的访问权限,第二个八进制数定义了组访问权限,第三个八进制数定义了其他用户的访问权限。 一些组合值及其对应的访问权限 八进制模式访问权限 644rw-r—r-- 751rwxr-x--x 775rwxrwxr-x 777rwxrwxrwx 在使用八进制模式的chmod命令时,必须使用所有的三个八进制数,一个对应下面的一种类型:所有者、所有者所在组、其他用户。 使用八进制模式的chmod命令 下面的示例说明了如果使用八进制模式修改文件的访问权限。 为所有者、组和其他用户分配读和执行权限: $ ls -l dante -rw-rw-rw- 1 user1 staff 1320 Feb 22 14:51 dante $ chmod 555 dante $ ls -l dante -r-xr-xr-x 1 user1 staff 1320 Feb 22 14:51 dante $ 修改所有者和组访问权限以包括写权限: $ chmod 775 dante $ ls -l dante -rwxrwxr-x 1 user1 staff 1320 Feb 22 14:51 dante $ 修改group使其只有读和执行权限: $ chmod 755 dante $ ls -l dante -rwxr-xr-x 1 user1 staff 1320 Feb 22 14:51 dante $ 默认权限 下面部分说明了三种不同类型的默认权限 umask过滤器 umask过滤器用来控制分配给新建文件和目录的默认权限。Umask是一个三位数的八进制数值分别用来指明所有者、组成员、其他用户的read/write/execute访问权限。 显示umask值 $ umask 022 第一个数值0确定了所有者的默认访问权限;第二个数值2确定了组成员的默认访问权限;第三个数值2确定了其他用户的默认访问权限。在Solaris操作环境中,缺省的umask值为022。 Umask用来影响用户创建文件和目录时由系统指定初始访问权限。 文件创建时系统制定的初始权限值是666(rw-rw-rw-),目录创建时系统制定的初始权限值是777(rwxrwxrwx)。 Umask值用来自动过滤,或者从最初的权限值减掉来确定分配给新创建的文件和目录的默认权限。 理解umask过滤器 另外一种确定分配给新创建的文件和目录的默认权限的方法就是用符号模式表示:rw-rw-rw-。相应地使用八进制模式表示为:42-42-42-。 使用默认的umask值022,将去掉组用户和其他用户的写权限,例如: r w – r w – r w -系统为新创建文件制定的初始值(666) - - - - w - - w - 默认的umask过滤器值(022) r w – r - - r - - 为新创建文件分配的默认访问权限(644) 当初始值确定的访问权限被掩码掉了以后,就为新创建的文件分配了默认的权限。 所有新创建的文件都为文件所有者设置了Read/Write权限,为组和其他用户设置了Read权限rw-r—r--。 在符号模式下你也可以采用同样的方式来确定新创建的目录的默认权限。在这种情况下,系统为目录指定的初始值用符号方式表示为:rwxrwxrwx。相应地,八进制模式表示为:421421421。 使用默认的umask值022,将去掉组用户和其他用户的写权限,例如: r w x r w x r w x系统为新创建文件制定的初始值(777) - - - - w - - w - 默认的umask过滤器值(022) r w – r – x r – x 为新创建文件分配的默认访问权限(755) 所有新创建的目录都为文件所有者设置了Read/Write/Execute权限,为组和其他用户设置了Read/Execute权限rw-r-xr-x。 改变umask值 一些用户需要更为安全的umask值027。将为新创建的文件和目录赋予下列访问权限: 对于新创建文件而言,将为文件所有者设置读写权限,为组用户这是读权限,拒绝其他用户的访问。 对于新创建目录而言,将为目录所有者这是读写执行权限,为组内用户设置读和执行权限,拒绝其他用户的访问。 系统管理员可以通过把另外一个可用的umask值放在系统文件/etc/profile文件中来覆盖默认的umask值。 你也可以在命令行方式下设置新的umask值 $ umask 027 $ umask 027 新的umask只是影响在此之后创建的文件和目录。然而,因为umask是在命令行方式下修改的,因此,当用户退出登录后,在以后的登录中新的umask值027将被旧的umask值代替。
|