Я пытаюсь получить доступ к каталогу /usr/software/test/agnostic
. Есть несколько символических ссылок, участвующих в этом пути. Как вы можете видеть из приведенной ниже записи, я не могу перейти непосредственно к пути, но я могу проверять каждый шаг пути и переходить к каталогам с символическими ссылками, пока не достигну места назначения. Почему это? (и как мне это исправить?)
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
ubuntu
bash
symbolic-link
Ricket
источник
источник
ls –l agnostic
? (Используйте,ls –ld foo
если «foo
» может быть каталогом.)Ответы:
Как задокументировано здесь :
Исправление должно повернуться
kernel.yama.protected_sticky_symlinks
к 0 (выключен).Чтобы сделать это временно (чтобы проверить, исправит ли это вашу проблему):
Чтобы сделать изменение постоянным (начиная со следующей перезагрузки), добавьте строку в файл sysctl.conf:
источник
EACCES
любой операцией…, включая такие, как попыткаstat()
использовать символическую ссылку». Если это то, что происходит, почему вы смогли получитьls –l
информацию в любой момент?ls -l
используетсяlstat()
для получения информации о ссылке иreadlink()
для получения содержимого ссылки. Я полагаю, это не дает прозрачного разыменования.