Из Википедии, бесплатной энциклопедии
  (Перенаправлено из разрешений файла )
Перейти к навигации Перейти к поиску

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

Очень широко используются два типа разрешений: традиционные разрешения Unix восходят многие десятилетия назад к самым ранним дням Unix. Они повсеместно доступны на всех платформах, производных от Unix и Linux . Списки управления доступом (ACL) являются более новыми по происхождению и повсеместно используются в файловых системах на базе Microsoft Windows , где файловая система поддерживает разрешения пользователей (в основном NTFS и ReFS.), а также в настоящее время широко используются и широко доступны в большинстве распространенных систем на базе Unix и Linux, хотя и не обязательно во всех. Как правило, они способны к гораздо более детальной настройке разрешений, чем традиционные разрешения Unix, и позволяют использовать систему контроля доступа, которую традиционные ACL не могут обеспечить. В системах на базе Unix и Linux стандартным типом ACL является тот, который определен стандартом POSIX ( POSIX ACL ), но существуют и другие варианты, такие как ACL NFS v3 и v4, которые работают несколько иначе ( ACL NFSv3 или ACL NFSv4 ).

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

Варианты операционной системы [ править ]

Unix-подобные и другие POSIX- совместимые системы, включая системы на базе Linux и все версии macOS , имеют простую систему управления разрешениями на отдельные файлы, которые в этой статье называются «традиционными разрешениями Unix». Большинство этих систем также поддерживают какие-то списки управления доступом (ACL), проприетарные (например, старые ACL HP-UX) или ACL POSIX.1e, основанные на раннем проекте POSIX, который был отозван в 1997 году, или ACL NFSv4. , которые являются частью стандарта NFSv4.

Варианты Microsoft и IBM DOS (включая MS-DOS , PC DOS , Windows 95 , Windows 98 , Windows 98 SE и Windows ME ) не имеют разрешений, только атрибуты файлов . Существует атрибут только для чтения (R), который может быть установлен или отключен для файла любым пользователем или программой и, следовательно, не мешает кому-либо изменять / удалять файл. В этих системах нет разрешения, которое не позволяло бы пользователю читать файл.

Другие MS-DOS / PC DOS-совместимые операционные системы, такие как DR DOS 3.31 и выше, PalmDOS , Novell DOS и OpenDOS , FlexOS , 4680 OS , 4690 OS , Concurrent DOS , Multiuser DOS , Datapac System Manager и IMS REAL / 32 поддерживают чтение / запись / выполнение / удаление прав доступа к файлам / каталогам на томах FAT . За исключением FlexOS, 4680 OS и 4690 OS, все эти операционные системы также поддерживают индивидуальные пароли файлов / каталогов.. Все операционные системы, за исключением DR DOS, PalmDOS, Novell DOS и OpenDOS, также поддерживают три независимых класса владения файлом / каталогом world / group / owner, тогда как однопользовательские операционные системы DR DOS 6.0 и выше, PalmDOS, Novell DOS и OpenDOS поддерживайте их только с загруженным дополнительным многопользовательским модулем безопасности ( SECURITY.BIN ).

OpenVMS (также известная как VMS), а также Microsoft Windows NT и ее производные (включая Windows 2000 и Windows XP ) используют ACL [1] для администрирования более сложного и разнообразного набора разрешений. OpenVMS также использует схему разрешений, аналогичную Unix, но более сложную. Существует четыре категории (система, владелец, группа и мир) и четыре типа прав доступа (чтение, запись, выполнение и удаление). Категории не пересекаются между собой: Мир включает Группу, которая, в свою очередь, включает Владельца. Категория Система независимо включает пользователей системы (аналогично суперпользователям в Unix). [2]

HFS классических операционных систем Mac OS не поддерживает разрешения, только атрибуты файлов: «Скрытый» (не отображается в списках каталогов); «Заблокировано» (только для чтения); «Имя заблокировано» (переименовать нельзя); и «Канцелярские товары» ( копирование при записи ).

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

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. [3]

Linux поддерживает списки ACL POSIX.1e. Существует экспериментальная поддержка списков ACL NFSv4 для файловой системы ext3 [4] и файловой системы ext4.

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

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

Традиционные разрешения Unix [ править ]

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

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

Классы [ править ]

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

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

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

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

Разрешения [ править ]

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

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

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

Если разрешение не установлено, соответствующие права запрещены. В отличие от систем на основе 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, - это символическая запись .

Первый символ на 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». Для атрибута sticky или text в третьей триаде «x» становится «t», а «-» становится «T». Вот пример:

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

Цифровое обозначение [ править ]

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

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

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

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

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

Частная группа пользователя [ править ]

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

См. Также [ править ]

  • chattr или chflags, которые устанавливают атрибуты или флаги, включая «неизменяемые» флаги, которые блокируют файлы, переопределяя и ограничивая их разрешения.
  • chmod , команда, используемая для установки разрешений в Unix-подобных системах
  • Идентификатор группы (Unix)
  • lsattr
  • POSIX
  • маска
  • Идентификатор пользователя (Unix)

Ссылки [ править ]

  1. ^ «Права доступа к файлам и папкам» . Microsoft.
  2. ^ "Документация OpenVMS" . Архивировано из оригинала на 2012-03-05 . Проверено 6 июня 2009 .
  3. ^ «Руководство администратора Oracle Solaris ZFS» (PDF) . Сентябрь 2010 г.
  4. ^ "Архивная копия" . Архивировано из оригинала на 2008-10-12 . Проверено 4 мая 2010 .CS1 maint: заархивированная копия как заголовок ( ссылка )
  5. ^ "NFSv4_ACLs - FreeBSD Wiki" .
  6. ^ "Руководство пользователя FreeNAS 9.1.1" (PDF) . 2013.
  7. ^ «Центр знаний IBM» .
  8. ^ Хэтч, Бри. "Linux File Permission Confusion pt 2" , "Hacking Linux Exposed", 24 апреля 2003 г., по состоянию на 6 июля 2011 г.
  9. ^ Эпштейн, Брайан. «Как и почему пользовательские частные группы в Unix» . security.ias.edu . Институт перспективных исследований сетевой безопасности . Проверено 5 августа 2014 .
  10. ^ Hradílek, Яромир. «Руководство системного администратора Red Hat Enterprise Linux 7, 3.3.3 Создание групповых каталогов» . access.redhat.com . Красная шляпа.

Внешние ссылки [ править ]

  • Поваренная книга Linux: группы и способы работы с ними , Майкл Штутц, 2004 г.