web-dev-qa-db-ja.com

Linux / Unixのディレクトリへのアクセス許可を正しく理解していますか?

Linux/Unixのディレクトリへのアクセス許可を正しく理解していますか?

  1. ディレクトリにr(読み取り)権限しかない場合は、ディレクトリの内容(そこにあるファイル)を表示できますが、このディレクトリに(cd)移動できないため(x権限がないため)表示できません。 )。また、ディレクトリの外部(たとえば、ls directoryname/*)からディレクトリの内容(そこにあるファイル)を確認することもできません。また、catおよびmoreコマンドを使用して、そのようなディレクトリにあるファイルの内容を読み取る(参照する)こともできなくなります(これらのファイルを読み取る権限がある場合でも)。また、これらのファイルがそのようなディレクトリにある場合(cat >>echo >>cp、またはいくつかのテキストエディタ)。したがって、私の観点からは、ディレクトリに対するr権限のみを持つことは、ディレクトリに対する権限がまったくないことと同じです。

  2. ディレクトリにx(実行)権限しかない場合は、ディレクトリに移動(cd)できますが、ディレクトリの内容を表示(ls)することはできません(ディレクトリを読み取る権限がないため)。ディレクトリにx権限のみがあり、r(読み取り)およびw(書き込み)権限を持つファイルが含まれている場合でも、(少なくとも一部の)テキストエディタ(たとえば、mcedit)でこのファイルを開くことはできません。ただし、catmoreなどのコマンドを使用してファイルのコンテキストを読み取ることができます。 echo >>またはcat >>を使用してファイルの内容を変更できます。したがって、ユーザーがディレクトリ内の既存のファイルを「読み取り」および「書き込み」できるのはxであるように思われます(ファイルに対応する権限もある場合)。

  3. ディレクトリにrおよびx権限はあるが、w(書き込み)権限がない場合、ディレクトリの内容(そこにあるファイルのセット)を変更することはできません。たとえば、そこに新しいファイルを作成したり、ディレクトリにある既存のファイルを削除したりすることはできません。ただし、既存のファイルの内容を変更することは引き続き許可されています。したがって、ディレクトリ内のファイルを作成または削除するには、w権限が必要です。

    追加:

  4. ディレクトリへのw権限が必要ですが、ディレクトリ内のファイルを作成および削除するには十分ではないことにも言及するのは興味深いことです。ディレクトリにw権限しかない場合、ディレクトリとの間でファイルを追加/削除することはできません。これを行うには、ディレクトリに対するx権限が必要です(さらにw権限が必要です)。

4
Roman

質問は言う:

ディレクトリに「r」(読み取り)権限しかない場合は、ディレクトリの内容(そこにあるファイル)を表示できますが、このディレクトリに移動(「cd」)できないため、表示できません( 「x」権限がない)。

はい、できます。ディレクトリに含まれているファイルのリストを確認できます。

$ mkdir mydir
$ echo text > mydir/myfile
$ chmod a-wx mydir
$ ls -lA
total 4
dr--r--r-- 2 hcs hcs 4096 2010-02-28 22:12 mydir
$ ls -lA mydir
ls: cannot access mydir/myfile: Permission denied
total 0
-????????? ? ? ? ?                ? myfile

ただし、リストに示されているように、ファイルの名前以外の情報にはアクセスできません。

2
hcs42

から ダートマス大学のこのページ

ファイルを読み取るには、ファイルが存在するディレクトリへの実行アクセスと、ファイル自体への読み取りアクセスが必要であることを忘れないでください。ファイルを書き込むには、ディレクトリへのアクセスを実行し、ファイルへの書き込みアクセスを行う必要があります。新しいファイルを作成したりファイルを削除したりするには、ディレクトリへの書き込みアクセス権が必要です。また、ルートに戻るすべての親ディレクトリへの実行アクセス権も必要です。親ディレクトリを完全にプライベートにすると、グループアクセスが中断されます。

ですから、あなたの質問とこのページを読んだところ、あなたはそれを見つけたようです。

5
ChrisF

r権限は、ファイル名のリストへのアクセスを許可します(メタデータは許可しません)

x権限は、ファイルメタデータ(inode、サイズ、所有者、グループ、権限など)へのアクセスを許可します(ただし、ファイル名のリストへのアクセスは許可されません)


lsは、最初にファイル名のリストを列挙し、次に各ファイルのファイルメタデータにアクセスします。メタデータには、statを介してアクセスします。

ここに例があります。ファイル「data」を含むディレクトリ「example」を想像してください。

r権限の場合:

  • cat /example/data失敗します(ファイルメタデータへのアクセスなし)

  • ls -lA exampleは部分的に成功します(ファイル名のリストへのアクセスは許可されますが、メタデータは許可されません)

  • cd example失敗します(現在のディレクトリは、利用できないメタデータへのアクセスを意味します)

x権限の場合:

  • cat /example/data成功します(指定されたファイルメタデータへのアクセス)(LISTへのアクセスは必要ありません)

  • ls -lA example失敗します(ファイル名のリストにアクセスできません)

  • cd example 成功します

  • lsは失敗します(ファイル名のリストにアクセスできません)

  • ls -l data成功します(メタデータへのアクセスが許可されます)

3
Jack