サブディレクトリにアクセスするとき、親ディレクトリの権限は重要ですか?


160

制限付きのアクセス許可を持つルートフォルダーがある場合、たとえば600とし、子フォルダー/ファイルに777の許可がある場合、ルートフォルダーに600があっても、誰でも子ファイルの読み取り/書き込み/実行ができますか?


12
ディレクトリを600にchmoddingすると、そのディレクトリにchdirするための実行権限が必要になるため、所有者でさえもアクセスできなくなることに注意してください...
Shadur

回答:


183

正確なルールは次のとおりです。ディレクトリの実行権限がある場合にのみ、ディレクトリを走査できます。

そのため、たとえばにアクセスするにはdir/subdir/filedirおよびに対する実行許可とdir/subdir、必要なfileアクセスの種類に対する許可が必要です。コーナーケースに入ると、相対パス(Linuxで行う)を介してファイルにアクセスするために、現在のディレクトリで実行権限が必要かどうかが一般的かどうかわかりません。

ファイルへのアクセス方法が重要です。たとえば、実行権限はある/foo/barが、ではない/fooが、現在のディレクトリが/foo/barである場合/foo/bar、絶対パスではなく相対パスでファイルにアクセスできます。/foo/barこのシナリオではに変更できません。おそらく、特権のないプロセスは、cd /foo/bar特権のない状態になる前に行われているでしょう。ファイルに複数のハードリンクがある場合、そのファイルへのアクセスに使用するパスによってアクセス制限が決まります。

シンボリックリンクは何も変更しません。カーネルは、呼び出しプロセスのアクセス権を使用してそれらを走査します。たとえばsym、がディレクトリへのシンボリックリンクである場合dirdirにアクセスするための実行権限が必要ですsym/foo。シンボリックリンク自体のアクセス許可は、OSとファイルシステムに応じて重要な場合と重要でない場合があります(一部はそれらを尊重し、一部は無視します)。

ルートディレクトリから実行権限を削除すると、ユーザーはディレクトリツリーの一部(より特権のあるプロセスに変更する必要がある)に効果的に制限されます。これには、アクセス制御リストを使用する必要があります。例えば、場合//home立ち入り禁止にしているjoesetfacl -m user:joe:0 / /home)と/home/joeあるjoeのホームディレクトリ、その後joeでシェルスクリプト実行など(システムの残りの部分にアクセスすることはできません/bin/shアクセスする必要がリンクしたバイナリまたは動的に/libあなたので、 " d実際に使用するには、さらに深くする必要があります(例setfacl -m user:joe:0 /*; setfacl -d user:joe /bin /lib)。

ディレクトリの読み取り許可は、エントリを列挙する権利を与えます。読み取り権限を付与せずに実行権限を付与すると便利な場合があります。エントリの名前は、それらにアクセスするためのパスワードとして機能します。実行権限なしでディレクトリに読み取りまたは書き込み権限を付与する用途は考えられません。


32

いいえ。ルートフォルダーのアクセス許可は、子ファイルのアクセス許可を制限します。あなたはそれを試すことができます。

$ mkdir rootdir
$ touch ./rootdir/childfile
$ chmod 777 ./rootdir/childfile
$ chmod 600 rootdir
$ cat ./rootdir/childfile

私はこれを得る:

$ cat: ./rootfolder/childfile: permission denied

4

親ディレクトリが書き込み可能でない場合でも、子ディレクトリを書き込み可能にすることができます。私はグループに対してこれを行います。

例:親ディレクトリはグループコーダーが所有しています

drwxr-sr-x

子ディレクトリ

drwxrwsr-x

あなた(コーダーグループのメンバー)は、子ディレクトリに書き込むことはできますが、親ディレクトリには書き込むことはできません。


1

親ディレクトリに対する実行権限がない場合でも、ファイルにアクセスするためのハードリンクを作成できます。ただし、ここでの問題は、親ディレクトリに対する実行権限を失う前にハードリンクを作成する必要があることです。

$ ln foo/bar/test_privs privs_test_checking
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.