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

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

600などの制限付き権限を持つルートフォルダがあり、サブフォルダ/ファイルに777権限がある場合、ルートフォルダに600権限がある場合でも、誰でもサブフォルダを読み書き/実行できます。

答え1

正確なルールは、そのディレクトリに対する実行権限がある場合にのみディレクトリを参照できることです。

たとえば、アクセスするには、 のdir/subdir/file実行権限と必要なアクセスタイプに対する権限が必要です。極端に言えば、相対パスを介してファイルにアクセスするには、現在のディレクトリに対する実行権限が必要なのが一般的かどうかわかりません(Linuxでは実行権限が必要です)。dirdir/subdirfile

ファイルにアクセスする方法が重要です。たとえば、実行権限はありますが/foo/bar実行権限はありませんが、/foo現在のディレクトリがある場合は相対パスを介してファイルにアクセス/foo/barできますが、/foo/bar絶対パスではアクセスできません。/foo/barこの場合は変更できません。cd /foo/bar特権の高いプロセスは、特権が解放される前に完了している可能性があります。ファイルに複数のハードリンクがある場合、ファイルへのアクセスに使用されるパスによってアクセス制限が決まります。

シンボリックリンクは何も変更しません。カーネルは呼び出しプロセスのアクセス権を使用してそれらを探索します。たとえば、symディレクトリへのシンボリックリンクの場合、そのディレクトリにアクセスdirするには実行権限が必要です。シンボリックリンク自体に対する権限は、オペレーティングシステムとファイルシステムによっては重要でも重要ではないかもしれません(一部はそれを尊重し、一部は無視します)。dirsym/foo

ルートディレクトリから実行権限を削除すると、ユーザーはディレクトリツリーの一部(より高い権限を持つプロセスが変更する必要がある部分)に効果的に制限されます。これにはアクセス制御リストが必要です。たとえば、許可されていない()とホームディレクトリ/がある場合は、システムの残りの部分(アクセスが必要なシェルスクリプトまたは動的にリンクされたバイナリ実行を含む)にアクセスできないため、実際のシステムについてさらに調査する必要があります。たとえば)を使用します。/homejoesetfacl -m user:joe:0 / /home/home/joejoejoe/bin/sh/libsetfacl -m user:joe:0 /*; setfacl -d user:joe /bin /lib

ディレクトリに対する読み取り権限は、エントリを列挙する権限を与えます。読み取り権限を付与せずに実行権限を付与すると便利な場合があります。アイテム名は、そのアイテムにアクセスするためのパスワードとして使用されます。実行権限なしでディレクトリに読み取りまたは書き込み権限を付与することは、いかなる目的にも使用できません。

答え2

カント。 root フォルダ権限はサブファイル権限を制限します。試してみてください。

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

わかりました:

$ cat: ./rootfolder/childfile: permission denied

答え3

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

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

drwxr-sr-x

サブディレクトリ

drwxrwsr-x

エンコーダグループのすべてのメンバは依然としてサブディレクトリに書き込むことができますが、親ディレクトリに書き込むことはできません。

答え4

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

$ ln foo/bar/test_privs privs_test_checking

関連情報