Какие отношения связывают маску ACL и стандартное групповое разрешение для файла?


17

Сначала я создаю файл и проверяю его стандартные разрешения и записи ACL:

$ touch file; ls -l file; getfacl file
-rw-r--r-- 1 user user 0 Jul 30 16:26 file
# file: file
# owner: user
# group: user
user::rw-
group::r--
other::r--

Затем я устанавливаю маску ACL для файла и снова проверяю его стандартные разрешения и записи ACL:

$ setfacl -m mask:rwx file
$ ls -l file; getfacl file
-rw-rwxr--+ 1 user user 0 Jul 30 16:26 file
# file: file
# owner: user
# group: user
user::rw-
group::r--
mask::rwx
other::r--

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

  1. Какая связь существует между маской ACL и стандартным разрешением группы?
  2. В чем причина сочетания маски ACL и разрешений группы файлов? Какая логика стоит за этим?

Рассматриваемые дистрибутивы: Debian Linux 7.6 и CentOS 7


РЕДАКТИРОВАТЬ

На данный момент я просто хотел поделиться некоторыми своими выводами, которые я сделал при исследовании отношений между стандартными правами группы файлов и маской ACL. Вот эмпирические наблюдения, которые я нашел:

  1. Маска ACL может быть изменена:

    1. непосредственно установив его setfacl -m m:<perms>командой;
    2. изменяя права доступа к группе файлов с помощью chmodкоманды (если маска ACL уже присутствует; она может отсутствовать, потому что она необязательна, если в файле нет именованных прав доступа ACL для имени пользователя или группы);
    3. добавив запись ACL с именем пользователя или группы (маска будет автоматически пересчитана).
  2. Маска будет обеспечивать максимальные права доступа (если есть записи ACL с имеющимися разрешениями, которые превышают разрешения маски ACL), только если маска устанавливается непосредственно с помощью setfacl или путем изменения разрешения группы файлов с помощью chmod (не рассчитывается автоматически). Любые изменения в записях ACL приведут к автоматическому пересчету маски ACL и фактически отключат «принудительный режим».

  3. Существует несколько побочных эффектов, неявно влияющих на стандартные разрешения файловой группы при использовании ACL:

    1. Запись ACL с именованным пользователем или группой, примененная к файлу, может изменить маску ACL (увеличить ее разрешения) и, следовательно, эффективные разрешения группы файлов. Например, если у вас, как у владельца файла, установлены разрешения «rw-r - r-- jim Students», и вы также предоставляете разрешение rw пользователю «jack», вы также неявно предоставляете разрешения rw любому из группы "студенты".
    2. Более строгая (меньше разрешений) маска ACL может навсегда удалить соответствующие стандартные разрешения файловой группы. Например, если у вас есть файл со стандартными правами доступа к группе файлов rw, и вы применяете маску ACL только для чтения к файлу, его права доступа к группе уменьшатся до уровня только для чтения. Затем, если вы удалите все расширенные записи ACL (с помощью setfacl -bкоманды), разрешения группы останутся только для чтения. Это относится только к более строгой маске ACL, более мягкая маска ACL (больше разрешений) не изменяет навсегда разрешение исходной группы файлов после ее удаления.

Я думаю, что вы могли бы взять следующую страницу для справки, www-uxsup.csx.cam.ac.uk/pub/doc/suse/sles9/adminguide-sles9/…
Кунди,

Ответы:


11

Не имеет смысла, если права доступа к файлу unix не совпадают с записью acl и наоборот. Соответственно, страница руководства ( acl(5)) говорит, что вы просите:

ПЕРЕПИСКА МЕЖДУ ЗАПИСЯМИ ACL И БИТАМИ РАЗРЕШЕНИЯ НА ФАЙЛ

Разрешения, определенные ACL, представляют собой расширенный набор разрешений, указанных битами разрешений файла.

Существует соответствие между владельцем файла, группой и другими разрешениями и конкретными записями ACL: разрешения владельца соответствуют разрешениям записи ACL_USER_OBJ. Если ACL имеет запись ACL_MASK, разрешения группы соответствуют разрешениям записи ACL_MASK. В противном случае, если ACL не имеет записи ACL_MASK, разрешения группы соответствуют разрешениям записи ACL_GROUP_OBJ. Другие разрешения соответствуют разрешениям записи ACL_OTHER_OBJ.

