Linuxのiナンバ、iノード番号について

このQ&Aのポイント
  • Linuxのiナンバ、iノード番号について解説します。
  • ディレクトリはファイルとiノードを関連付けるためのテーブルであり、ファイル名とiノードのペアはリンクと呼ばれます。
  • 同じiノード番号が2つ以上のリンク中に現れてはならない理由について説明します。
回答を見る
  • ベストアンサー

Linuxのiナンバ、iノード番号について

いつもお世話になっております。 小生、現在Linuxをもっと深く知る為にLinuxを勉強中のLinux中級(よりちょっと下です)者です。 今回、先輩方にご教示願いたいのは、 以下に記述させて頂く、書籍に記述されているiノード番号の解説です。 『本質的にはディレクトリは、ファイルとiノードを関連付けるためのただのテーブルである。  ディレクトリ内の各ファイル名とiノードのペアは、リンクと呼ばれる。』 この文章は理解できるのですが、理解出来なくて困っているのが、上記の文章に続く、 下記の一節です。 『そうだとすると、同じiノード番号が2つ以上のリンク中に現れてはならない、ということに理由はなくなる』 この文節が理解できません。 >同じiノード番号が2つ以上のリンク中とは、どこの中なのか? ちなみに書籍の名称は「Linux全書」という洋書を翻訳したものです。 お忙しい中大変、申し訳ございませんが、先輩方、ご教授何卒宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

ln -sで作るシンボリックリンクファイルは、 ファイルの実体として個別に存在しますが、 ln コマンドでつくるハードリンクファイルは 1つのファイルの実体を2つのファイル名になりますよね。 ハードリンクファイルのi-nodeはリンク先と同じものになるので それのことをいっているのではないでしょうか?

HackHack
質問者

お礼

superside0様、早速のご教示誠に感謝申し上げます。 superside0様の仰る、 >ln コマンドでつくるハードリンクファイルは >1つのファイルの実体を2つのファイル名になりますよね。 これを図で書き、問題の文を読み直したところ、やっと解決に至りました。 以上、お忙しい中大変申し訳ございませんが、ご確認の程宜しくお願い致します。

その他の回答 (1)

回答No.1

>各ファイル名とiノードのペアは、リンクと呼ばれる こう書いてあるじゃない ファイル名とiノードが1対1ってことでしょ

HackHack
質問者

お礼

testman199さん、ご教示頂き誠に感謝申し上げます。 落ち着いて、図を書いて思考してみたところ、やっと理解ができました。 以上、お忙しい中大変申し訳ございませんが、ご確認の程宜しくお願い致します。 本当にありがとうございました。

