Какова точная цель «маска» в файловой системе ACL?

Лично я считаю, что xargs - это весело и все такое, но я предпочитаю циклы для такого рода вещей. Почему? Что ж, это дает вам больше гибкости ... а также дает вам довольно простой способ обрабатывать пробелы:

mpc | head -n 1 | while read filename
do
  ls -al "$filename"  # Look at the file you're deleting
  rm -i "$filename"   # Ask if you want it deleted (or not)
done

Когда вы используете такой цикл while, ваши данные перекачиваются в любое имя переменной, которое появляется после "read"; чтобы ссылаться на переменную, вам понадобится ведущий знак доллара. Кавычки нужны для изящной обработки пробелов, поэтому они не похожи на разделители. Подобные петли, хотя и менее элегантны, чем простой однострочный, предлагают вам большую гибкость и безумно удобны в долгосрочной перспективе.

4
16.10.2018, 02:29
1 ответ

Что

Эта 3-битная -система ACL берет свое начало в TRUSIX. Другие системы ACL, такие как системы в стиле NFS4 -в FreeBSD, MacOS, AIX, Illumos и Solaris, работают иначе, и эта концепция записи управления доступом по маске отсутствует.

Маска — это, как следует из названия, маска, которая применяется к маскированию разрешений, предоставленных записями управления доступом для пользователей и групп. Это максимальное разрешение, которое может быть предоставлено любой записью управления доступом, кроме владельца файла или «другой» записи. Его 3 бита andобъединены с 3 битами этих других записей.

Так, например, если пользователю предоставлено rw-записью управления доступом, но маска имеет значение r--, пользователь фактически будет иметь только r--доступ. И наоборот, если пользователю предоставляется только --xзапись управления доступом, маска rwxне предоставляет дополнительных разрешений, и пользователь имеет только доступ --x.

Маска по умолчанию для родительского каталога — это настройка маски, которая применяется к объектам, созданным в нем. Это форма наследования.

Почему

Жалко, что IEEE 1003.1e так и не стал стандартом и был отозван в 1998 году. На практике, девятнадцать лет спустя, это стандарт, который поддерживает широкий спектр операционных систем — от Linux до FreeBSD Solaris(вместе со списками ACL в стиле NFS4 -в последних случаях )— фактически реализованы.

Рабочий проект IEEE 1003.1e #17 представляет интерес для чтения, и я рекомендую его. В приложении B § 23.3 рабочая группа приводит подробное восьмистраничное обоснование несколько сложного способа работы списков контроля доступа POSIX по отношению к старым флагам разрешений группы S_IRWXG. (Стоит отметить, что люди из TRUSIX предоставили почти такой же анализ десятью годами ранее. )Это покрывает raison d'être для маски, которую я только уточню здесь.

  • Традиционные приложения Unix должны иметь возможность запретить любой доступ к файлу, именованному каналу, устройству или каталогу с помощью chmod(…,000). При наличии списков ACL это только отключает все разрешения пользователей и групп, если есть маска и старая S_IRWXGсоответствует ей. Без этого установка старых прав доступа к файлу на 000не повлияет ни на какие записи, не являющиеся -владельцами userили group, а другие пользователи, как ни странно, по-прежнему будут иметь доступ к объекту.

    Временное изменение битов доступа к файлу на «нет доступа» с помощью chmod 000, а затем обратное их изменение было старым механизмом блокировки файлов, использовавшимся до того, как в Unix появились рекомендательные механизмы блокировки, которые — как вы можете видеть — люди все еще используют. даже в 21 веке . (С конца 1990-х годов рекомендательную блокировку легко использовать в сценариях с хорошо -переносимыми инструментами, такими как setlock.)

  • Ожидается, что традиционные сценарии Unix смогут выполняться chmod go-rwx, и в конечном итоге только владелец объекта сможет получить доступ к объекту. Опять же, это не работает, если нет маски и к ней не привязаны старые разрешения S_IRWXG; потому что в противном случае эта команда chmodне отключила бы никакие записи управления доступом, не являющиеся -владельцами userили group, что привело бы к тому, что пользователи, не являющиеся владельцами, и группы, не являющиеся -владельцами, сохраняли бы доступ к тому, что ] ожидается, что будет доступен только владельцу.

    И снова — как видите — такого рода chmodповеления все еще были общепринятой мудростью двенадцать лет спустя. Обоснование остается в силе.

  • Другие подходы без механизма маски имеют недостатки.
  • Альтернативная система, в которой биты разрешений были отделены от списков ACL и andобъединены с ними, в большинстве случаев требовала бы, чтобы флаги прав доступа к файлам были rwxrwxrwx, что чертовски запутало бы многие приложения Unix, которые жалуются, когда они видят то, что они считают -доступным для записи материалом.
  • Альтернативная система, в которой биты разрешения были отделены от списков ACL и orобъединены с ними, имела бы проблему chmod(…,000), упомянутую ранее.

Следовательно, система ACL с маской.

Дополнительная литература

9
27.01.2020, 20:49

Теги

Похожие вопросы