Как было показано в статье «базовые права доступа«, базовые права доступа, дополнительные атрибуты SUID/SGID, владельцы, счетчик имен и другие основные свойства файлов хранятся в их метаданных. Кроме этого, файлам могут быть назначены списки контроля доступа и метки безопасности SELinux, которые являются их дополнительными свойствами и хранятся за пределами метаданных, при помощи расширенных атрибутов attr.
Каждый расширенный атрибут имеет имя вида namespace.attrname, при этом пространства имен namespace определяют назначение атрибута. Пространство, имен systen используется системными (ядерными) компонентами, например, для списков контроля доступа POSIX ACL.
Пространство имен security используется системными компонентами безопасности, в частности .для хранения привилегий исполняемых программ (capabilities), и меток модуля принудительного контроля доступа SELinux.
Пространства имен trusted и user предназначены для атрибутов внеядерных компонент программ, выполняющихся привилегированным и обычными пользователями соответственно.
Для просмотра и назначения внеядерных (пользовательских) расширенных атрибутов используются утилиты getfattr и setfattr. Читать пользовательские расширенные атрибуты файла разрешено тем же субъектам, которым разрешено чтение данных этого файла.
Аналогично устанавливать (изменять) и удалять пользовательские расширенные атрибуты файла могут субъекты, допущенные к записи данных этого файла.
Ядерные (системные) атрибуты обычно управляются специально предназначенными командами, например, getfacl и setfacl предназначены для списков контроля доступа, команды getcap и setcap — для привилегий исполняемых программ, команды chcon и ls-Z — для мандатных меток. Системные атрибуты, как правило, всегда доступны для чтения, но их установка и изменение требуют определенных привилегий процесса.
Расширенные системные атрибуты файлов
john@ubuntu:~$ getcap /usr/bin/gnome-keyring-daemon
/usr/bin/gnome-keyring-daenon = cap_ipc_lock+ep
john@ubuntu:~$ getfattr -d -m — /usr/bin/gnome-keyring-daemon
getfattr: Удаление начальных ’/’из абсолютных путей
# file: usr/bin/gnome-keyring-daemon
security.capability=QsAQAAAgBAAAAAAAAAAAAAAAAAAAA=
john@ubuntu:~$ cd /srv/kingdon/stash
john@ubuntu:/srv/kingdon/stash$ ls -l README.mike
-rw-rw—-+ john candy 0 нояб. 4 14:17 README.mike
finn@ubuntu:/srv/kingdon/stash$ getfacl README.jake
# file: README.mike
# owner: john
# group: candy
user::fw-
user: mike:rw-
group:: rwx #effective:rw-
mask:: rx-
other::—
john@ubuntu:/srv/kingdon/stash$ getfattr -d -m — README.mike
# file: README.mike
systen. posix_acl_access=0sAgAAAAEABgD/////AgAGAOoDAAAEAAcA/////xAABgD/////IAAAAP////8=
john@ubuntu:/srv/kingdon/staSh$ setfattr -n user.color -v orange README.mike john@ubuntu:/srv/kingdon/stash$ setfattr -n user.flavour -v vanilla README.mike finn@ubuntu:/srv/kingdon/stash$ getfattr -d README.mike
# file: README.mike
user.color=»orange»
user. flavour=»vanilla»
В примере из листинга выше показано, что привилегии исполняемых программ на самом деле сохранены в атрибуте security.capability, списки контроля доступа — в атрибуте system.posix_acl_access, а в атрибутах пространства имен user можно разместить любые значения.
Наиболее известным применением пользовательских атрибутов являются атрибуты user.xdg.origin.url и user.xdg.referrer.url, использующиеся браузером chromium-browser для сохранения URL файлов, которые были загружены из Интернета.
Расширенные пользовательские атрибуты файлов
john@ubuntu:~/Downloads$ getfattr -d TLCL-13.07.pdf
# file: TLCL-13.07.pdf
user, xdg. origin. url-‘http: //freefr.dl. sourceforge. net/project/linuxcomnand/TLCL/13.07/
TLCL-13.07.pdf»
user. xdg. referrer. urVhttp: //sourceforge. net/projects/linuxcommand/flles/TLCL/13.07/ TLCL-13.07. pdf/download »
Уведомление: Привилегии как атрибуты процесса Linux | Debian GNU/Linux