other versions
other sections
PATH_RESOLUTION(7) | Linux Programmer's Manual | PATH_RESOLUTION(7) |
名前¶
path_resolution - ファイルのパス名の解決方法説明¶
いくつかの UNIX/Linux システムコールは、 1 つ以上のファイル名を引き数として持つ。 ファイル名 (またはパス名) は以下のようにして解決される。ステップ 1: 解決過程を開始する¶
パス名が '/' 文字で始まっている場合、 ディレクトリ検索の開始点は呼び出し元のプロセスのルートディレクトリになる。 (プロセスはルートディレクトリを親プロセスから継承する。 通常は、これがファイル階層のルートディレクトリになる。 プロセスは chroot(2) システムコールを使って別のルートディレクトリを取得することもできる。 この場合、そのプロセスと CLONE_NEWNS フラグを設定して clone(2) を呼び出すことによって開始されたそのプロセスの子孫は、 完全にプライベートなマウント名前空間を取得できる。) パス名の '/' の部分は、このようにして扱われる。ステップ 2: パスを辿る¶
現在の検索ディレクトリをディレクトリ検索の開始点とする。 そして、パス名の最後の構成要素 (component) でない各構成要素について、 現在の検索ディレクトリで検索を行う。 ここで構成要素は '/' で区切られた部分文字列である。ステップ 3: 最後のエントリを見つける¶
パス名の最後の構成要素の検索は、前のステップで説明した 他の全ての構成要素と同じように実行されるが、2 つの違いがある。 (i) 最後の構成要素はディレクトリである必要がない (パス解決過程に関する限りはどちらでも構わない — 特定のシステムコールが要求するものによって、 ディレクトリでなければならない場合もあるし、 ディレクトリ以外でなければならない場合もある)。 (ii) 構成要素が見つからない場合にエラーにする必要はない — その構成要素を作成するだけでよい場合もある。 最後のエントリの詳細な扱いは、 特定のシステムコールの man ページで説明されている。. と ..¶
慣習として、全てのディレクトリはエントリ "." と ".." を持つ。 これらはそれぞれ、そのディレクトリ自身とその親ディレクトリを参照する。マウント位置¶
"mount dev path" コマンドを実行した後、 パス名 "path" はデバイス "dev" 上のファイルシステム階層の ルートディレクトリを参照するようになり、以前の位置を参照しない。末尾のスラッシュ¶
パス名が '/' で終わっている場合、 ステップ 2 において、その前にある構成要素の解決法を次のように強制する: その構成要素が存在しなければならず、ディレクトリとして解決される。 存在しない場合は、末尾の '/' が無視される。 (また同様に、末尾に '/' があるパス名は、 '.' を末尾に加えて得られるパス名と等しい。)最後がシンボリックリンクのとき¶
パス名の最後の構成要素がシンボリックリンクである場合、 参照されるファイルをシンボリックリンクとするか、 その内容についてパスを解決した結果とするかは、 システムコールに依存する。 たとえば、システムコール lstat(2) はシンボリックリンクに作用する。 一方、 stat(2) はシンボリックリンクで指されたファイルに作用する。長さの制限¶
パス名には最大長がある。 パス名 (またはシンボリックリンクを解決するときに得られる中間パス名) が 長すぎる場合、 ENAMETOOLONG エラーが返される ("Filename too long")。空のパス名¶
元々の UNIX では、空のパス名は現在のディレクトリを参照していた。 最近、POSIX では空のパス名を解決するべきではないという決定がなされた。 この場合、Linux は ENOENT を返す。許可¶
ファイルの許可ビットは、3 組の 3 ビットから構成される。 chmod(1) と stat(2) を参照すること。 呼び出し元のプロセスの実効ユーザ ID がファイルの所有者 ID と等しい場合、 3 つのうち最初のグループが使われる。 ファイルのグループ ID が呼び出し元のプロセスの実効グループ ID または ( setgroups(2) で設定される) 呼び出し元のプロセスの補助 (supplementary) グループ ID と 等しい場合、3 つのうち 2 番目のグループが使われる。 どちらにも当てはまらない場合、3 番目のグループが使われる。許可の確認をスキップする: スーパーユーザとケーパビリティ¶
伝統的な UNIX システムでは、スーパーユーザ ( root, ユーザ ID 0) は非常に強力であり、ファイルアクセス時の 許可による制限を全てスキップする。関連項目¶
readlink(2), capabilities(7), credentials(7), symlink(7)この文書について¶
この man ページは Linux man-pages プロジェクトのリリース 3.41 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。2009-12-05 | Linux |