Alterar permissões link simbólico Mac OS

2

Como você altera as permissões de um link do sistema no Mac OS?

Eu tentei chmod -h 755 mylink usando o iTerm2 com zsh, mas não funcionou.

    
por Artyom2033 11.07.2016 / 22:39

1 resposta

2

Depois que eu fui totalmente na direção errada com este problema, permita-me reafirmar a questão envolvida. Vejamos por que as permissões de link simbólico não têm sentido, então alterá-las ou não não é útil.

Não consigo reproduzir o problema. Em alguns sistemas , as permissões de links simbólicos não podem ser alteradas. Minha experiência é que o Mac OS El Capitan muda as permissões do symlink na maioria das situações, mas as novas permissões não têm efeito.

Conceitualmente, uma alteração nas permissões de um link simbólico não deve ter efeito. Se acessar um arquivo era tão fácil quanto criar um link simbólico e depois alterar as permissões do link simbólico, nenhum arquivo seria seguro.

Eu encontrei este aviso em man 7 symlink :

The flags, access permissions, owner/group and modification time of an existing symbolic link can be changed by means of [system calls]. Of these, only the flags are used by the system; the access permissions and ownership are ignored.

Aqui está um exemplo extremo.

$ touch myfile
$ ln -s myfile mylink
$ ls -l myfile mylink
-rw-r--r--  1 user  staff  0 Jul 13 14:42 myfile
lrwxr-xr-x  1 user  staff  6 Jul 13 14:43 mylink -> myfile
$ chmod -h 000 mylink
$ ls -l myfile mylink
-rw-r--r--  1 user  staff  0 Jul 13 14:42 myfile
ls: mylink: Permission denied
l---------  1 user  staff  6 Jul 13 14:43 mylink
$ echo 'Hello, world!' > mylink
$ cat mylink
Hello, world!
$ ls -l myfile
-rw-r--r--  1 user  staff  14 Jul 13 14:43 myfile

O link simbólico não tem permissões, mas echo e cat seguem mylink para myfile . echo escreve para myfile e cat lê, ignorando as permissões de link simbólico. NB: As permissões do symlink bloquearam ls de mostrar o destino do symlink, mas os utilitários ainda seguem o symlink. Por outro lado,

$ chmod 000 myfile
$ chmod -h 777 mylink
$ ls -l myfile mylink
----------  1 user  staff  14 Jul 13 14:43 myfile
lrwxrwxrwx  1 user  staff   6 Jul 13 14:43 mylink -> myfile
$ cat mylink
cat: mylink: Permission denied

Retoricamente, não é assim que tem que ser?

Referências (algumas específicas para Mac OS e El Capitan):

  • man 7 symlink
  • Seção OPÇÕES DE MANIPULAÇÃO DA ACL de man chmod
  • man chflags
por 12.07.2016 / 10:34

Tags