文件基础

摘要

相比 Windows® 和其他大部分操作系统而言,GNU/Linux 中对文件的处理方式大不相同。这一节,我们将介绍绝大多数明显的区别。要进一步了解详情,请参阅第 9 章 Linux 文件系统一文。

由于 Linux 是一个多用户系统,这直接导致了最主要的不同:每个文件都仅仅只属于某个用户以及某个组。每一个用户都拥有一个个人目录(称为主(home)目录)。该用户是这个目录及在其中创建的文件的所有者。

然而,如果文件所有权仅限于此的话就没多大意思。作为文件的所有者,用户可以对文件设置权限。这些权限将用户区分为三类:该文件的所有者,该文件所关联的(亦称为所有组)中非所有者的成员,以及既不是该文件的所有者也不是该文件所有组中成员的其他人

对以上每一类用户,分别有下述三种权限:

  1. 权限(r):允许用户阅读文件内容。对于目录,用户可以列出其中包含的文件。

  2. 权限(w):允许修改文件内容。对于目录,拥有写权限的用户可以添加或删除该目录中的文件,即便他不是这些文件的所有者。

  3. 执行权限(x):允许执行文件(通常只有可执行文件才会被设置该权限)。对于目录,它允许用户遍历该目录,也就是说可以进入或者经过该目录。请注意,这和读权限的区别:某个目录可能让您能够遍历但是不允许您浏览其内容!

每种权限组合都是允许的。例如,您可以只让您自己可以阅读某个文件并阻止他人的访问。作为文件的所有者,您也可以改变该文件的所有组(当且仅当您也是那个新的所有组的成员)。

让我们举例说明。下文显示了您在命令行输入 ls -l 命令后的结果:

$ ls -l
total 1
-rw-r-----   1 zhang    users           0 7月  8 14:11 某一_文件
drwxr-xr--   2 li_si    users        1024 7月  8 14:11 某一_目录/
$            

ls -l 命令的结果为(按自左至右顺序):

让我们更进一步观察这些文件的权限。首先,我们必须去掉代表文件类型的第一个字符。这样,对于文件某一_文件,我们就得到了:rw-r-----。下面对其逐项解释。

某一目录这个目录,其权限为 rwxr-xr--,因此:

上述规则对一个人例外:root。即使不是所有者,root 也能够更改所有文件的属性(权限、所有者和所有组),并因此将该文件的所有权指派给他自己。root 能够阅读没有赋予他阅读权限的文件,能够遍历没有赋予他访问权限的目录,诸如此类。如果 root 缺少某个权限,他只要自己加上就行了。root 能够控制整个系统,这就需要我们好好考虑谁可以获得 root 密码。

最后需要指出的一点是:文件名在 UNIX® 世界和 Windows® 世界不同。UNIX® 允许更大的灵活性和更少的限制。

[Note]注意

不过,值得一提的是,有许多图形应用程序(文件管理器、办公应用程序等)确实使用文件扩展名来识别它们的文件。因此,对那些支持文件扩展名的应用程序使用文件扩展名是个不错的主意。



[1] 除非您特别指定,文件管理器是不会在默认情况下显示隐藏文件的。对于终端,您需要键入 ls -a 命令来查看所有隐藏文件。基本上,这些文件是用来保存配置信息的。比如,您可以看一看您的 home/ 目录中的 .mozilla.openoffice 文件。