Выполнять бит чтения. Как работают права на каталоги в Linux?

В моей CMS я заметил, что директориям нужен исполняемый бит ( +x ), заданный для пользователя, чтобы открыть их. Почему требуется разрешение на выполнение для чтения каталога и как работают права на каталоги в Linux?

  • Как изменить порт по умолчанию SAMBA на centos?
  • Типы разделов Linux
  • Нет маршрута для размещения с помощью nc, но может ping
  • btrfs снимки без подвыборов?
  • Rosetta Stone для Linux-дистрибутивов?
  • Обнаружение и ответ на ping в пользовательском пространстве
  • Устройство USB2.0 больше не распознается
  • Ядро установки Dnf не устанавливает ядро ​​в / boot
  • 5 Solutions collect form web for “Выполнять бит чтения. Как работают права на каталоги в Linux?”

    При применении разрешений к каталогам в Linux биты разрешений имеют разные значения, чем обычные файлы.

    • Бит записи позволяет затронутому пользователю создавать, переименовывать или удалять файлы в каталоге и изменять атрибуты каталога
    • Считываемый бит позволяет затронутому пользователю перечислить файлы в каталоге
    • Бит выполнения позволяет затронутому пользователю войти в каталог и получить доступ к файлам и каталогам внутри
    • В липком бите указано, что файлы и каталоги в этом каталоге могут быть удалены или переименованы только их владельцем (или root)

    Сначала подумайте: что такое каталог? Это всего лишь список элементов (файлов и других каталогов), которые живут внутри. Итак: directory = список имен.

    Чтение бит = Если установлено, вы можете прочитать этот список. Так, например, если у вас есть каталог с именами poems :

    • Вы можете ls poems и вы получите список предметов, находящихся внутри ( -l не покажет никаких подробностей!).
    • Вы можете использовать завершение командной строки, т. touch poems/so <TAB> poems/somefile .
    • Вы не можете создавать poems своей рабочей директории (т.е. cd в нее).

    Создать бит = Если установлено, вы можете изменить этот список, т. Е. Вы можете {add, rename, delete} на нем. Но! Вы можете сделать это только в том случае, если бит выполнения установлен слишком.

    Выполнить бит = Сделать этот каталог вашей рабочей директорией, то есть cd в нее. Это разрешение вам необходимо, если вы хотите:

    • доступ (чтение, запись, выполнение) элементов, находящихся внутри.
    • изменить сам список, т. е. добавить, переименовать, удалить имена на нем (конечно, бит записи должен быть установлен в каталоге).

    Интересный случай 1 : Если у вас есть права на запись + выполнение в каталоге, вы можете {delete, rename} элементы, живущие внутри, даже если у вас нет пиринга по этим элементам. (используйте липкий бит для предотвращения этого)

    Интересный случай 2 : Если у вас есть разрешение на выполнение (но не запись) в каталоге, и у вас есть разрешение на запись на файл, живущий внутри, вы не можете удалить файл (потому что он включает удаление его из списка). Однако вы можете удалить его содержимое, например, если это текстовый файл, вы можете использовать vi, чтобы открыть его и удалить все. Файл все равно будет, но он будет пустым.

    Резюме:

    Бит чтения = вы можете прочитать имена в списке.
    Запись бит = Вы можете {добавлять, переименовывать, удалять} имена в списке, если бит выполнения установлен слишком.
    Выполнить бит = Вы можете сделать этот каталог своей рабочей директорией.

    PS: Статья, упомянутая KAK, хорошо читается.

    Вот хорошая статья.

    Резюме:

    Каталог с его набором бит x позволяет пользователю cd (сменить каталог) в этот каталог и получить доступ к файлам в нем.

    Детали:

    • Чтение ( r )

      Возможность читать имена файлов, хранящихся в этом каталоге.

    • Напишите ( w )

      Возможность переименовывать файлы в каталоге, создавать новые файлы или удалять существующие файлы, если у вас также есть разрешения Execute. Если у вас нет выполнения perms, тогда писать perms бессмысленно.

    • Выполнить ( x )

      Возможность записи cd в этот каталог и доступ к файлам в этом каталоге.

    Вот несколько примеров, которые должны облегчить понимание:

     # "Full Access". Reegen can list, create, delete, rename, delete, # and stat any files in dir. # Access to file contents is subject to the permissions # of the file itself. # New files can be created, any file can be deleted, regardless of # file permissions. drwx------ 1 reegen reegen 4096 Jan 01 2003 dir # Reegen can do everything in the "Full Access" list except create, # delete, or rename files in this directory. dr-x------ 1 reegen reegen 4096 Jan 01 2003 dir # Reegen can do everything in the "Full Access" list except list the # filenames in this directory. If she suspects there is a file # named "program" she can list it, but cannot do an 'ls' # of the directory itself. She can access any file (file # permissions permitting) if she knows its name. She can # create new files, or rename/delete existing ones. d-wx------ 1 reegen reegen 4096 Jan 01 2003 dir # Reegen cannot create or delete any files in this directory. # She can access any file (permissions permitting) if she # knows its name already. d--x------ 1 reegen reegen 4096 Jan 01 2003 dir 

    В статье Hacking Linux Exposed есть еще больше информации.

    Я подготовил эту таблицу со всеми возможными разрешениями и их практическими эффектами.

    разрешения каталога Linux

    (*) Только имена файлов : другие атрибуты, такие как размер или дата, недоступны. Например, вы можете использовать клавишу tab для автозаполнения, но не команду ls.

    Некоторые мысли :

    • С X unset , R и W в основном бесполезны.
    • Только X, отключая RW, дает вам ложное ощущение безопасности, поскольку вы можете слепо читать и записывать содержимое файла и получать доступ к подкаталогам. Вы должны быть уверены, что все прямые дочерние элементы каталога имеют явные разрешения.
    • Редко вы будете использовать другие значения, чем:
      • 0 : нет доступа.
      • 1 : Минимальный доступ, разрешающий прохождение.
      • 5 : Разрешить чтение / запись, но не изменять структуру самого дерева каталогов.
      • 7 : Полный доступ.

    Значение Execute для каталогов совершенно очевидно. Поскольку разрешения на траверс нет, в отличие от Windows, вы должны что-то перегрузить. Дизайнеры выбрали Execute, что вызывает бесконечную путаницу. Как парень компьютерной безопасности, назначающий права Execute на что-то, чего вы не намерены выполнять Execute, выглядит изворотливым.

    Linux и Unix - лучшая ОС в мире.