Введение

Допускаемые действия в файловых системах

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

Разрешения POSIX

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

Классы

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

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

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

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

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