ディレクトリの操作

First Edition 2003.5.28

UNIX系OSの基本、ファイルの操作と同様に、ディレクトリの操作方法を記載します。
ファイルのパーミッションは、感覚的に理解しやすいものですが、ディレクトリのパーミッションはファイルの 概念とはまったく異なりますので注意が必要です。
  1. ディレクトリの書式(対象Ver:全て)(2003.5.28)
  2. ディレクトリのアクセス権を変更する(対象Ver:全て)(2003.5.28)
  3. ディレクトリのアクセス権の詳細(対象Ver:全て)(2003.5.28)
  4. ディレクトリの所有者を変更する(対象Ver:全て)(2003.5.28)
  5. ディレクトリのグループを変更する(対象Ver:全て)(2003.5.28)

ディレクトリの書式

ディレクトリの書式はターミナルで、
$ ll
もしくは
$ ls -l
と打つと、以下のように出力されます。
drwx-----x    2 lucky     lucky         4096 Apr  4 22:03 public_html
   (1)       (2) (3)       (4)           (5)       (6)        (7)
(1)ディレクトリの種類とパーミッション
(2)ハードリンク数
(3)所有者
(4)グループ
(5)サイズ
(6)作成、更新、変更した日付
(7)名称

それぞれ詳しく見ていきましょう。

■(1)ディレクトリのパーミッション
d rw-  ---  r--
1文字目の"d"はディレクトリであることを示しています。ディレクトリの種類は以下のようなものがあります。

 d ディレクトリ
 l シンボリックリンク

シンボリックリンクとは、Windowsで言うところのショートカットです。ファイルとディレクトリのリンクには「ハードリンク」と 「シンボリックリンク」の2つがあります。

2文字目以降はパーミッションを示しています。ディレクトリのパーミッションは、ファイルのパーミッションと考え方が まったく異なるので注意が必要です。

ディレクトリのパーミッション
 r ディレクトリの内容の一覧表示が可能
 w ディレクトリ内のファイルの作成、削除が可能
 x ディレクトリ内のファイルの読み込み、書き込みが可能。cdコマンドで中に入ることも可能

■(2)ハードリンク数
■(3)所有者
■(4)グループ
ファイルの書式を参照してください

■(5)ディレクトリサイズ
良く分かりません。どなたか教えてください(^^)

■(6)作成、更新、変更された日付
ディレクトリに対して作成、更新、変更などを行ったときの日と時間です。

■(7)ディレクトリ名
ディレクトリ名、シンボリックリンク名などです。

ディレクトリのアクセス権を変更する

ディレクトリの書式でお話ししたとおり、ディレクトリには、「所有者」、「グループ」、「他人」の3つの グループがあることが分かりました。
では、それらの設定できる属性を変更してみます。適当にディレクトリを作成してみます。
drw-r--r--    2 lucky     lucky            6 Mar 23 23:12 test_dir
"test_dir"というディレクトリを作成してみました。すると、上記のようなパーミッションになりました。これは、

所有者:ディレクトリの内容の一覧表示が可能
グループ:ディレクトリ内のファイルの作成、削除が可能
他人:ディレクトリ内のファイルの読み込み、書き込みが可能。cdコマンドで中に入ることも可能

とう属性が設定されていることになります。デフォルトで設定されるパーミッションは、"umask"という値により制御されています。 "umask"については今後書きたいと思います。
パーミッションを変更するには、2つの方法があります。パーミッションは所有者もしくはrootしか変更できません。

1.chmod 640 test_dir
2.chmod o-x text_dir

これらの方法は、ファイルのアクセス権を変更する と同じなので、そちらを参照してください。

ディレクトリのアクセス権の詳細

ここでは、ディレクトリ特有のパーミッションについて記載します。ファイルのアクセス権とは、まったく異なります。

想定するディレクトリとファイルの構成を以下のようにします。

test_dir┓
    ┗test_file

test_dirというディレクトリの下にtest_fileというファイルが格納されているとします。例では、他人がどうアクセス 出来るかどうかを考えます

(例1)
test_dir(700)、test_file(777)

他人は、test_dirの中身を一切見ることが出来ません。cdコマンドでディレクトリ内に入ることも出来ませんし、 lsコマンドでファイルリストを表示させることも出来ません。

ファイルのリスト表示ファイルの読みだしファイルの編集ファイルの追加ファイルの削除ディレクトリの中にはいる(cdコマンド)
所有者
グループ不可不可不可不可不可不可
他人不可不可不可不可不可不可

(例2)
test_dir(701)、test_file(777)

他人は、test_dirの中のtest_fileへアクセスすることが出来ます。ファイルの読み込み、編集ができます。
ただし、test_dir内のファイルの追加、ファイルの削除、一覧を見ることはできません。
このアクセス権によって、リード、ライトが可能になったので、実質的にはまる見えになってしまいます。

ファイルのリスト表示ファイルの読みだしファイルの編集ファイルの追加ファイルの削除ディレクトリの中にはいる(cdコマンド)
所有者
グループ不可不可不可不可不可不可
他人不可不可不可不可

(例3)
test_dir(704)、test_file(777)

他人は、test_dirの中のファイルリストを見ることができます。しかし、test_fileの中身を見ることはできません。
しかし、ファイルリストを公開してしまうことになります。

ファイルのリスト表示ファイルの読みだしファイルの編集ファイルの追加ファイルの削除ディレクトリの中にはいる(cdコマンド)
所有者
グループ不可不可不可不可不可不可
他人不可不可不可不可

(例4)
test_dir(702)、test_file(777)

他人は、test_dirの中のファイルにアクセスすることはできません。実質700と同じです。しかし、703となっていると、ファイルを勝手に読み込み、編集、作成、削除されてしまうことになります。

ファイルのリスト表示ファイルの読みだしファイルの編集ファイルの追加ファイルの削除ディレクトリの中にはいる(cdコマンド)
所有者
グループ不可不可不可不可不可不可
他人不可不可不可不可不可不可

以上のように、ディレクトリのパーミッションはファイルのパーミッションと概念がまったく異なりますので、注意が必要です。

ディレクトリの所有者を変更する

ディレクトリの所有者を変更するには、ルートでないと変更できません。以下のようにして変更します。
# ll
drw-r--r--    2 lucky     lucky            5 Oct  1 21:37 test_dir
# chown hogehoge test.txt
# ll
drw-r--r--    2 hogehoge     lucky            5 Oct  1 21:37 test_dir
ファイルと同様に"chown"コマンドを使います。

ディレクトリのグループを変更する

ディレクトリのグループを変更するには、ルートもしくは所有者しか変更できません。所有者の場合は、変更後のグループに所有者が所属している必要が あります。
$ ll
drw-r--r--    2 hogehoge     lucky            5 Oct  1 21:37 test_dir
$ chgrp hogehoge test.txt
$ ll
drw-r--r--    2 hogehoge     hogehoge            5 Oct  1 21:37 test_dir
ファイルと同様に"chgrp"コマンドを使います。


[HOME]
since 2001.4.22