O caminho do Symlink pode ser seguido manualmente, mas o 'cd' retorna Permission denied

1

Estou tentando acessar o diretório /usr/software/test/agnostic . Existem vários links simbólicos envolvidos nesse caminho. Como você pode ver na transcrição abaixo, não consigo fazer o cd diretamente no caminho, mas posso verificar cada etapa do caminho e colocar o cd nos diretórios ligados por links simbólicos até chegar ao destino. Por que é isso? (e como faço para corrigir isso?)

Ubuntu 12.10, bash

> ls /usr/software/test/agnostic
ls: cannot access /usr/software/test/agnostic: Permission denied

> cd /usr/software/test

> cd agnostic
bash: cd: agnostic: Permission denied

> pwd -P
/x/eng/localtest/arch/x86_64-redhat-rhel5

> ls -al | grep agnostic
lrwxrwxrwx  1 root  root    15 Oct 23  2007 agnostic -> noarch/agnostic

> ls -al | grep noarch
...
lrwxrwxrwx  1 root  root    23 Oct 23  2007 noarch -> /x/eng/localtest/noarch

> cd noarch

> cd agnostic
bash: cd: agnostic: Permission denied

> ls -al | grep agnostic
lrwxrwxrwx   1   5808 dip         4 Oct  5  2010 agnostic -> main

> cd main

> ls
(correct output of 'ls')

> pwd
/usr/software/test/noarch/main

> pwd -P
/x/eng/localtest/noarch/main
    
por Ricket 26.11.2012 / 17:53

1 resposta

2

Como documentado aqui :

If you have a symlink in a world writeable directory that has the sticky bit set so that only the owner of a file can delete it (for example, /tmp), only the owner of a symlink can dereference it. Everyone else will get EACCES on any operation that attempts to do so, including things like attempting to stat() the symlink. If this is happening to you, your Ubuntu kernel will log messages like:

non-matching-uid symlink following attempted in sticky world-writable directory by cat (fsuid 915 != 2315)
yama_inode_follow_link: 16 callbacks suppressed

A correção é transformar kernel.yama.protected_sticky_symlinks em 0 (desativado).

Para fazer isso temporariamente (para testar se isso resolve o problema):

sudo -i
echo 0 > /proc/sys/kernel/yama/protected_sticky_symlinks

Para tornar a mudança permanente (a partir da próxima reinicialização), adicione uma linha ao seu arquivo sysctl.conf:

echo "kernel.yama.protected_sticky_symlinks = 0" | sudo tee -a /etc/sysctl.conf
    
por 26.11.2012 / 18:46