シンボリックリンクへの読み取りアクセスを防ぐ方法は?

シンボリックリンクへの読み取りアクセスを防ぐ方法は?

次のファイル構造があります。

> APPLICATION 1
>> CONTROLLER (@JuniorProgrammers)
>> MODELS (symlink to SHARED/MODELS)
>> VIEWS (@Designers)
> APPLICATION 2
>> CONTROLLER (@JuniorProgrammers)
>> MODELS (symlink to SHARED/MODELS)
>> VIEWS (@Designers)
> SHARED
>> MODELS (@SeniorProgrammers)

フォルダ1.1の内容を読み取るにはPHPが必要ですが、フォルダ1にFTPを送信するプログラマはシンボリックリンクを読むことができません(シンボリックリンクを見ることはできますが、すべての読み書きを含むシンボリックリンクをたどることはできません)。

@は、各レベルに対する読み取り/書き込みアクセス権を持つユーザーのグループです。

答え1

Unixでは、ファイルセキュリティはファイル/inodeに基づいて判断されるため、777のシンボリックリンク自体があります。同じデータで作業している場合は、システムを開くために指定した名前に関係なく、同じセキュリティ条件を持つ必要があります。

[root@hypervisor test]# ls -l
total 0
lrwxrwxrwx. 1 root root 10 Jun  8 16:01 symTest -> /etc/fstab
[root@hypervisor test]# chmod o-rwx symTest
[root@hypervisor test]# ls -l
total 0
lrwxrwxrwx. 1 root root 10 Jun  8 16:01 symTest -> /etc/fstab
[root@hypervisor test]# :-(

権限がinodeに設定されているため、ハードリンクでも機能しません。

[root@hypervisor test]# echo "Don't Test Me, Bro" > testing123
[root@hypervisor test]# ls -l
total 4
lrwxrwxrwx. 1 root root 10 Jun  8 16:01 symTest -> /etc/fstab
-rw-r--r--. 1 root root 19 Jun  8 16:06 testing123
[root@hypervisor test]# ln testing123 newHardLink
[root@hypervisor test]# ls -l
total 8
-rw-r--r--. 2 root root 19 Jun  8 16:06 newHardLink
lrwxrwxrwx. 1 root root 10 Jun  8 16:01 symTest -> /etc/fstab
-rw-r--r--. 2 root root 19 Jun  8 16:06 testing123
[root@hypervisor test]# chmod 770 testing123
[root@hypervisor test]# chmod 700 newHardLink
[root@hypervisor test]# ls -lh
total 8.0K
-rwx------. 2 root root 19 Jun  8 16:06 newHardLink
lrwxrwxrwx. 1 root root 10 Jun  8 16:01 symTest -> /etc/fstab
-rwx------. 2 root root 19 Jun  8 16:06 testing123

シンボリックリンクはinodeではありません(実際に保護したいデータを保存します)。したがって、Unixモデルでは、同じデータを保護するために2つの異なる権限セットを使用して状況を複雑にします。

これは、異なるグループの人々に同じファイルへの異なるレベルのアクセス権を提供しようとしているようです。この場合、実際にはPOSIX ACL(setfaclおよび経由getfacl)を使用してファイルにシンボリックリンクターゲットに対する適切な権限を付与する必要があります。

編集する:

行きたい方向を詳しく説明するには、次のようにします。

# setfacl -m u:apache:r-- "Folder 2.1"
# setfacl -m g:groupOfProgrammers:--- "Folder 2.1"
# setfacl -m g:groupOfProgrammers:r-x "Folder 1"

上記は、apacheユーザーにシンボリックリンクターゲットへの読み取り専用アクセスを提供し(Apache / nginx /実行中のユーザーに置き換え)、シンボリックリンクを持つディレクトリへのgroupOfProgrammers読み取りアクセスを提供するため、完全なディレクトリgroupOfProgrammersを取得できます。 )そこにリストされています)、シンボリックリンクの同じ宛先のすべての許可ビットをオフにします。

答え2

私たちはまだあなたがファイルシステムレベルで何をしたのかわかりません。一般的なアプローチは、ルート(または他の管理者アカウント)をこれらのすべてのディレクトリの所有者にし、レベル2のディレクトリを所有者の権限、グループに対するrwx、およびnoneの権限を持つグループに提供することですothers。便利な(chmod o+t "$dirname")。

レベル1ディレクトリは、管理者ユーザーとグループ(ルート:ルートなど)に属しているr-x必要がありますothers

関連情報