系统管理指南:高级管理

第 19 章 文件访问问题疑难解答(任务)

本章提供有关解决文件访问问题(例如与不正确的权限和搜索路径有关的问题)的信息。

以下是本章中疑难解答主题的列表。

用户经常由于无法访问以前可用的程序、文件或目录等问题,而向系统管理员寻求帮助。

当您遇到此类问题时,请检查是否是由以下三个方面的某一问题引起:

本章简要介绍如何识别上述每个方面的问题,并提出可能的解决方案。

解决搜索路径的问题(Command not found

Command not found 消息表示存在以下情况之一:

要解决搜索路径问题,您需要知道存储命令的目录的路径名。

如果找到了该命令的错误版本,则一个包含同名命令的目录会出现在搜索路径中。在这种情况下,正确的目录可能稍后会出现在搜索路径中,或者根本不会出现。

使用 echo $PATH 命令可以显示当前的搜索路径。例如:


$ echo $PATH 
/home/kryten/bin:/sbin:/usr/sbin:/usr/bin:/usr/dt:/usr/dist/exe

使用 which 命令可以确定您所运行的命令是否是一个错误版本。例如:


$ which acroread 
/usr/doctools/bin/acroread

注 –

which 命令在 .cshrc 文件中查找路径信息。如果从 Bourne 或 Korn shell 中执行 which 命令,并且有一个 .cshrc 文件中包含 which 命令的别名,则该命令可能会提供误导性的结果。为确保结果的准确性,请在 C shell 中使用 which 命令,或在 Korn shell 中使用 whence 命令。


Procedure如何诊断和更正搜索路径问题

  1. 显示当前搜索路径,以验证命令的目录是否不在路径中,或验证该路径是否有拼写错误。


    $ echo $PATH 
    
  2. 检查以下各项:

    • 搜索路径是否正确?

    • 该搜索路径是否在找到了该命令另一个版本的其他搜索路径之前列出?

    • 命令是否位于其中一个搜索路径中?

    如果需要更正路径,请转到步骤 3。否则,请转到步骤 4。

  3. 将路径添加到相应文件,如下表所示。

    Shell 

    文件 

    语法 

    说明 

    Bourne 和 Korn 

    $HOME/.profile

    $ PATH=$HOME/bin:/sbin:/usr/local /bin ...

    $ export PATH

    用冒号分隔路径名。 

    $HOME/.cshrc

    或 

    $HOME/.login

    hostname% set path=( ~bin /sbin /usr/local/bin ...)

    用空格分隔路径名。 

  4. 按以下方式激活新路径:

    Shell 

    路径所在的文件 

    激活路径的命令 

    Bourne 和 Korn 

    .profile

    $ . ./.profile

    .cshrc

    hostname% source .cshrc

     

    .login

    hostname% source .login

  5. 验证新路径。


    $ which command
    

示例 19–1 诊断和更正搜索路径问题

此示例显示执行 which 命令后发现,mytool 可执行文件并不存在于搜索路径中的任何目录内。


venus% mytool
mytool: Command not found
venus% which mytool
no mytool in /sbin /usr/sbin /usr/bin /etc /home/ignatz/bin  .
venus% echo $PATH
/sbin /usr/sbin /usr/bin /etc /home/ignatz/bin
venus% vi ~/.cshrc
(Add appropriate command directory to the search path)
venus% source .cshrc
venus% mytool

如果找不到某一命令,请在手册页中查看其目录路径。例如,如果找不到 lpsched 命令(lp 打印机守护进程),lpsched(1M) 手册页会告知您路径是 /usr/lib/lp/lpsched


解决文件访问问题

当用户无法访问以前可以访问的文件或目录时,可能是这些文件或目录的权限或拥有权已经更改。

更改文件和组的拥有权

通常,文件和目录的拥有权会因为有人以超级用户的身份编辑文件而发生变化。在为新用户创建起始目录时,务必要使该用户成为起始目录中的点 (.) 文件的属主。如果用户不是 "." 的属主,他们将无法在自己的起始目录中创建文件。

当组拥有权发生变化或从 /etc/group 数据库中删除了某用户所属的组时,也可能会发生访问问题。

有关如何更改存在访问问题的文件的权限或拥有权的信息,请参见《系统管理指南:安全性服务》中的第 6  章 “控制对文件的访问(任务)”

识别网络访问问题

如果用户在使用 rcp 远程复制命令通过网络复制文件时遇到问题,则可能是通过设置权限对远程系统中的目录和文件进行了访问限制。另一个可能的原因是未将远程系统和本地系统配置为允许访问。

有关网络访问以及通过 AutoFS 访问系统时遇到的问题的信息,请参见《系统管理指南:网络服务》中的“NFS 疑难解答的策略”