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

21

CentOS 6.4

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

Например, предположим, что пользователи bob и joe принадлежат группе под названием sales. Давайте также скажем, что у меня есть торговый документ со следующими деталями:

[root@Maui ~]# getfacl /home/foo/docs/foo.txt
getfacl: Removing leading '/' from absolute path names
# file: home/foo/docs/foo.txt
# owner: jane
# group: executives
user:: r--
user:bob:rw-
user:joe:rwx
group:sales:rwx
group::r--
mask::rwx
other::---

У меня вопрос, как разрешения обрабатываются в примере, подобном этому, и какие привилегии доступа имеют приоритет?

Есть ли поиск сверху вниз, и какое правило соответствует первому, которое применяется?

Или Linux обеспечивает доступ на основе того, что является наиболее конкретным правилом для данного пользователя? Или, может быть, самое ограничительное и применимое правило имеет приоритет?

Майк Б
источник

Ответы:

15

Это довольно широкая тема, и здесь ее слишком много, чтобы ее охватить. Я отсылаю вас к спискам контроля доступа POSIX для Linux, составленным Андреасом Грюнбахером из SuSE Labs. Он довольно хорошо освещает тему и разбивает ее на части, чтобы вы понимали, как работают ACL.

Ваш пример

Теперь давайте посмотрим на ваш пример и разберем его.

  • группа (продажи)
  • Члены группы продаж (Боб, Джо)

Теперь давайте разберем права доступа к файлу /home/foo/docs/foo.txt. Списки ACL также включают в себя те же разрешения, с которыми большинство пользователей должны быть знакомы в Unix, в основном биты User, Group и Other. Итак, давайте сначала вытащим их.

user:: r--
group::r--
other::---

Они обычно выглядят так ls -l:

$ ls -l /home/foo/docs/foo.txt
-r--r----- 1 jane executives 24041 Sep 17 15:09 /home/foo/docs/foo.txt

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

# owner: jane
# group: executives

Итак, теперь мы разбираемся с мелочами ACL:

user:bob:rw-
user:joe:rwx
group:sales:rwx

Это показывает, что пользователь bobимеет rw, а пользователь joeимеет rwx. Существует также группа, которая также rwxпохожа на Джо. Эти разрешения, как если бы пользовательский столбец в нашем ls -lвыводе имел 3 владельца (jane, bob и joe), а также 2 группы (топ-менеджеры и продажи). Там нет никакого различия, кроме как они являются ACL.

Наконец maskстрока:

mask::rwx

В этом случае мы ничего не маскируем, это широко открыто. Так что, если пользователи Боб и Джо имеют эти строки:

user:bob:rw-
user:joe:rwx

Тогда это их эффективные разрешения. Если бы маска была такой:

mask::r-x

Тогда их эффективные разрешения будут такими:

user:bob:rw-    # effective:r--
user:joe:rwx    # effective:r-x

Это мощный механизм для сокращения разрешений, которые предоставляются оптом.

ПРИМЕЧАНИЕ. Владелец файла и другие разрешения не зависят от действующей маски прав; все остальные записи есть! Итак, что касается маски, разрешения ACL являются гражданами второго сорта по сравнению с традиционными разрешениями Unix.

Ссылки

SLM
источник