다음과 같은 파일 구조가 있습니다.
> 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 모델에서는 동일한 데이터를 보호하기 위해 두 가지 다른 권한 집합을 사용하여 상황을 복잡하게 만듭니다.
이는 서로 다른 그룹의 사람들에게 동일한 파일에 대해 서로 다른 수준의 액세스 권한을 제공하려는 시도인 것처럼 들립니다. 이 경우 실제로 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
사용자에게 심볼릭 링크 대상에 대한 읽기 전용 액세스 권한을 제공하고(아파치/nginx/실행 중인 사용자로 대체) groupOfProgrammers
심볼릭 링크가 있는 디렉터리에 대한 읽기 액세스 권한을 제공하므로 groupOfProgrammers
전체 디렉터리를 얻을 수 있습니다 . ) 거기에 나열됨), 심볼릭 링크의 동일한 대상에 대한 모든 권한 비트를 끄십시오.
답변2
우리는 아직도 당신이 파일 시스템 수준에서 무엇을 했는지 모릅니다. 일반적인 접근 방식은 루트(또는 다른 관리자 계정)를 이러한 모든 디렉터리의 소유자로 만들고 수준 2 디렉터리를 소유자에 대한 권한, 그룹에 대한 rwx 및 none 에 대한 권한이 있는 그룹에 제공하는 것입니다 others
. 유용한 ( chmod o+t "$dirname"
).
레벨 1 디렉토리는 관리자 사용자 및 그룹(예: 루트:루트)에 속해야 r-x
합니다 others
.