[ 上一页 ] [ 目录 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ 17 ] [ 18 ] [ A ] [ B ] [ C ] [ D ] [ 下一页 ]


Debian 教程 (过时文档)
第 7 章 - 更多关于文件


文件和目录,第 4.2 节 我们介绍了使用 mv 移动/重命名文件,使用 cp 复制文件,使用 rm 删除文件,使用 rmdir 删除目录,以及使用 mkdir 创建目录。本章将介绍关于文件的一些更多方面。


7.1 权限

GNU 和 Unix 系统被设置为允许多人使用同一台计算机,同时保持某些文件私有或阻止某些人修改某些文件。你可以自行验证这一点

  1. 以您自己的身份登录,即 *不是* root 用户。

  1. whoami

    验证您不是 root 用户。

  1. rm /etc/resolv.conf

    您应该被告知 “权限被拒绝”。/etc/resolv.conf 是一个重要的系统配置文件 --- 除非您是 root 用户,否则您不能更改或删除它。这可以防止您意外地弄乱系统,如果计算机是公共的,例如在办公室或学校,它可以防止用户故意弄乱系统。

现在输入 ls -l /etc/resolv.conf

这将给您类似如下的输出

     -rw-r--r-- 1 root root 119 Feb 23 1997 /etc/resolv.conf

ls 的 -l 选项请求所有这些附加信息。右边的信息很容易理解 - 文件大小是 119 字节,文件上次更改的日期是 1997 年 2 月 23 日,文件名是 /etc/resolv.conf。在屏幕的左侧,事情变得有点复杂。

首先,简短的技术解释:-rw-r--r-- 是文件的 *模式*,1 是指向此文件的硬链接数(或目录中文件的数量),而两个 root 是拥有文件的用户和组。

这有点晦涩难懂。让我们慢慢地过一遍(除了硬链接部分 --- 关于这一点,请参阅 文件的真实性质:硬链接和 inode,第 16.2.1 节)。


7.1.1 文件所有权

每个文件都有两个所有者 --- 一个用户和一个组。上面的情况有点令人困惑,因为除了 root 用户之外,还有一个名为 root 的组。组只是用户的集合,这些用户被集体允许访问系统的某些部分。一个很好的例子是 games 组。只是为了有点苛刻,您可以设置您的系统,以便只有 games 组中的人才能玩游戏。

一个更实际的例子:假设您正在为学校设置一台计算机。您可能希望某些文件只能由教师访问,而不是学生,因此您将所有教师放在一个组中。然后您可以告诉系统,某些文件属于 teachers 组的成员,并且其他任何人都不能访问这些文件。

以下是一些您可以用来探索系统上组的操作

  1. groups

    在 shell 提示符下键入此命令将告诉您您是哪些组的成员。您很可能只属于一个组,该组与您的用户名相同。

  1. more /etc/group

    此文件列出了系统上存在的组。请注意 root 组(此组的唯一成员是 root 用户),以及与您的用户名对应的组。还有一些组,如 dialout(允许用户通过调制解调器拨号),和 floppy(可以使用软盘驱动器的用户)。但是,您的系统可能未配置为使用这些组 --- 很可能只有 root 用户现在可以使用软盘或调制解调器。有关此文件的详细信息,请尝试阅读 man group

  1. ls -l /home

    观察每个用户的目录是如何由该用户和该用户的个人组拥有的。(如果您刚安装了 Debian,您可能是唯一的用户。)


7.1.2 模式

除了由一个用户和一个组拥有之外,每个文件和目录还有一个模式,该模式决定了谁可以读取、写入和执行该文件。还有一些其他的事情也由模式决定,但它们是高级主题,所以我们现在跳过它们。

模式在 ls 输出中看起来像这样:-rw-r--r--。这里有十个“元素”,而模式实际上由十二位组成(将位想象成可以打开或关闭的开关)。但现在,我们只考虑其中的九位:那些控制 拥有文件的 *用户*、拥有文件的 *组* 以及 *其他* 人员(系统上的每个人,有时称为 *世界*)的 读取、写入 和 执行 权限的位。

请注意,三种权限(读取、写入、执行)乘以三组可以拥有权限的人员(用户、组、其他人)总共构成九个元素。

在模式行中,第一个“元素”给出了文件的类型。在这种情况下,- 表示它是一个常规文件。如果它是 d,我们将看到一个目录。还有其他一些现在过于复杂而无法介绍的可能性(请参阅 文件权限的高级方面,第 16.2.4 节)。

其余九个“元素”用于显示构成文件模式的 12 位。基本的 9 位(用户、组和其他人的读取、写入和执行)显示为三个 rwx 块。

