Linux系统权限对文件和目录的影响

Linux系统权限对文件和目录的影响

在Linux系统中文件(包括目录了)有三种身份,即拥有者(owner)、同组用户(group)、其他人(others),并且每种身份都有三种权限读、写、执行(read、write、execute),从上节可知权限对数据安全起到非常重要的作用。

㈠权限对文件的影响

在计算机系统中数据(data)的真正内容是保存在文件当中,Linux系统中的文件主要有这几种类型:一般文本文件、数据库文件、二进制可执行文件等。

⑴用户如果对这个文件具有r(read,读)权限,即可读取文件里保存的实际内容,例如文件中保存的图形可在显示器(终端)上显示,文件里的文字也可以显示在显示器上等。

⑵用户如果对这个文件具有w(write,写)权限,即可对该文件进行编辑、新增或是修改文件的内容(但是不包含删除该文件)。

⑶用户如果对这个文件具有x(execute,执行)权限,即这个文件有被Linux系统执行的权限。这一点在Linux系统中文件能否被执行与否不跟文件的扩展名相关,但在windows系统中一个文件能够被系统执行一般都是与这个文件的后缀名有关,例如后缀是.bat、.com、.exe等都可以被执行。而在Linux系统中文件是否能够被执行是由文件的x权限来决定,跟文件名没有直接的关联。

同时,当一个文件具有w(写)权限时,那么用户就可以对这个文件进行写入、编辑、新增内容、修改内容等权限。因此,对于文件来说,它的r、w、x这三种权限操作的对象主要是针对文件里面的内容而言,与文件名的存在与否没有关系。

㈡权限对目录的影响

从上所知,文件就是保存实际的数据内容,而目录保存的是什么呢?一般在目录中会有很多文件,这些文件的关系是什么?如何能够访问他们?其实在目录中并不是保存实际的内容而是保存文件名的列表(文件名数据库),记住目录保存的是文件名的列表。文件与目录的保存内容示意图,如图2-12所示。

Linux系统权限对文件和目录的影响

⑴用户如果对这个目录具有r(read,读)权限,表明这个用户可以读取目录结构中的文件名列表,也就是可以查询这个目录中所有的文件名。

⑵用户如果对这个目录具有w(write,写)权限,表明这个用户可以改动这个目录结构列表的权限,也就是具有如下的权限:

①可以在这个目录中创建新的文件与子目录;

②删除这个目录中已经存在的文件与子目录而不考虑这些文件与子目录的权限;

③更改这个目录中已经存在的文件与子目录的名称;

④移动这个目录中的文件与子目录的位置。

因此,目录的w权限总是跟文件名的变动有关。

⑶用户如果对这个目录具有x(execute,执行)权限,即表明这个用户可以进入该目录中并可以把这个目录当作当前工作的目录。

从上所知,目录的权限是针对目录内的文件名列表来进行控制的,而跟文件的权限是针对文件的内容来控制的不一样。目录中的(x)执行权限就像一扇门的功能一样,你没有钥匙是不可能入门的道理。

目录中所具有的r权限与x权限的影响如下图2-13、2-14所示。

Linux系统权限对文件和目录的影响

Linux系统权限对文件和目录的影响

解释:目录dirtest的拥有者是test,所属用户组是test,同组用户与其他人的权限都是具有rx(读与执行)权限,那么其他用户hu是可以把目录dirtest的内容列表出来(也可以切换到这个目录)的,但是当把dirtest目录的同组用户与其他人的权限更改为只读时(仅有r权限),其他用户hu就不能够列出目录dirtest中的内容(文件名)了,提示为“权限不够”。

因此,一个目录是否可以被列表或切换到其中只看目录中是否有x权限,而不考虑这个目录的r或w权限。如果你的目录是开放给其他用户进行浏览那么你一定要给这个目录付上x权限。

如果一个用户对这个目录具有拥有者的完全(rwx)权限,那么这个用户可以删除这个目录中已经存在的文件而不用考虑这个文件所具有的权限。如下图2-15所示,对于目录dirtest用户test对其具有拥有者的完全权限,而在目录中存在两个文件file1和file2,这两个文件的拥有者与用户组都是root用户,但是test用户可以删除他们。

Linux系统权限对文件和目录的影响

这就好比不认识的某人把他的保密箱子放到你家(目录)里一样,虽然你不知道箱子的密码以及箱子保存的东西,但是只要你愿意分分钟可以把这个保密箱子砸烂。但仅限于一级目录。

综上通常要放开的目录一般都是至少具备rx权限才行。如图2-16所示。

Linux系统权限对文件和目录的影响

原文始发于:Linux系统权限对文件和目录的影响