Читаем Linux API. Исчерпывающее руководство полностью

15.5. Как отмечалось в подразделе 15.4.6, системный вызов umask() всегда задает маску umask для процесса и в то же время возвращает копию старой маски. Каким образом можно получить текущую копию маски umask, оставив ее без изменений?

15.6. Команда chmod a+rX file предоставляет право доступа на чтение всем категориям пользователей и подобным же образом предоставляет право доступа на выполнение всем категориям пользователей, если файл file является каталогом или если разрешение на выполнение предоставлено какой-либо категории пользователей файла, как показано в приведенном ниже примере:

$ ls — ld dir file prog

dr- 2 mtk users 48 May 4 12:28 dir

— r- 1 mtk users 19794 May 4 12:22 file

— r-x- 1 mtk users 19336 May 4 12:21 prog

$ chmod a+rX dir file prog

$ ls — ld dir file prog

dr-xr-xr-x 2 mtk users 48 May 4 12:28 dir

— r-r-r- 1 mtk users 19794 May 4 12:22 file

— r-xr-xr-x 1 mtk users 19336 May 4 12:21 prog

Напишите программу, использующую системный вызов stat() и команду chmod() для выполнения действий, эквивалентных команде chmod a+rX.

15.7. Напишите простую версию команды chattr(1), которая изменяет флаги индексного дескриптора. Подробности об интерфейсе командной строки для команды chattr см. на странице chattr(1) руководства. (Вам не требуется реализация параметров — R, — V и — v.)

16. Расширенные атрибуты

В данной главе описаны расширенные атрибуты (extended attributes, EA), допускающие использование произвольных метаданных в виде пар «имя-значение», привязанных к индексным дескрипторам. Расширенные атрибуты появились в версии Linux 2.6.


16.1. Обзор


Расширенные атрибуты служат для реализации списков контроля доступа (см. главу 17) и возможностями файла (см. главу 39). Однако организация данных атрибутов является настолько общей, что позволяет задействовать их и для других целей. Так, например, можно применить их для записи номера версии файла, информации о MIME-типе или кодовой таблице файла, а также для создания графического значка (или указателя на него).

EA не определены в стандарте SUSv3. Тем не менее подобная функция представлена в некоторых других реализациях UNIX, в особенности в современных версиях ОС BSD (см. extattr(2)), Solaris 9 и выше (см. fsattr(5)).

Расширенным атрибутам требуется поддержка со стороны основной файловой системы. Такую поддержку обеспечивают файловые системы Btrfs, ext2, ext3, ext4, JFS, Reiserfs и XFS.

Данная поддержка является необязательной для файловой системы и контролируется с помощью параметров конфигурации ядра в меню File systems (Файловые системы). EA поддерживаются файловой системой Reiserfs, начиная с версии Linux 2.6.7.


Пространство имен для расширенных атрибутов

Имена расширенных атрибутов представлены в виде пары namespace.name. Компонент namespace предназначен для разграничения расширенных атрибутов по функционально различным классам. Компонент name уникальным образом идентифицирует расширенный атрибут внутри данного пространства namespace.

Для компонента namespace поддерживаются четыре значения (типа EA): user, trusted, system и security. Они используются следующим образом.

• Расширенными атрибутами типа user могут управлять непривилегированные процессы при определенных условиях: для извлечения значения EA user необходимо иметь разрешение на чтение файла; для изменения значения данного атрибута необходимо иметь разрешение на запись. (Отсутствие необходимых прав доступа приведет к возникновению ошибки EACCES.) Для привязки расширенных атрибутов user к файлу в файловой системе ext2, ext3, ext4 или Reiserfs необходимо, чтобы основная файловая система была смонтирована с ключом user_xattr:

$ mount — o user_xattr device directory

• Расширенные атрибуты trusted похожи на атрибуты user в том, что ими могут управлять пользовательские процессы. Однако для управления EA trusted такой процесс должен быть привилегированным (CAP_SYS_ADMIN).

• Расширенные атрибуты system используются ядром для привязки системных объектов к файлу. В настоящее время единственным поддерживаемым типом объектов является список контроля доступа (см. главу 17).

• Расширенные атрибуты security применяются для хранения меток, предназначенных для модулей защиты операционной системы, а также для привязки возможностей к исполняемым файлам (см. подраздел 39.3.2). Изначально EA security были разработаны для поддержки Linux с улучшенной защитой (Security-Enhanced Linux, SELinux, https://www.nsa.gov/what-we-do/research/selinux/).

Перейти на страницу:

Похожие книги

C++ Primer Plus
C++ Primer Plus

C++ Primer Plus is a carefully crafted, complete tutorial on one of the most significant and widely used programming languages today. An accessible and easy-to-use self-study guide, this book is appropriate for both serious students of programming as well as developers already proficient in other languages.The sixth edition of C++ Primer Plus has been updated and expanded to cover the latest developments in C++, including a detailed look at the new C++11 standard.Author and educator Stephen Prata has created an introduction to C++ that is instructive, clear, and insightful. Fundamental programming concepts are explained along with details of the C++ language. Many short, practical examples illustrate just one or two concepts at a time, encouraging readers to master new topics by immediately putting them to use.Review questions and programming exercises at the end of each chapter help readers zero in on the most critical information and digest the most difficult concepts.In C++ Primer Plus, you'll find depth, breadth, and a variety of teaching techniques and tools to enhance your learning:• A new detailed chapter on the changes and additional capabilities introduced in the C++11 standard• Complete, integrated discussion of both basic C language and additional C++ features• Clear guidance about when and why to use a feature• Hands-on learning with concise and simple examples that develop your understanding a concept or two at a time• Hundreds of practical sample programs• Review questions and programming exercises at the end of each chapter to test your understanding• Coverage of generic C++ gives you the greatest possible flexibility• Teaches the ISO standard, including discussions of templates, the Standard Template Library, the string class, exceptions, RTTI, and namespaces

Стивен Прата

Программирование, программы, базы данных
1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
C# 4.0: полное руководство
C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

Программирование, программы, базы данных