4

ACL и стандартные разрешения для файлов, похоже, синхронизированы:

$ getfacl test.cpp
# file: test.cpp
# owner: scdmb
# group: scdmb
user::rw-
group::rw-
other::r--

$ ls -l test.cpp
-rw-rw-r-- 2 scdmb scdmb 173 Jan  1  1970 test.cpp

Однако, как я прочитал, в inode есть два места для сохранения прав доступа к файлу (поле i_mode) и эти расширенные атрибуты файла, в которые помещаются ACL. Итак, когда я получаю доступ к файлу, какие права доступа к файлу используются - стандартные или ACL? Или, может быть, это одно и то же, представленное по-разному?

1 ответ1

3

Из man-страницы getfacl:

Формат вывода getfacl выглядит следующим образом:

           1:  # file: somedir/
           2:  # owner: lisa
           3:  # group: staff
           4:  user::rwx
           5:  user:joe:rwx               #effective:r-x
           6:  group::rwx                 #effective:r-x
           7:  group:cool:r-x
           8:  mask:r-x
           9:  other:r-x
          10:  default:user::rwx
          11:  default:user:joe:rwx       #effective:r-x
          12:  default:group::r-x
          13:  default:mask:r-x
          14:  default:other:---

Строки 4, 6 и 9 соответствуют пользовательским, групповым и другим полям битов разрешения режима файла. Эти три называются базовыми записями ACL. Строки 5 и 7 - именованные записи пользователя и именованной группы. Строка 8 - эффективная маска прав. Эта запись ограничивает действующие права, предоставляемые всем группам и именным пользователям. (Владелец файла и другие разрешения не зависят от действующей маски прав; все остальные записи.) Строки 10-14 отображают ACL по умолчанию, связанный с этим каталогом. Каталоги могут иметь ACL по умолчанию. Обычные файлы никогда не имеют ACL по умолчанию.

Тот факт, что у вас отображаются строки только с :: а не <user|group|other>:<name>:<perms> указывает на то, что у вас нет расширенных ACL. Для этого конкретного файла вы просто используете getfacl в качестве причудливого способа получения той же информации, которая будет показана в ls -la (биты прав доступа user/group/other aka "базовый ACL".)

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

Там есть даже больше статьи с большим количеством ссылок здесь на Unix.SE.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .