Mac OS X 中权限问题的故障排除

通过本文了解 Mac OS X 中“权限”的概念,因不正确的权限设置导致的问题,以及如何排除这种故障。

本文章已经归档,因此 Apple 将不再对其进行更新。

使用修复权限实用工具

Mac OS X 的大多数用户都不会故意修改权限,而只是需要一个工具将系统权限重置为它们适当的默认值。如果您拥有 Mac OS X 10.2 以上版本,那么操作系统中包括了该实用工具。如果您使用的是 Mac OS X 10.1,那么您可以下载它。对于 10.0 - 10.1.4 版本,您必须先更新到 10.1.5 版。

对于 Mac OS X 10.2 以上的版本,打开“磁盘工具” (/Applications/Utilities/)。在“磁盘工具”窗口左侧的列中选定您的 Mac OS X 启动卷,然后单击 First Aid 选项卡。单击“修复磁盘权限”按钮。您可能会看到一条错误消息

如果您修改过 /Library/Receipts 文件夹的内容,那么“修复权限”功能可能无法正常运行。修复权限需要拥有 Apple 安装的软件许可。另外,实用工具只能修复 Apple 安装的软件和文件夹(不包括用户的 root 文件夹)。

要获取详细信息,请参看“关于磁盘工具的修复磁盘权限功能(Mac OS X 10.2, 10.3)”。

本文档的其余部分包含了一些更高级的信息。

注意:在 Mac OS X 10.5 以上版本中,当从 Mac OS X 10.5 安装盘启动(“引导”)时,可以使用重置密码实用工具来重置用户的主目录权限。

警告:本文描述了您可以如何通过在“终端”应用程序中输入命令来修改权限设置。不熟悉“终端”和 UNIX 环境的用户应该谨慎行事。输入错误的命令可能会导致数据丢失和(或)系统软件不可用。权限的不当修改可能会降低系统的安全性和(或)造成私人数据泄露。

定义的权限

Mac OS X 集成了一个以 UNIX 操作系统为基础的子系统,它在文件系统中使用权限。硬盘中的每个文件和文件夹都有一组相关的权限,可以读取、写入或执行它。下面使用 AppleWorks 应用程序及其文档作为示例来解释权限的意义:

  • 读取 (r--)
    如果您有 AppleWorks 文档的读取权限,那么您就可以打开它。
  • 写入 (-w-)
    如果您有 AppleWorks 文档的写入权限,那么您就可以保存对其所做的更改。
  • 执行 (--x)
    如果您有 AppleWorks 应用程序的执行权限,那么您可以打开它。

    还需要注意的是,您必须拥有文件夹的执行权限才能打开它;因此,“文件共享”需要拥有 ~/Public 文件夹一组分别针对其他人、全世界、每个人的执行权限;而“Web 共享”需要拥有 ~/Sites 文件夹同样的一组权限。

当您可以做到所有三种操作时,您就拥有了“rwx”权限。文件夹的权限与此类似。具有内含文档的文件夹的只读权限,您可以打开和读取其中的文档,但不能保存对该文件夹所做的更改,也不能为该文件夹添加新的文档。只读 (r--) 权限是常用于客户访问的文件共享。

所有者、组、其他

像“rwx”和“r-x”这样的简写描述了一个用户或一个实体的权限。每个文件或文件夹的权限设置都定义了三个实体的访问能力:所有者其他

  • 所有者 —— 所有者通常是创建该文件的用户。在您的 root 目录下的几乎所有文件和文件夹都将您的用户名列作所有者。
  • —— Admin 用户就是一些被称为“staff”和“admin”的组的成员。超级用户“root”是这些及其他一些组的成员。通常情况下,所有文件和文件夹都被分配到“staff”、“admin”或“wheel”等组中。
  • 其他 —— 其他是指某个文件或文件夹的所有者或组成员之外的其他所有用户。

因为每个实体都有其自己的权限,如一个完整的权限组可能为“-rwxrw-r--”。前面的连字符指定该项目是一个文件而不是文件夹。文件夹的权限以“d”开头,如“drwxrw-r--”。“d”代表 directory(目录),表示文件夹。图 2(下图所示)描述了它在 Terminal 应用程序中的情况。

将权限缩写为数字

有时,您可能会认为键入“-rwxrwxr-x”有些麻烦。正是如此,这就是为什么会有一种简便方式,将权限缩写成范 围为 777 (-rwxrwxrwx) - 000 (no access) 的数字。“rwx”就可以写成 7(1、2 、4 的和),其中 4 表示读取、2 表示写入、1 表示执行。0 表示没有任何访问权限。3 位数字可以分别表示所有者、组和其他的权限总和。因此,示例“-rwxrwxr-x”就可以写作 775。

示例:创建一个 TextEdit 文档

假设您创建了一个 TextEdit 文档,并将它保存到 root 目录下的 Documents 文件夹中。该文档具有“-rw-r--r--”权限,因此,您可以读取和写入该文件;但是指定的组及其他用户只能读取它。因为您将该文件保存到您的 Documents 文件夹 (drwx------) 中,所以组及其他用户甚至不能查看您的文件。文件夹的权限将会取代内含文件自己的权限。这就是 Mac OS X 的 root 目录结构提供私密性的方式。如果您将该文件拖到您的 Public 文件夹 (drwxr-xr-x) 中并注销,那么其他用户可以登录到该计算机并读取您的公用文件。

新文件和文件夹的默认设置

权限设置

  • 用户是指创建新文件或文件夹的用户。
  • 组是指创建文件或文件夹的用户的默认组。

权限

  • 文件夹或目录:drwxr-xr-x
  • 文件:-rw-r--r--

root:“超级用户”

在 Mac OS X 中,在安装系统时将会创建一个名为 root 的超级用户。 root 用户对计算机上的所有文件和文件夹都有完全的访问权限,并且还具有一般用户没有的其他管理访问权限。在计算机的正常使用中,您并不需要以 root 用户的身份登录。事实上,默认情况下, root 用户是被禁用的。

与权限相关的问题

不正确的权限设置可能会造成一些意外情况。下面是一些故障排除建议的示例:

  • 应用程序的安装程序,Applications 文件夹
    第三方应用程序的安装程序对它所安装的文件、甚至整 个 Applications 文件夹的权限设置不太正确。Applications 文件夹权限设置不正确的症状包括应用程序在桌面上显示为问号,和(或)不能连接到互联网。以某个用户的身份登录时安装的软件在以另一个用户身份登录时也可 能是不可用的。要避免这种情况,请确保在安装想要用于通常用户账号的软件时,以该用户账户登录。
     
  • 在 Mac OS 9 中创建的文件
    在 Mac OS 9 中创建的文件很可能在 Mac OS X 中显示具有 root 权限。当您在同时安装了 Mac OS X 的计算机上启动 Mac OS 9 时,您可以查看、移动和删除所有的文件,这相当于您具有 root 权限。因此,在启动 Mac OS 9 时移动或打开不熟悉的文件或文件夹是一种不太好的习惯。
     
  • 电源中断
    文件系统在电源中断(非正常关机)或它停止响应(“悬挂”或“冻结”)时可能会受到影响。这可能会影响到权限设置。您可能需要使用 fsck
     
  • 软件访问 = 用户访问
    由某用户执行的大多数应用程序只能访问该用户可以访问的文件。例如,备份软件可能无法备份具有 root 权限的 Mac OS X 系统文件。
  • 清空“废纸篓”
    在 某些情况下,虽然您可以将没有写入权限的文件夹放入“废纸篓”中,但您不能删除它及其中的文件。请记住,在 Mac OS X 中,Trash 文件夹并不是单独一个,每个用户在其 root 目录下都有一个 Trash 文件夹(名为“.Trash”)。启动卷中也有一个 Trash 文件夹,其他卷或磁盘都有 Trash 文件夹。当某个用户将一个文件扔到本地非启动卷中时,该卷中的文件夹名为“/.Trashes/UID”,其中 UID 是该用户的用户 ID 号(可以在 NetInfo Manager 中查看该号码)。无论是哪种情况,在 Finder 中,所有 Trash 文件夹对于用户都是隐藏的。在这些情况下,您可以启动 Mac OS 9 来定位和删除文件,也可以使用 Terminal 应用程序。在 Mac OS X 10.2 以上版本中是很少出现清空“废纸篓”问题的,因为 Finder 是以 root 用户身份来清空“废纸篓”的。但是,对于您的本地 root 用户不具有特殊权限的远程卷中的文件,仍可能出现问题。