関連するQ&A

  • iノード情報の取得について

    dfコマンドからファイルシステムの持つiノード領域を知る方法はわかるのですが、 各ファイル・ディレクトリのiノード情報を参照する方法はあるのでしょうか? またその手順をご教示下さい。

  • FATやNTFSのファイルにUNIX のiノード番号に相当する情報はあるでしょうか?

    お世話になります。Windows系OSの知識を深めたいと考えている者です。 FATやNTFSでどうしてもわからないことがあります。 御存知の方がおられたら教えて頂けないでしょうか。 UNIX系OS(iノードと呼ばれるファイル管理システムが用いられています)で 管理されるファイルには、iノード番号と呼ばれる情報があります。 UNIXのコマンドで ls -ali と入力すれば確認できる情報で、UNIX上にファイルを最初に作成した時に OSが割り当てるユニークな番号です。 iノード番号は通常の場合はあまり意識しませんが、 悪意のある改ざんをチェックしたりする際に用いられます。 どういうことかというと、 例えばファイルAのサイズが1KB、最終更新日時が10月4日22時22分だと仮定します。 もし悪意のある人がいて、このファイルAを改ざんしようとしたとします。 パソコンで「ファイルのサイズが1KB、最終更新日時が10月4日22時22分」だけれども ファイルの内容はUNIX上のファイルAと異なるものを作成し、 パソコンでtar等でアーカイブし、それをUNIXに転送し、解凍したものを UNIX上の本来あるべきファイルAを上書きしたとします。 このようなことを行うと、ファイルサイズやタイムスタンプからは 改ざんが行われたかどうかは確認できませんが、 iノード番号が全く別のものになってしまいます。 (上書きした時点でファイルAの iノード番号が新しいものになります。 UNIX系OS用に Tripwire等の改ざんチェックソフトもありますが、 Tripwire も自分で試したことはありませんが iノード番号をチェックしていると 教えてもらったことがあります。) 説明が長くなりましたが、 (1)FATやNTFSで管理されるファイルに、iノード番号に相当する情報はあるでしょうか? (2)もしあるなら、どのような方法(DOSコマンドや専用ツール等)で確認できるでしょうか? 以上よろしくお願いします。

  • LinuxのシンボリックリンクをMacで開きたい。

    LinuxのシンボリックリンクをMacで開きたい。 Fedora12を使用している初心者です。御教授ください。 /home/userディレクトリ内に、/var/www/htmlディレクトリのシンボリックリンクを作成し、これをSamba接続したMac OS10.5.5から参照しようとすると、ディレクトリではなくファイルとして見え、フォルダを開くことができませんでした。 そこで、smb.conf内にunix extention = noの記述を加えたところ、フォルダとして認識されるようになったのですが、中身は空の状態です。中身ファイルの所有権を777に変更してみたりもしたのですがダメでした。 対処方法をお教え下さい。

  • LinuxへのJDK6のインストール

    Fedora 6にJDKをインストールしようと思います。 CDROMをマウントしました。 書籍付録のCDROMのファイル名がTM_JSPSERVLET4で、 ディレクトリ構成としては、 /TM_JSPSERVLET4/Linux/jdk-6u1-linux-i586.bin となっております。 書籍の指示とおり、 [root@localhost ~]# cd /usr/local/ [root@localhost local] /media/TM_JSPSERVLET4/Linux/jdk-6u1-linux-i586.bin とすればインストール開始するはずなのですが、 /media/TM_JSPSERVLET4/Linux/jdk-6u1-linux-i586.bin 許可がありません。 と表示されました。 何がまずいのでしょうか?

    • ベストアンサー
    • Java
  • jdkのインストール linux

    jdkをLinux上にインストールしようとしています。 まず、圧縮ファイル「jdk-7u4-linux-i586.tar.gz」をダウンロードしてきました。 この圧縮ファイルを自分で作ったディレクトリ「/usr/java」配下に解凍し、 「/usr/java」配下に「jdk1.7.0_04」というディレクトリができました。 次が問題なのですが、この解凍してできたもの「jdk1.7.0_04」をインストールするにはどうしたら よいのでしょうか?

    • ベストアンサー
    • Java
  • Linuxについて

    Linuxの授業で、 『ディレクトリ20XX内のファイルとディレクトリ20YY内のファイルとの組み合わせのうち、 2行目以降の内容が同一の組み合わせを求めるシェルスクリプトを作成しなさい』 という問題が出ました。 この問題の中で、『各ファイル2行目以降のMD5値とファイル名の組をtmp/20XX_tmp.txtにまとめる』 という作業がありますが、やり方が分かりません。 2行目以降のMD5値をまとめるだけなら、 foreach i (20XX/*.txt) tail -n +2 $i | md5sum >> tmp/20XX_tmp.txt end と入力すればいいのですが....。 また、http://okwave.jp/qa/q5948919.htmlに載っているやり方でやってみても、できませんでした。 分かる人がいたら、是非教えてください。

  • 中級レベルのLinuxの書籍を探しています

    Linuxについてもっと詳しくなりたくて書籍を探しています。 現在の自分の技術としては ・Linuxのインストール ・CUIでのアプリケーション(Apache,PHP,PostgreSQLなど)のインストール ・上記アプリの設定 程度は何とかできるのですが、もっと詳しくLinuxについて知りたいと思っています。例えば ・configureはどういう理由で行うのか。書かれている言語は? ・各ディレクトリの意味 ・ネットワークの設定ファイルはどこでどのように行うのか などなど、上げたらキリがありません。 Linuxに関する書籍は多数あるのですが、その多くが「入門」でインストール方法などがメインになっていてそれ以上のことが書かれていません。 かといってオライリー系の書籍となるとあまりにも専門的過ぎて付いていけない状況です。 XWindowなどは使用しないのでコマンドレベルで「入門」よりも上の「中級」ぐらいの書籍って無いでしょうか? Webである程度のことはわかるのですが、書籍によるまとめた解説があればと思っています。 もし、「この本はいいよ」という物がありましたら教えてください。

  • Linuxのディレクトリエントリのサイズについて

    開発したアプリケーションで、あるディレクトリにファイルを作成し、 処理が終わったらそのディレクトリ中に作成したファイルを削除する という処理を行っています。 処理を行っている最中に「No such File or Directory」というエラーが 出ましたが、次の処理では問題なくファイルの作成、削除の処理が うまく行われていました。 作業用に使っているディレクトリ名を仮に「PDF」という名前とすると、 lsコマンドで見てみると、PDFディレクトリのサイズが、1507328 となっていました。 (ディレクトリのサイズは、4092のことが多いと考えます。) 「ディレクトリエントリ」というものがあって、たとえディレクトリ内のファイルを 消去したとしても、ディレクトリ内にファイルを作成した場合は、 ディレクトリのサイズは大きくなるということまでは理解できたのですが、 なぜ、「No such File or Directory」が出てしまったのかを調べたいです。 たとえば (1)Linux(32bit)では、ディレクトリエントリのサイズに上限がある (2)Linux(32bit)では、ディレクトリエントリのサイズが大きいと、さらにディレクトリの  サイズを拡張する場合は時間がかかる場合がある などのことがあるなど、ご存知の方はいらっしゃらないでしょうか。 Linuxは、Redhat 5.7(32bit)を使っています。 憶測としては、PDFディレクトリ下にファイルを作成した際に、ディレクトリエントリの サイズを拡張しようとして、少し時間がかかり、そのためにファイルが作成されずに アプリケーション側で作成したファイルを参照しようとした際にファイルを見つける ことができずに「No such File or Directory」とOSが返してきたのではないかと 考えています。 どうぞ、識者の方、ご教示いただければ幸甚です。 よろしくお願いいたします。

  • Vine Linux

    Vine Linuxについてです。インストールのCDを作りたいのですが、よく説明を読んでも用語などで理解できません。CDを作ってからのインストール方法は、分かりました。FTP サイトと言うリンクをたどると何やらファイルのようなものがいっぱいあります。どうすればいいのでしょうか。

  • Linux ,sftpでファイルをつくる

    Linux超初心者です。 sftpでたとえば、stestと言うディレクトリを作って、それにsampleというファイルを作りたいんですが、どんなコマンドで作ったらよいでしょうか? cat > sampleでは、できないし、touchだったでしょうか? putやgetがいまいち理解できないんですが、これだったらどう使えば よいのでしょうか?sftpのコマンドがよくわからないので。 よろしくお教えください。