Por que não posso alterar a permissão em um symlink no Mac?

4

Pergunta simples e talvez haja uma resposta simples.

Eu tenho vários diretórios na minha pasta pessoal que gostaria de disponibilizar como um diretório no meu servidor web. Então, o que eu fiz foi criar um symlink:

iMac:/Library/WebServer/Documents/ ls -ltr
-rw-rw-r--  1 root      admin     44 Nov 20  2004 index.html.en
-rw-rw-r--  1 root      admin  31958 May 18  2009 PoweredByMacOSXLarge.gif
-rw-rw-r--  1 root      admin   3726 May 18  2009 PoweredByMacOSX.gif
-rwxr-xr-x  1 mego  admin      0 Jan  6  2011 favicon.ico
lrwxrwxr-x  1 mego  admin     52 Jul 26 13:45 myadmin -> /Users/mego/Downloads/phpMyAdmin-3.4.3.2-english
iMac:/Library/WebServer/Documents/ ln -s /Users/mego/opt/rel/src/main/web/ rel
iMac:/Library/WebServer/Documents/ ls -ltr
-rw-rw-r--  1 root      admin     44 Nov 20  2004 index.html.en
-rw-rw-r--  1 root      admin  31958 May 18  2009 PoweredByMacOSXLarge.gif
-rw-rw-r--  1 root      admin   3726 May 18  2009 PoweredByMacOSX.gif
-rwxr-xr-x  1 mego  admin      0 Jan  6  2011 favicon.ico
lrwxrwxr-x  1 mego  admin     52 Jul 26 13:45 myadmin -> /Users/mego/Downloads/phpMyAdmin-3.4.3.2-english
lrwxrwx---  1 mego  admin     47 Oct 12 09:58 rel -> /Users/mego/opt/rel/src/main/web/

As permissões em / Users / mego / opt / rel são recursivamente configuradas como + rx para que todos possam ler e executar.

Quando tento alterar a permissão, ou seja, " chmod a + rx rel " e " chmod -R a + rx / Users / mego / opt / rel " , efeito zero.

A saída de

ls -ld / /Users /Users/mego /Users/mego/opt /Users/mego/opt/rel /Users/mego/opt/rel/src /Users/mego/opt/rel/src/main /Users/mego/opt/rel/src/main/web

iMac:~/ ls -ld / /Users /Users/mego /Users/mego/opt /Users/mego/opt/rel /Users/mego/opt/rel/src /Users/mego/opt/rel/src/main /Users/mego/opt/rel/src/main/web
drwxrwxr-t@ 39 root      admin  1394 Sep 14 15:30 /
drwxr-xr-x   7 root      admin   238 Aug 29 10:04 /Users
drwxr-xr-x+ 98 mego  staff  3332 Oct 15 10:59 /Users/mego
drwxrwxr-x  19 mego  staff   646 Oct 14 20:47 /Users/mego/opt/rel
drwxrwxr-x   5 mego  staff   170 May 31 08:01 /Users/mego/opt/rel/src
drwxrwxr-x   6 mego  staff   204 Oct 12 08:42 /Users/mego/opt/rel/src/main
drwxrwxr-x   5 mego  staff   170 Oct 12 08:42 /Users/mego/opt/rel/src/main/web
iMac:~/ 

Deve ser algo relacionado à pasta inicial dos usuários. Mas estranhamente, outra pasta " myadmin " tem permissões corretas e funciona. O que estou fazendo errado?

Obrigado antecipadamente.

    
por user11498 12.10.2011 / 10:17

3 respostas

1

/Users/mego tem uma ACL que pode estar impedindo o acesso. Isso é o que o + após as permissões tradicionais do unix na saída de ls -l para esse diretório indica. Execute ls -lde /Users/mego para ver esta ACL.

Observe que, se um usuário tiver acesso negado a /Users/mego (o que importa é o bit executável ), ele não terá acesso a nada sob ele. Portanto, se o usuário do servidor da Web não tiver permissão de execução /Users/mego , não importa que /Users/mego/opt/rel seja legível por todos: o usuário do servidor da Web não conseguirá chegar tão longe. Não importa se um link simbólico está envolvido: o acesso por meio de um link simbólico envolve a passagem do caminho até o destino.

Use chmod para manipular o ACL. Os exemplos na página de manual devem ajudá-lo (se você não conseguir descobrir o que precisa nos exemplos, pergunte aqui e poste a saída de ls -lde /Users/mego ).

    
por 16.10.2011 / 01:17
0

Acredito que chmod afetará apenas as permissões do arquivo / diretório de destino quando usado em um symlink. lchmod deve alterar as permissões do symlink real.

    
por 15.10.2011 / 18:53
0
 man chmod 

...

-h Se o arquivo é um link simbólico, mude o modo do link em vez do arquivo para o qual o link aponta.

...

Então, algo como:

 chmod -h /Users/mego/opt/rel

deve funcionar.

    
por 09.08.2017 / 20:33