Разрешения файловой системы - File-system permissions

Большинство файловых систем включают атрибуты файлов и каталогов, которые управляют возможностью пользователей читать, изменять, перемещаться и выполнять содержимое файловой системы. В некоторых случаях параметры или функции меню могут быть видимыми или скрытыми в зависимости от уровня разрешений пользователя; такой вид пользовательского интерфейса называется управляемым разрешениями .

Очень широко доступны два типа разрешений: традиционные разрешения Unix и списки управления доступом (ACL), которые позволяют осуществлять более конкретный контроль.

Варианты файловой системы

Оригинальный File_Allocation_Table файловая система, предназначенная для систем одного пользователя, имеет атрибут только для чтения , который не является на самом деле разрешение.

NTFS, реализованная в Microsoft Windows NT и ее производных, использует списки управления доступом для предоставления сложного набора разрешений.

OpenVMS использует схему разрешений, аналогичную Unix. Существует четыре категории (система, владелец, группа и мир) и четыре типа прав доступа (чтение, запись, выполнение и удаление). Категории не пересекаются между собой: Мир включает Группу, которая, в свою очередь, включает Владельца. В категорию «Система» независимо входят пользователи системы.

HFS, реализованная в классических операционных системах Mac OS , не поддерживает разрешения.

Mac OS X версии 10.3 («Пантера») и более ранние используют разрешения, совместимые с POSIX. Mac OS X, начиная с версии 10.4 («Тигр»), также поддерживает использование списков контроля доступа NFSv4. Они поддерживают «традиционные разрешения Unix», которые использовались в предыдущих версиях Mac OS X, а в Руководстве по администрированию файловых служб Apple Mac OS X Server версии 10.4+ рекомендуется по возможности использовать только традиционные разрешения Unix. Он также по-прежнему поддерживает атрибут «Защищено» в Mac OS Classic.

Поддержка ACL Solaris зависит от используемой файловой системы; более старая файловая система UFS поддерживает ACL POSIX.1e, а ZFS поддерживает только ACL NFSv4.

Linux поддерживает ext2 , ext3 , ext4 , Btrfs и другие файловые системы, многие из которых включают ACL POSIX.1e. Существует экспериментальная поддержка списков ACL NFSv4 для файловых систем ext3 и ext4.

FreeBSD поддерживает ACL POSIX.1e в UFS и ACL NFSv4 в UFS и ZFS.

IBM z / OS реализует защиту файлов с помощью RACF (Resource Access Control Facility).

Файловая система AmigaOS, AmigaDOS поддерживает систему разрешений, относительно продвинутую для однопользовательской ОС. В AmigaOS 1.x файлы имели разрешения / флаги «Архивирование», «Чтение, запись», «Выполнение» и «Удаление» (вместе известные как ARWED). В AmigaOS 2.x и выше были добавлены дополнительные разрешения / флаги Hold, Script и Pure.

Традиционные разрешения Unix

Разрешения в Unix-подобных файловых системах управляются в трех областях или классах, известных как пользователь , группа и другие . Когда файл создается, его права доступа ограничиваются umask процесса, который его создал.

Классы

Файлы и каталоги принадлежат пользователю. Владелец определяет класс пользователя файла . К владельцу применяются особые разрешения.

Файлам и каталогам назначается группа , которая определяет класс группы файла . Отдельные разрешения применяются к членам группы файла. Владелец может быть членом группы файла.

Пользователи, которые не являются ни владельцем, ни членом группы, составляют класс других файла . Отдельные разрешения применяются к другим.

Действующие разрешения определяются на основе первого класса, к которому относится пользователь, в следующем порядке: пользователь, группа, а затем другие. Например, пользователь, который является владельцем файла, будет иметь разрешения, предоставленные классу пользователей, независимо от разрешений, назначенных классу группы или другому классу.

Разрешения

