Почему chmod 644 делает каталоги недоступными?

У меня есть куча медиа-файлов (которые должны быть только 644), которые представляли собой смесь различных разрешений. Некоторые из них были доступны для записи в группе или в глобальном масштабе, поэтому я подумал, что, чтобы быть в безопасности, я перенесу их все обратно в 644.

Проблема в том, что существует иерархия каталогов, и для всех каталогов, которые были перехвачены в этом ls -l, отображается их как:

d????????? ? ? ? ?            ? Dirname

Если я chmod это 744, это исправлено.

Мой вопрос: Что здесь происходит? Должны ли каталоги быть исполняемыми?

8
задан 25 January 2018 в 18:20

2 ответа

Как отмечено в странице справочника для chmod с отношением к полномочиям:

Буквы rwxXst выбирают биты режима файла для нужных пользователей: читайте (r), запишите (w), выполнитесь (или ищите каталоги) (x), выполняйтесь/ищите, только если файл является каталогом или уже имеет, выполняют разрешение для некоторого пользователя (X)

Исполняемый файл обдумал папку, объяснен выше как 'поисковое' разрешение; т.е. выполнить бит просто позволяет Вам получать доступ к папке в файловом браузере или перемещаться в папку от терминала путем выполнения cd команда или выполнение ls ~/folder перечислять файлы в папке.

Папка должна быть исполняемым файлом для владельца, хотя суперпользователь все еще смог бы получить доступ к папке как тогда, когда с помощью sudo к любому файлу или каталогу можно получить доступ или удалить. Кроме того, каталог и полномочия файла объяснены далее в этой полезной статье в Stackoverflow.

Также важно отметить, что 'выполнение' папки не означает фактическое выполнение любого кода или команд как то, когда исполняемый двоичный файл или сценарий выполняются.

Для домашнего Настольного пользователя (хотя, возможно, не для Вашего сервера) большинство папок в $HOME имейте выполнить набор полномочий для пользователя, группы и другого, если просматривается с stat ~/myfolder (выборка ниже):

Access: (0755/drwxr-xr-x)  Uid: ( 1000/    mike)   Gid: ( 1000/    mike)

Стандартные полномочия для папок в $HOME 755 или 775, и для файлов они 644. Однако остальная часть файловой системы будет отличаться. Снова, папки должны иметь выполнить бит для владельца, или они не смогут быть открытыми им. Важно быть осторожным с chmod при изменении полномочий и особенно при выполнении его рекурсивно, поскольку может быстро быть испорчена ситуация.

Для получения дополнительной информации посмотрите man chmod или страницы справочника Ubuntu онлайн и эта статья в Superuser.

7
ответ дан 25 January 2018 в 18:20

Для каталогов нужно x набор битов (для каталога, который бит рассматривается как поисковый бит) открываться. Многие люди обнаруживают это, когда они удаляют исполняемый бит с chmod -R на всей папке затем они не могут больше получать доступ к нему. Для фиксации этого, я использую tree таким образом, я могу получить только набор папки и избежать кошмара установки всех файлов как исполняемые файлы (опция для дерева -d List directories only.):

sudo tree -faid dirname | xargs -L1 -I{} sudo chmod +x "{}"

если Вы не имеете tree:

find  dirname -type d -exec chmod +x {} 

Предупреждение!!! у Вас должно быть это к соображениям:

  • использование chmod или показанный рекурсивный на корне / каталог или системные каталоги уничтожат Вашу ОС (на самом деле что-либо рекурсивное на / каталоги каталога или системы опасны),

  • это не хорошая практика безопасности для установки объема разрешения как этот

0
ответ дан 23 November 2019 в 05:46

Другие вопросы по тегам:

Похожие вопросы: