Os próprios links simbólicos têm o 777 porque, no Unix, a segurança de arquivos é julgada em uma base de arquivo / inode. Se forem os mesmos dados em que estão operando, devem ter as mesmas condições de segurança, independentemente do nome que você forneceu ao sistema para abri-lo.
[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]# :-(
Como as permissões são definidas no inode, não funcionará com links físicos mesmo:
[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
Um link simbólico não é um inode (que, na verdade, armazena os dados que você está querendo proteger) ergo no modelo Unix, o que complica as coisas ao ter dois conjuntos diferentes de permissões para proteger os mesmos dados.
Parece que esta é uma tentativa de fornecer diferentes grupos de pessoas a diferentes níveis de direitos de acesso ao mesmo arquivo. Se esse for o caso, você deveria usar POSIX ACL (via setfacl
e getfacl
) para dar aos arquivos permissões apropriadas no destino do symlink.
EDITAR:
Para elaborar a direção que você provavelmente deseja, é algo como:
# setfacl -m u:apache:r-- "Folder 2.1"
# setfacl -m g:groupOfProgrammers:--- "Folder 2.1"
# setfacl -m g:groupOfProgrammers:r-x "Folder 1"
O texto acima dá ao usuário apache
(substitua qualquer usuário seu apache / nginx / o que estiver rodando como) somente leitura para o destino do symlink, e dá groupOfProgrammers
acesso de leitura ao diretório do link simbólico in (para que groupOfProgrammers
possa obter uma lista completa de diretórios lá), mas desativa todos os bits de permissão para o mesmo destino do symlink.