Unix-подобные системы реализуют три конкретных разрешения, которые применяются к каждому классу:

  • Разрешение на чтение дает возможность читать файл. Если задано для каталога, это разрешение дает возможность читать имена файлов в каталоге, но не получать дополнительную информацию о них, такую ​​как содержимое, тип файла, размер, право собственности, разрешения.
  • Разрешение на запись дает возможность изменять файл. Если установлено для каталога, это разрешение дает возможность изменять записи в каталоге, включая создание файлов, удаление файлов и переименование файлов. Обратите внимание , что это необходимо , чтобы выполнить также установлено; без него разрешение на запись для каталогов не имеет смысла.
  • Разрешение на выполнение дает возможность выполнять файл. Это разрешение должно быть установлено для исполняемых программ, чтобы операционная система могла их запускать. Если установлено для каталога, разрешение на выполнение интерпретируется как разрешение на поиск : оно предоставляет возможность доступа к содержимому файла и метаинформации, если его имя известно, но не перечисляет файлы внутри каталога, если также не установлено чтение .

Эффект от установки разрешений для каталога, а не для файла, является «одной из наиболее часто неправильно понимаемых проблем с правами доступа к файлам».

Если разрешение не установлено, соответствующие права запрещены. В отличие от систем на основе ACL, разрешения в Unix-подобных системах не наследуются. Файлы, созданные в каталоге, не обязательно имеют те же разрешения, что и этот каталог.

Изменение поведения разрешений с помощью setuid, setgid и липких битов

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

  • Установленный идентификатор пользователя , setuid или режим SUID. Когда выполняется файл с setuid, результирующий процесс принимает эффективный идентификатор пользователя, присвоенный классу владельца. Это позволяет временно обрабатывать пользователей как root (или другой пользователь).
  • Установленный идентификатор группы , setgid или разрешение SGID. Когда выполняется файл с setgid , результирующий процесс примет идентификатор группы, присвоенный классу группы. Когда setgid применяется к каталогу, новые файлы и каталоги, созданные в этом каталоге, унаследуют свою группу от этого каталога. (По умолчанию при настройке группы новых файлов и каталогов используется основная группа эффективного пользователя, за исключением систем, производных от BSD, которые ведут себя так, как будто бит setgid всегда установлен для всех каталогов (см. Setuid ).)
  • Липким режим (также известная как Текстовый режим). Классическое поведение липкого бита в исполняемых файлах заключалось в том, чтобы побудить ядро сохранить полученный образ процесса в памяти после завершения; однако такое использование липкого бита сейчас ограничено лишь меньшинством unix-подобных операционных систем ( HP-UX и UnixWare ). В каталоге закрепленное разрешение не позволяет пользователям переименовывать, перемещать или удалять содержащиеся файлы, принадлежащие другим пользователям, даже если у них есть разрешение на запись в каталог. Только владелец каталога и суперпользователь освобождаются от этого.

Эти дополнительные режимы также называют Setuid бит , setgid бит и липкий бит , из - за того , что каждый из них занимают только один бит.

Обозначение традиционных разрешений Unix

Символическое обозначение

Разрешения Unix представлены либо в символьной, либо в восьмеричной нотации.

Наиболее распространенная форма, используемая в команде ls -l, - это символическая запись .

Три триады разрешения
первая триада что может сделать хозяин
вторая триада что могут делать члены группы
третья триада что могут делать другие пользователи
Каждая триада
первый персонаж r: удобочитаемый
второй персонаж w: записываемый
третий персонаж x: исполняемый
sили t: setuid / setgid или липкий (также исполняемый)
Sили T: setuid / setgid или липкий (не исполняемый)

Первый символ на lsдисплее указывает тип файла и не имеет отношения к разрешениям. Остальные девять символов представлены тремя наборами, каждый из которых представляет класс разрешений в виде трех символов. Первый набор представляет класс пользователя . Второй набор представляет собой групповой класс. Третий набор представляет другой класс.

Каждый из трех символов представляет права на чтение, запись и выполнение:

  • rесли чтение разрешено, -если нет.
  • wесли писать разрешено, -если нет.
  • xесли исполнение разрешено, -если нет.

Ниже приведены некоторые примеры символической записи:

  • -rwxr-xr-x: обычный файл, пользовательский класс которого имеет полные разрешения, а группа и другие классы имеют только разрешения на чтение и выполнение.
  • crw-rw-r--: специальный символьный файл, пользовательский и групповой классы которого имеют права на чтение и запись, а остальные классы имеют только права на чтение.
  • dr-x------: каталог, пользовательский класс которого имеет разрешения на чтение и выполнение, а группа и другие классы не имеют разрешений.

