600などの制限付き権限を持つルートフォルダがあり、サブフォルダ/ファイルに777権限がある場合、ルートフォルダに600権限がある場合でも、誰でもサブフォルダを読み書き/実行できます。
答え1
正確なルールは、そのディレクトリに対する実行権限がある場合にのみディレクトリを参照できることです。
たとえば、アクセスするには、 のdir/subdir/file
実行権限と必要なアクセスタイプに対する権限が必要です。極端に言えば、相対パスを介してファイルにアクセスするには、現在のディレクトリに対する実行権限が必要なのが一般的かどうかわかりません(Linuxでは実行権限が必要です)。dir
dir/subdir
file
ファイルにアクセスする方法が重要です。たとえば、実行権限はありますが/foo/bar
実行権限はありませんが、/foo
現在のディレクトリがある場合は相対パスを介してファイルにアクセス/foo/bar
できますが、/foo/bar
絶対パスではアクセスできません。/foo/bar
この場合は変更できません。cd /foo/bar
特権の高いプロセスは、特権が解放される前に完了している可能性があります。ファイルに複数のハードリンクがある場合、ファイルへのアクセスに使用されるパスによってアクセス制限が決まります。
シンボリックリンクは何も変更しません。カーネルは呼び出しプロセスのアクセス権を使用してそれらを探索します。たとえば、sym
ディレクトリへのシンボリックリンクの場合、そのディレクトリにアクセスdir
するには実行権限が必要です。シンボリックリンク自体に対する権限は、オペレーティングシステムとファイルシステムによっては重要でも重要ではないかもしれません(一部はそれを尊重し、一部は無視します)。dir
sym/foo
ルートディレクトリから実行権限を削除すると、ユーザーはディレクトリツリーの一部(より高い権限を持つプロセスが変更する必要がある部分)に効果的に制限されます。これにはアクセス制御リストが必要です。たとえば、許可されていない()とホームディレクトリ/
がある場合は、システムの残りの部分(アクセスが必要なシェルスクリプトまたは動的にリンクされたバイナリ実行を含む)にアクセスできないため、実際のシステムについてさらに調査する必要があります。たとえば)を使用します。/home
joe
setfacl -m user:joe:0 / /home
/home/joe
joe
joe
/bin/sh
/lib
setfacl -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