1

Я пытаюсь получить доступ к каталогу /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

1 ответ1

2

Как задокументировано здесь:

Если у вас есть символическая ссылка в мировом каталоге с возможностью записи, в котором установлен бит закрепления, так что только владелец файла может удалить его (например, /tmp), только владелец символической ссылки может разыменовать его. Все остальные получат EACCES для любой операции, которая пытается это сделать, включая такие вещи, как попытка stat () символической ссылки. Если это происходит с вами, ваше ядро Ubuntu будет регистрировать такие сообщения:

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

Исправление состоит в том, чтобы превратить kernel.yama.protected_sticky_symlinks в 0 (выключено).

Чтобы сделать это временно (чтобы проверить, исправит ли это вашу проблему):

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

Чтобы сделать изменение постоянным (начиная со следующей перезагрузки), добавьте строку в файл sysctl.conf:

echo "kernel.yama.protected_sticky_symlinks = 0" | sudo tee -a /etc/sysctl.conf

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .