1、预备知识
文件是操作系统用来存储信息的基本结构,是一组信息的集合,它通过文件名来唯一标识。Linux中的文件名称最长可达255个字符,这些字符可以用A~Z、0~9、.、_等符号来表示。与其他操作系统相比,Linux操作系统最大的特点是没有“扩展名”这一概念,也就是说文件的名称和文件的类型之间没有直接的关系。Linux文件名的另一大特性是区分大小写。在Linux系统中,如果文件名以“.”开头,表示该文件为隐藏文件,需要使用“ls -a”命令才能显示。
1.1文件权限的概述
Linux系统中的每一个文件或目录都包含访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。通过设置,可以从以下3种方式限制访问权限:
(1)只允许用户自己访问;
(2)允许一个预先指定的用户组中的用户访问;
(3)允许系统中的任何用户访问。
用户能够控制一个给定的文件或目录的访问程度。一个文件或目录具有读、写及执行权限。当创建一个文件时,系统会自动赋予文件所有者读和写的权限,这样可以允许所有者能够显示文件内容和修改文件。文件所有者可以将这些权限改变为任何他想指定的权限。一个文件也许只有读权限,禁止任何修改;也可能只有执行权限,允许像一个程序一样来执行。
如图1所示,每一行的第一个字符一般用来区分文件的类型,一般取值为d、-、l、b、c、s、p。具体含义如下:
d:表示一个目录,在ext文件系统中目录也是一种特殊的文件;
-:表示该文件为一个普通文件;
l:表示该文件为一个符号链接文件,实际上它指向另一个文件;
b、c:分别表示该文件为区块设备或其他外围设备,是特殊类型文件;
s、p:这些文件关系到系统的数据结构和管道,通常很少见到。
图1
1.2文件权限的组成
在图1中,每一行的第2~10个字符表示文件的访问权限。这9个字符每3个为一组,左边3个字符表示所有者权限,中间3个字符表示与所有者同组用户的权限,右边3个字符是其他用户的权限。
九个字符根据权限种类的不同,也分为以下几种类型:
r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
w(Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
x(Execute,执行):对文件而言,具有执行文件的权限;对目录而言,该用户具有进入目录的权限。
每个用户都拥有自己的主目录,通常在/home目录下,这些主目录的默认权限为rwx------,执行“mkdir”命令创建的目录,其默认权限为rwxr-xr-x。
1.3文件与目录设置的特殊权限
由于特殊权限会拥有一些“特权”,因而用户如果没有特殊需要,不应该启用这些权限,避免安全方面出现严重漏洞。
(1)s或S(SUID、Set UID):当可执行文件拥有了这个权限以后便能得到特权,使任意访问该文件的所有者都能够使用全部系统资源。
(2)s或S(SGID、Set GID):设置在文件上面,其效果与SUID相同,只不过将文件的所有者换成了用户组,该文件可以任意访问整个用户组所能使用的系统资源。
(3)t或T(Sticky):/tmp和/var/tmp目录供所有用户暂时访问文件,即每位用户都拥有完整的权限进去该目录,去浏览、删除和移动文件。
数字表示法是指将读取(r)、写入(w)和执行(x)分别以4、2、1来表示,没有授权的部分就表示为0,然后再把所授予的权限相加而成。
2、实验清单
Red Hat
3、实验步骤
(1)在testd的home目录下建立一个user子目录;
(2)在user目录下建立一个file文件,并用“ls -l”查看文件属性;
(3)对文件file设置权限,使其他用户可以对此文件进行写操作,并查看设置结果,命令为“chmod o+w file”;
注:用户组包括文件属主(u)、文件属组(g)、其他人(o)和所有人(a);
(4) 取消同组用户对file文件的读取权限,并查看设置结果,命令为“chmod g-r file”;
(5)用数字形式对文件file设置权限,所有者可读、可写、可执行;其他用户和所属组用户只有读和执行的权限。设置完成后查看设置结果,命令为“chmod 755 file”;
注:八进制、二进制、文件权限之间的对应关系:
八进制 | 二进制 | 权限 | 八进制 | 二进制 | 权限 |
0 | 000 | --- | 5 | 101 | r-x |
1 | 001 | --x | 6 | 110 | rw- |
2 | 010 | -w- | 7 | 111 | rwx |
3 | 011 | -wx | |||
4 | 100 | r-- |
(6)用数字形式更改文件file的权限,使所有者只能读取此文件,其他任何用户都没有权限。查看设置结果,具体命令为“chmod 400 file”;
(7)改变文件的所有者,查看目录及其中文件的所属用户和组。修改file文件的所有者为user1,命令为“chown user1.grouptest file”。