警告:键入错误或错误使用“rm -rf”命令可能会导致数据丢失。例如,在错误的地方插入空格可能会导致彻底删除硬盘中的数据。您可能希望将下面的命令复制并粘贴到文本编辑器中,以验证空格的正确性。请按照下面的步骤操作来以登录用户身份删除“废纸篓”:

  1. 打开 Terminal 应用程序。
  2. 键入: sudo rm -rf
    注意:在“-rf”后键入一个空格。没有空格该命令将不能执行。在步骤 6 之前请不要按下 Return 键。
  3. 打开您的“废纸篓”。
  4. 从“编辑”菜单中选择“全选”。
  5. 将“废纸篓”中的所有内容都拖到 Terminal 窗口中。这将会使 Terminal 窗口自动填入您的“废纸篓”中的每个条目的名称及位置。
  6. 按下 Return 键。

您的“废纸篓”中的所有条目都会被删除。作为替代方法,您可以执行下面这些命令。第二个和第三个命令将会删除其他用户的“废纸篓”。这些命令为:

警告:键入错误或错误使用“rm -rf”命令可能会导致数据丢失。例如,在错误的地方插入空格可能会导致彻底删除硬盘中的数据。您可能希望将下面的命令复制并粘贴到文本编辑器中,以验证空格的正确性。

重点:下面的“/”和“.Trash”或“.Trashes”之间没有空格。

sudo rm -rf ~/.Trash/
sudo rm -rf /.Trashes/
sudo rm -rf /Volumes/<volumename>/.Trashes/

注意:要结束 sudo 会话,您可以执行 exit 命令,也可以注销 Mac OS X,然后重新登录。

个别情况下,这将会永久删除当前用户“废纸篓”、启动卷“废纸篓”及其他卷“废纸篓”(若有的话)中所有文件。这些命令不能删除锁定的文件。您必须先取消锁定它们。

注意:sudo 命令可以用来暂时获得超级用户的状态,来更改其他情况下不能更改的文件的权限。但是,只有当您以管理员账户登录时才能使用它,并且它需要管理员账号密码以进行身份验证。

如何在 Finder 的“简介”窗口中查看和更改权限

Mac OS X Finder 可以用来查看和修改一些文件和文件夹的权限设置。您只能更改您作为所有者的文件和文件夹的权限。这将会有助于排除与权限相关的问题故障。要在“简介”窗口查看和更改权限,请按照下面的步骤进行操作:

  1. 在 Finder 中选定文件或文件夹。
  2. 从“文件”菜单中选择“显示”。
  3. 在“简介”窗口中从弹出菜单中选择“权限”。
  4. 使用弹出菜单,根据需要更改权限设置(图 1)。
  5. 可选操作:如果您更改的是文件夹的权限,并且想把更改应用于其中的文件夹,那么请单击“应用”。只有当您显示文件夹的信息时,才会显示“应用”。

注意:一旦使用“简介”窗口进行更改,甚至在关闭该窗口之前,就会应用所做的更改。


图 1“简介”窗口中的权限

使用 Terminal 查看和更改权限

“终端”应用程序位于“应用程序>实用工具“文件夹内。您可以使用“终端”来查看或更改权限。与使用 Finder 的“简介”窗口不同,sudo 命令允许您更方便地进行 root 级访问,不必先注销再以 root 用户登录。

警告:要利用该工具需要具备一些命令行的基本知识。如果“终端”应用程序使用不当,那么可能会导致数据丢失和(或)系统软件不可用。

要确定文件或文件夹的权限设置,请打开“终端”,然后定位到文件或文件夹所处的目录。然后执行命令“ls -l”。输出结果如图 2 所示。


图 2使用“终端”查看权限

在图 2 示例中,任何用户都可以读取“File Name1.ext”文件,因为读取位(r)是针对其他设置的。但是,只有 root 用户才能更改文件,因为写入位(w)只对所有者(即 root 用户)才是有效的。如果文件不是系统文件,并且您希望能够从通常使用的账户进行修改,那么您可以使用下面的命令来更改所有者:

sudo chown yourusername "File Name1.ext"

因为该文件是由 root 用户而非登录的用户拥有的,所以“sudo”命令将会使您暂时拥有 root 访问权。请使用您的账号的缩写名称替代“yourusername”。

空格语法:在“终端”中键入文件路径中的空格时请特别小心。在该示例中,文件名是用引号引住的,因为它包含一个空格。另外,您可以使用后跟一个空格的反斜线来替代空格。在没有引号的情况下,同样的命令将键入为:

sudo chown yourusername File\ Name1.ext

要获取更多有关更改权限、组和权限的信息,请参看有关 chown、chgrp 和 chmod 的指导页面。您可以通过执行“man <command_name>”来访问指导页面。例如:

man chmod

默认情况下,一次只能显示一个指导页面。要读取下一页,请按下空格键。要退出指导页面,请按下 Q 键。

发布日期: 2016-01-28