В некоторых системах разрешений дополнительные символы на ls -lдисплее представляют дополнительные функции разрешений:

  • Суффикс + (плюс) указывает на список управления доступом, который может управлять дополнительными разрешениями.
  • . Суффикс (точка) указывает на наличие контекста SELinux . Детали могут быть перечислены с командой ls -Z.
  • Суффикс @ указывает на наличие расширенных атрибутов файла .

Для представления атрибутов setuid , setgid и sticky или text исполняемый символ ( xили -) изменяется. Хотя эти атрибуты влияют на весь файл, а не только на пользователей в одном классе, атрибут setuid изменяет исполняемый символ в триаде для пользователя, атрибут setgid изменяет исполняемый символ в триаде для группы, а атрибут sticky или text изменяет исполняемый персонаж в триаде для других. Для атрибутов setuid или setgid в первой или второй триаде xстановится sи -становится S. Для атрибута липкий или текст в третьей триаде xстановится tи -становится T. Вот пример:

  • -rwsr-Sr-t: файл, пользовательский класс которого имеет права на чтение, запись и выполнение; чей групповой класс имеет разрешение на чтение; чей другой класс имеет разрешения на чтение и выполнение; и для которого установлены атрибуты setuid , setgid и sticky .

Числовое обозначение

Другой метод представления разрешений Unix - это восьмеричная нотация (с основанием 8), как показано stat -c %a. Это обозначение состоит как минимум из трех цифр. Каждая из трех крайних правых цифр представляет отдельный компонент разрешений: владельца, группу и другие. (Если четвертая цифра присутствует, крайний левый (высокого порядка) значные адреса трех дополнительных атрибутов, то УИП бит , то setgid бит и липкий бит .)

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

  • Бит чтения добавляет 4 к его общему количеству (в двоичном формате 100),
  • Бит записи добавляет 2 к его общему количеству (в двоичном формате 010), и
  • Бит выполнения добавляет 1 к своей сумме (в двоичном формате 001).

Эти значения никогда не образуют неоднозначных комбинаций; каждая сумма представляет собой определенный набор разрешений. С технической точки зрения, это восьмеричное представление битового поля - каждый бит ссылается на отдельное разрешение, а группировка по 3 бита в восьмеричном формате соответствует группировке этих разрешений по пользователям, группам и т. Д.

Это примеры из раздела символьных обозначений, представленные в восьмеричной системе счисления:

Символическое
обозначение
Числовое
обозначение
английский
---------- 0000 нет разрешений
-rwx------ 0700 читать, писать и выполнять только для владельца
-rwxrwx--- 0770 читать, писать и выполнять для владельца и группы
-rwxrwxrwx 0777 читать, писать и выполнять для владельца, группы и других
---x--x--x 0111 выполнять
--w--w--w- 0222 написать
--wx-wx-wx 0333 написать и выполнить
-r--r--r-- 0444 читать
-r-xr-xr-x 0555 читать и выполнять
-rw-rw-rw- 0666 читай пиши
-rwxr----- 0740 владелец может читать, писать и выполнять; группа может только читать; у других нет разрешений

Приватная группа пользователей

Некоторые системы расходятся с традиционной моделью пользователей и групп POSIX, создавая новую группу - «частную группу пользователей» - для каждого пользователя. Предполагая, что каждый пользователь является единственным членом своей частной группы пользователей, эта схема позволяет использовать umask 002, не позволяя другим пользователям писать во вновь созданные файлы в обычных каталогах, поскольку такие файлы назначаются частной группе создавшего пользователя. Однако, когда совместное использование файлов желательно, администратор может создать группу, содержащую желаемых пользователей, создать групповой каталог с возможностью записи, назначенный новой группе, и, что наиболее важно, сделать каталог setgid. Установка его setgid приведет к тому, что файлы, созданные в нем, будут назначены той же группе, что и каталог, а 002 umask (включенный с использованием пользовательских частных групп) гарантирует, что другие члены группы смогут писать в эти файлы.

Смотрите также

использованная литература

внешние ссылки