Linux操作系统——文件权限管理(1-4)

一文件权限概述

文件是操作系统用来存储信息的基本结构,是一组信息的集合。
文件通过文件名来唯一的标识。Linux中的文件名称最长可允许255个字符,这些字符可用A ~ Z、 0~9、.、_、-等符号来表示。
与其他操作系统相比,Linux最大的不同点是没有“扩展名”的概念,也就是说文件的名称和该文件的种类并没有直接的关联,例如smaple.txt可能是一个运行文件,而sample.exe也有可能是文本文件,甚至可以不使用扩展名。
另一个特性是Linux文件名区分大小写。例如sample.txt、Sample.txt、SAMPLE.txt、samplE.txt在Linx系统中代表不同的文件,但在DOS和Windows平台却是指同一个文件。
在Linux系统中,如果文件名以“.”开始,表示该文件为隐藏文件需要使用“ls -a”命令来才能显示。
在Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。
通过设定权限可以从以下三种访问方式限制访问权限:
只允许用户自己访问
允许一个预先指定的用户组中的用户访问
允许系统中的任何用户访问
用户能够控制一个给定的文件或目录的访问程度。一个文件或目录可能有读、写及执行权限。
当创建一个文件时,系统会自动地赋予文件所有者读和写的权限,这样可以允许所有者能够显示文件内容和修改文件。
文件所有者可以将这些权限改变为任何他想指定的权限。一个文件也许只有读权限,禁止任何修改。文件也可能只有执行权限,允许它想一个程序一样执行。
三种不同的用户类型能够访问一个目录或者文件:所有者、用户组或其他用户。所有者是创建文件的用户,文件的所有者能够授予所在用户组的其他成员以及系统中除所属组之外的其他用户的文件访问权限。
每一个用户针对系统中的所有文件都有它自身的读、写和执行权限。
第一套权限控制访问自己的文件权限,即所有者权限
第二套权限控制用户组访问其中一个用户的文件的权限
第三套权限控制其他所有用户访问一个用户的文件的权限

二 文件权限的类型

下图中第二行开始,每一行的第一个字符一般用来区分文件的类型,一般取值为d,-,l,b,c,s,p。具体含义为:
d:表示是一个目录,在ext文件系统中目录也是一种特殊的文件。
-:表示该文件是一个普通的文件。
l: 表示该文件是一个符号链接文件,实际上它指向另一个文件。
b、c:分别表示该文件为区块设备或其他的外围设备,是特殊类型的文件。
s、p:这些文件关系到系统的数据结构和管道,通常很少见到。
Linux操作系统——文件权限管理(1-4)
在上面的显示结果中,每一行的第2~10个字符表示文件的访问权限。这9个字符每3个为一组,左边三个字符表示所有者权限,中间3个字符表示与所有者同一组的用户的权限,右边3个字符是其他用户的权限。代表的意义如下:
字符2、3、4表示该文件所有者的权限,有时也简称为u(User)的权限。
字符5、6、7表示该文件所有者所属组的组成员的权限。例如,此文件拥有者属于“user”组群,该组群中有6个成员,表示这6个成员都有此处指定的权限。简称为g(Group)的权限。
字符8、9、10表示该文件所有者所属组群以外的权限,简称为o(Other)的权限
9个字符根据权限种类的不同,也分为3种类型:
r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
w(Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
x(execute,执行):对文件而言,具有执行文件的权限;对目录来说该用户具有进入目录的权限。
-:表示不具有该项权限。
每个用户都拥有自己的主目录,通常在/home目录下,这些主目录的默认权限为rwx------:执行mkdir命令所创建的目录,其默认权限为rwxr-xr-x,用户可以根据需要修改目录的权限。
默认的权限可用umask命令修改,用法非常简单,只需执行“umask 777”命令,便代表屏蔽所有的权限,因而之后建立的文件或目录,其权限都变成000,依次类推。通常root帐号搭配umask命令的数值为022、027和077,普通用户则是采用002,这样所产生的默认权限依次为755、750、700、775。

特殊权限

文件与目录设置还有特殊权限。由于特殊权限会拥有一些“特权”,因而用户若无特殊需求,不应该启用这些权限,避免安全方面出现严重漏洞,造成黑客入侵,甚至摧毁系统。
s或S(SUID,Set UID):可执行的文件搭配这个权限,便能得到特权,任意存取该文件的所有者能使用的全部系统资源。请注意具备SUID权限的文件,黑客经常利用这种权限,以SUID配上root帐号拥有者,无声无息地在系统中开扇后门,供日后进出使用
s或S(SGID,Set GID):设置在文件上面,其效果与SUID相同,只不过将文件所有者换成用户组,该文件就可以任意存取整个用户组所能使用的系统资源。
T或T(Sticky):/tmp和 /var/tmp目录供所有用户暂时存取文件,亦即每位用户皆拥有完整的权限进入该目录,去浏览、删除和移动文件。

三 文件权限的设置方法

在文件建立时系统会自动设置权限,如果这些默认权限无法满足需要,此时可以使用chmod命令来修改权限。通常在权限修改时可以用两种方式来表示权限类型;数字表示法和文字表示法。
chmod命令的格式是:
chmod 选项 文件

以数字表示法修改权限

所谓数字表示法是指将读取(r)、写入(W)和运行(x)分别以4、2、1来表示,没有授予的部分就表示为0,然后再把所授予的权限相加而成。
Linux操作系统——文件权限管理(1-4)
为文件/mlx/file设置权限:赋予拥有者和组群成员读取和写入的权限,而其他人只有读取权限。则应该将权限设为“rw-rw-r–”,而该权限的数字表示法为664,因此可以输入下的命令来设置权限:
Linux操作系统——文件权限管理(1-4)
以文字表示法修改访问权限
使用权限的文字表示法时,系统用4种字母来表示不同的用户:
u:user,表示所有者
g:group,表示属组
o:others,表示其它用户
a:all,表示以上三种用户
操作权限使用下面三种字符的组合表示法:
r:read,可读
w:write,写入
x:execute,执行。
例如,要同时将/mlx目录中的所有文件权限设置为所有人都可读取及写入,应该使用下面的命令:
Linux操作系统——文件权限管理(1-4)
利用chmod命令也可以修改文件的特殊权限。
例如要设置文件/mlx/file文件的SUID权限的方法为
Linux操作系统——文件权限管理(1-4)
文件所有者与属组修改
要修改文件的所有者可以使用chown来设置。Chown命令格式如下所示:
chown 选项 用户和属组 文件列表
用户和属组可以是名称也可以是UID或GID。多个文件之间用空格分隔
例如要把/mlx/file文件的所有者修改为test用户,命令如下:
Linux操作系统——文件权限管理(1-4)
chown命令可以同时修改文件的所有者和属组,用“:”分隔。例如将/mlx/file文件的所有者和属组都改为test的命令如下所示:
Linux操作系统——文件权限管理(1-4)
如果只修改文件的属组可以使用下列命令:
Linux操作系统——文件权限管理(1-4)
修改文件的属组也可以使用命令chgrp :
Linux操作系统——文件权限管理(1-4)