因此,如果所有权限都已打开,并且这是一个常规文件,则模式将如下所示:-rwxrwxrwx。如果它是一个目录,其他人的所有权限都已关闭,而用户和组的权限已满,则它将是 drwxrwx---。(其余三位通过将 x 更改为 stST 来显示,但这是一个复杂的主题,我们将其保留给 文件权限的高级方面,第 16.2.4 节。)

对于常规文件,“读取”、“写入”和“执行”具有以下含义

目录模式有点令人困惑,所以这里有一些各种组合效果的示例

目录写入权限决定了您是否可以删除目录中的文件 --- 如果您有权写入包含只读文件的目录,则可以删除只读文件。您无法从只读目录中删除文件,即使您被允许更改文件。文件权限与删除文件无关。

这也意味着,如果您拥有一个目录,您可以始终从中删除文件,即使这些文件属于 root 用户。

目录执行权限决定了您是否可以访问文件 --- 以及文件权限是否起作用。如果您拥有目录的执行权限,则该目录的文件权限变得相关。否则,文件权限就无关紧要了;无论如何您都无法访问这些文件。

如果您拥有目录的执行权限,则文件权限决定了您是否可以读取文件的内容、更改文件和/或将文件作为命令执行。

最后,更改文件或目录权限的权限不受该文件或目录权限的影响。相反,只要您被允许访问文件,您始终可以更改您拥有的文件或目录的权限,但不能更改其他人拥有的文件。因此,如果您可以访问您拥有的文件(也就是说,您拥有包含该文件的目录的执行权限),那么您可以更改其权限。

这意味着您无法永久删除自己的权限,因为您始终可以将其恢复。假设您从您拥有的文件中删除用户写入权限,然后尝试更改该文件。这将不被允许,但是您始终可以再次授予自己写入权限,然后更改该文件。失去更改权限能力的唯一方法是完全失去对文件的访问权限。


7.1.3 实践中的权限

本节将通过一个简短的示例会话来演示如何使用权限。

