У меня есть каталог (принадлежит никто
, потому что он является частью монтирования привязки Docker, в сочетании с переназначением пространства имен пользователя .), что мне нужно ввести. Это соответствующий вывод ls -la
:
drwxrwxr-x 2 nobody nobody 4096 May 26 14:42 Directory
Запуск от имени root
, хотя я не принадлежу ни к владельцу, ни к группе каталога, каталог доступен для чтения всем и исполняемый файл, поэтому я смогу его ввести. Однако при запуске cd Directory
происходит сбой:
bash: cd: Directory: Permission denied
Думаю, вы создали свой вопрос и ответ после того, как решили свою проблему.
Обратите внимание, что длинный список GNU ls
-l
будет покажет вам, применяется ли к файлу альтернативный метод доступа, такой как список управления доступом, путем добавления символа в список битов режима файла.
И вместо:
drwxrwxr-x 2 nobody nobody 4096 May 26 14:42 Directory
ваш исходный список каталогов, вероятно, показывал:
drwxrwxr-x+ 2 nobody nobody 4096 May 26 14:42 Directory
^
\ Note the extra + character here.
Легко не заметить, если вы не знаете об этом соглашении, но из руководства
Когда символ, следующий за файловым режимом биты - это пробел, альтернативного метода доступа нет. Когда это печать символа, то есть такой метод.
GNU 'ls' использует символ '
.
' для обозначения файла с SELinux контекст безопасности, но никакой другой альтернативный метод доступа.Файл с любой другой комбинацией альтернативных методов доступа является отмечены символом «
+
».
В моем случае это было вызвано устаревшим списком управления доступом . Решением моей проблемы было удаление всех списков управления доступом из каталога и его подкаталогов:
# setfacl -bnR Directory/