この章では、適切でないアクセス権と検索パスに関連する問題などのファイルアクセスでの問題を解決する手順について説明します。
この章で説明する手順は次のとおりです。
以前は使用できていたプログラム、ファイル、またはディレクトリにアクセスできないため、システム管理者に問い合わせる場合があります。
このようなときは、次の 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 コマンドを使用します。
現在の検索パスを表示して、コマンドが入っているディレクトリがユーザーのパス内に存在しない (あるいはスペルが間違っている) ことを確認します。
$ echo $PATH |
次の点を確認します。
パスを修正する必要がある場合は、手順 3 に進みます。修正する必要がない場合は、手順 4 に進みます。
次の表に示すように、適切なファイルでパスを追加します。
シェル |
ファイル |
構文 |
注釈 |
---|---|---|---|
Bourne と Korn |
$HOME/.profile |
$ PATH=$HOME/bin:/sbin:/usr/local/bin ... $ export PATH |
パス名はコロンで区切る |
C |
$HOME/.cshrc または $HOME/.login |
hostname% set path=( ~bin /sbin /usr/local/bin ...) |
パス名は空白文字で区切る |
次のように、新しいパスを有効にします。
シェル |
パスが指定されているファイル |
パスを有効にするコマンド |
---|---|---|
Bourne と Korn |
.profile |
$ . ./.profile |
C |
.cshrc |
hostname% source .cshrc |
|
.login |
hostname% source .login |
新しいパスを確認します。
$ which command |
この例は、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 のトラブルシューティングの方法」を参照してください。