要更改权限,我们将使用 chmod 命令。

  1. cd; touch myfile

    这里有一些新技巧。首先,您可以使用 ; 将两个命令放在一行上。您可以将上面输入为

         $ cd 
         $ touch myfile
    

    或输入为

         $ cd; touch myfile
    

    最终会发生同样的事情。

    回想一下,单独使用 cd 会将您返回到您的主目录。touch 通常用于将文件的修改时间更改为当前时间,但它还有另一个有趣的功能:如果文件不存在,touch 将创建该文件。因此,我们使用它来创建一个文件进行练习。使用 ls -l 确认文件已创建,并注意权限模式

         $ ls -l 
         -rw-r--r-- 1 havoc havoc 0 Nov 18 22:04 myfile
    

    显然,当您尝试时,时间和用户/组名称将有所不同。文件的大小为 0,因为 touch 创建一个空文件。-rw-r--r-- 是 Debian 上的默认权限模式。

  1. chmod u+x myfile

    此命令意味着为拥有文件的用户 (u) 添加 (+) 执行 (x) 权限。使用 ls -l 查看效果。

  1. chmod go-r myfile

    在这里,我们从拥有文件的组 (g) 以及其他所有人(其他人,o)中减去 (-) 读取权限 (r)。再次,使用 ls -l 验证效果。

  1. chmod ugo=rx myfile

    在这里,我们将用户、组和其他人的权限设置为 (=) 读取和执行。这会将权限设置为您指定的精确值,并取消设置任何其他权限。因此,所有 rx 都应该被设置,并且所有 w 都应该被取消设置。现在,没有人可以写入文件。

  1. chmod a-x myfile

    augo 或“all”的快捷方式。因此,现在应该取消设置所有 x 权限。

  1. rm myfile

    我们正在删除文件,但没有写入权限。rm 会询问您是否确定

         rm: remove `myfile', overriding mode 0444?
    

    您应该通过键入 y 并按 Enter 键来响应。这是 rm 的一个功能,而不是权限的事实 - 删除文件的权限来自目录权限,并且您在目录中具有写入权限。但是,rm 试图提供帮助,认为如果您不想更改文件(因此删除了写入权限),您也不想删除它,因此它会询问您。

rm 问题中的 0444 是什么意思?权限模式是一个十二位二进制数,例如:0001001001000444 是这个二进制数表示为八进制(以 8 为基数)数字,这是编写模式的传统方式。因此,您可以键入 chmod 444 myfile 而不是 chmod ugo=r myfile。这在 文件权限的高级方面,第 16.2.4 节 中有完整解释。


7.2 我的系统上有哪些文件?我可以将自己的文件放在哪里?

现在您可以导航目录树了,让我们来一次导览,了解您在安装 Debian 时创建的文件和目录。如果您好奇,请 cd 到每个目录并键入 ls 以查看其内容。如果列表不适合屏幕,请尝试 ls | more,其中 | 是“管道”字符,通常与反斜杠在同一个键上。

/

如前所述,这是根目录,它包含所有其他目录。

/root

但不要将 //root 混淆!/root 是 root 用户或超级用户的主目录。它是一个名为 /root 的目录,但它不是根目录 /

/home

这是所有普通用户 --- 即除 root 用户外的所有用户 --- 拥有其主目录的地方。主目录以拥有它们的用户命名,例如,/home/jane。如果您在学校或企业中使用大型系统,您的系统管理员可能会创建其他目录来包含主目录:例如 /home1/home2。在其他一些系统中,您会看到一个额外的子目录级别:/home/students/username/home/staff/username 等...

您的主目录是您放置所有个人工作、电子邮件和其他文档以及个人配置首选项的地方。它是您在系统中的家。

/bin

此目录包含“二进制文件”,即可执行文件,这些文件对于系统的运行至关重要。示例包括 shell (bash) 和文件命令,例如 cp

/sbin

此目录包含“系统二进制文件”,即 root 用户或系统管理员可能想要使用的实用程序,但您可能不想在日常活动中使用它们。

/usr

/usr 包含您会感兴趣的大部分文件。它有许多子目录:/usr/bin/usr/sbin/bin/sbin 非常相似,只是 /usr 中的目录不被认为是“系统运行所必需的”。

虽然对于使计算机工作不是必需的,但 /usr 确实包含您将用于完成实际工作的应用程序。在 /usr 中,您还会找到 /usr/man/usr/info/usr/doc 目录 --- 这些目录分别包含手册页、信息页和其他文档。并且不要忘记 /usr/games

/usr/local

Debian 系统不会在此目录中安装任何内容。如果您想安装自己编译的软件或 Debian 软件包中未包含的任何软件,则应使用它。如果您是唯一使用它的人,您也可以在主目录中安装软件。

/etc

/etc 包含所有系统范围的配置文件。每当您想更改影响计算机所有用户的内容时 --- 例如您如何连接到互联网,或者您拥有哪种类型的视频卡 --- 您可能必须以 root 用户身份登录并更改 /etc 中的文件。

/tmp

在这里您会找到临时文件,其中大多数是由系统创建的。此目录通常会定期擦除,或者每次您重新启动系统时擦除。如果您愿意,可以在此处创建文件,但请注意它们可能会被自动删除。

/var

/var 包含“可变”文件,系统会自动更改这些文件。例如,收到的邮件存储在此处。系统在此处保留其操作日志。此处还有许多其他自动生成的文件。您主要会对 /var/log 的内容感兴趣,您可以在其中找到错误消息,并尝试弄清楚如果出现问题,您的系统正在做什么。

显然,系统上还有更多目录,多到无法描述每一个目录。

对于更改内容,您通常希望将自己限制在您的主目录和 /etc 中。在 Debian 系统上,很少有机会更改其他任何内容,因为其他所有内容都会自动为您安装。

/etc 用于配置整个 *系统*。您将使用您自己的主目录,即 /home 的子目录,来配置您自己的首选项和存储您的个人数据。想法是,在日常生活中,您将自己限制在 /home/yourname 中,这样您就不会破坏任何东西。偶尔,您会以 root 用户身份登录以更改系统范围目录中的某些内容,但仅在绝对必要时才这样做。当然,如果您在学校或企业中使用 Debian,而其他人是系统管理员,您将没有 root 访问权限,并且只能更改您的主目录。这限制了您可以对系统执行的操作。


7.3 使用文件管理器

您可以使用文件管理器,而不是手动移动文件。如果您移动大量文件,文件管理器可以使您的工作更有效率。有基于文本的文件管理器,例如 GNU Midnight Commander(键入 mc),以及许多用于 X Window 系统的文件管理器(例如 gmc,用于 GNU Midnight Commander 的 X Window 版本)。

描述这些中的每一个都超出了本手册的范围;但是,如果命令行不能满足您的需求,您可能需要尝试它们。


[ 上一页 ] [ 目录 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ 17 ] [ 18 ] [ A ] [ B ] [ C ] [ D ] [ 下一页 ]


Debian 教程 (过时文档)

2009 年 12 月 29 日

Havoc Pennington hp@debian.org