Solaris のシステム管理 (上級編)

第 19 章 ファイルアクセスでの問題の解決 (手順)

この章では、適切でないアクセス権と検索パスに関連する問題などのファイルアクセスでの問題を解決する手順について説明します。

この章で説明する手順は次のとおりです。

以前は使用できていたプログラム、ファイル、またはディレクトリにアクセスできないため、システム管理者に問い合わせる場合があります。

このようなときは、次の 3 点を調べてください。

この章では、これらの 3 点を確認する方法を簡単に説明して、可能な解決策を提案します。

検索パスに関連する問題を解決する (コマンドが見つかりません)

コマンドが見つかりません」のメッセージは、以下のどれかを意味します。

検索パスの問題を解決するには、コマンドが格納されているディレクトリのパス名を知る必要があります。

間違ったバージョンのコマンドが見つかってしまうのは、同じ名前のコマンドを持つディレクトリが検索パスにある場合です。この場合、正しいディレクトリが検索パスの後ろの方にあるか、まったく存在しない可能性があります。

現在の検索パスを表示するには、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 ファイルの中のパス情報を調べます。.cshrc ファイルに which コマンドの認識する別名を定義している場合に、Bourne シェルか Korn シェルから which コマンドを実行すると、間違った結果が返される場合があります。正しい結果を得るために、which コマンドは C シェルで使用してください。Korn シェルの場合は、whence コマンドを使用します。


Procedure検索パスの問題を診断して解決する方法

  1. 現在の検索パスを表示して、コマンドが入っているディレクトリがユーザーのパス内に存在しない (あるいはスペルが間違っている) ことを確認します。


    $ echo $PATH 
    
  2. 次の点を確認します。

    • 検索パスは正しいか

    • 検索パスは、別バージョンのコマンドが見つかったほかの検索パスの前にリストされているか

    • 検索パスのいずれかにコマンドが存在するか

    パスを修正する必要がある場合は、手順 3 に進みます。修正する必要がない場合は、手順 4 に進みます。

  3. 次の表に示すように、適切なファイルでパスを追加します。

    シェル 

    ファイル 

    構文 

    注釈 

    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. 次のように、新しいパスを有効にします。

    シェル 

    パスが指定されているファイル 

    パスを有効にするコマンド 

    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 データベースから削除されたときにも発生します。

アクセスに問題のあるファイルのアクセス権または所有権を変更する方法については、『Solaris のシステム管理 (セキュリティサービス)』の第 6 章「ファイルアクセスの制御 (作業)」を参照してください。

ネットワークアクセスで発生する問題の把握

リモートコピーコマンド rcp を使用してネットワーク上でファイルをコピーするときに問題が発生した場合、リモートシステム上のディレクトリやファイルは、アクセス権の設定によりアクセスが制限されている可能性があります。他に考えられる問題の原因は、リモートシステムとローカルシステムがアクセスを許可するように構成されていないことです。

ネットワークアクセスに伴う問題、および AutoFS を通じたシステムへのアクセスでの問題については、『Solaris のシステム管理 (ネットワークサービス)』「NFS のトラブルシューティングの方法」を参照してください。