Владелец файла, группа и другие разрешения всегда совпадают с разрешениями соответствующей записи ACL. Модификация битов разрешения файла приводит к модификации связанных записей ACL, а модификация этих записей ACL приводит к модификации битов разрешения файла.

Приложение в ответ на обсуждение:

В чем причина сочетания маски ACL и разрешений группы файлов? Какая логика стоит за этим?

Хорошее объяснение здесь . По сути, маска является

[...] верхняя граница разрешений, которые предоставит любая запись в классе группы.

Это свойство верхней границы гарантирует, что приложения POSIX.1, которые не знают о ACL, не будут внезапно и неожиданно начинать предоставлять дополнительные разрешения, как только ACL поддерживаются.

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

Эта проблема решается благодаря маске записи. При минимальных списках ACL разрешения класса группы сопоставляются с разрешениями на запись группы-владельца. В расширенных ACL разрешения класса группы сопоставляются с разрешениями записи маски, в то время как запись группы-владельца по-прежнему определяет разрешения группы-владельца. Сопоставление разрешений класса группы больше не является постоянным.


То, что вы говорите, относится к следующему выводу getfacl: user :: rw- group :: r-- other :: r-- . Эти 3 строки изменились бы, если бы вы использовали chmodкоманду для изменения стандартных разрешений, и наоборот, когда вы выполняете, скажем getfacl -m u:someuser:rwx, стандартное разрешение файла для владельца файла, и это изменение будет отражено в ls -lвыходных данных. Это все правда, но я не понимаю, как это отвечает на мой вопрос
голем

см. мою правку для полной истории
контрмод

1
В вашем отредактированном ответе говорится, что между разрешениями группы файлов и маской ACL есть связь. Вопрос о том, что является причиной для связывания маски ACL и прав доступа группы файлов, все еще включен. Что за этим стоит, мне неясно.
Голем

1
Там может быть смысл. Это зависит от определения и реализации. По определению, Linux-файл ACL, как он реализован сейчас, является расширенным набором стандартных прав доступа к файлам, то есть включает их. Поэтому они не могут "противоречить". Вот пример использования. Если я назначу разрешения rwx «testuser» для файла с начальными -rw-r--r-- 1 user userразрешениями, этот ACL с именем пользователя будет принят, и маска ACL (вместе с разрешениями группы файлов) также будет изменена на rwx. --- [см. следующий комментарий как продолжение]
Голем

1
Теперь разрешения rwx "testuser" противоречат новым -rw-rwxr-- 1 user userразрешениям файла или нет? Как вы определяете противоречие? Сравнивая разрешения ACL testuser со стандартными разрешениями группы файлов? Какая логика привела вас к сравнению групповых разрешений с правами пользователей? Разве они не разные сущности? Разве это не противоречит здравому смыслу? Это, вероятно, очевидно для вас, но я все еще пытаюсь понять это.
Голем

3

Я наконец -то понял , что именно происходит , когда я увидел эту ссылку Обработка списков управления доступом

В частности, эти маски в основном заменяют NAMED USER и все разрешения GROUP и заменяют их. Это означает, что если вы:

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

введите описание изображения здесь

Надеюсь, это поможет.


На странице, на которую вы ссылались, есть очень хорошее объяснение маски (цитата из раздела 27.3.3. Каталог с ACL доступа ): маска определяет максимально эффективные права доступа для всех записей в классе группы. Это включает именованного пользователя, именованную группу и группу-владельца. ,
patryk.beza

-1

Какая логика стоит за этим?

Логика полностью нарушена, и, таким образом, списки ACL для POSIX являются чистой и бесполезной чепухой.

Если они стремились сохранить совместимость с приложениями, которые не имеют представления о ACL, за исключением стандартной примитивной модели «ugo» UNIX, то они фактически потерпели неудачу вначале, потому что теперь каждое приложение, которое очищает разрешения группы, эффективно отзывает доступ, добавленный ACL.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.