Примером использования расширенных атрибутов является реализация списков контроля доступа POSIX ACL.
Чтобы определить, включена ли в вашей файловой системе поддержка xattr
, проверьте файл параметров соответствующего устройства:
$ cat /proc/fs/ext4/sda1/options | grep xattr user_xattr
Аргумент во всех функциях path
может принимать объекты, представляющие путь файловой системы, такие как pathlib.PurePath
.
Так же все функции могут поддерживать указание дескриптора файла и не следовать символическим ссылкам follow_symlinks=False
.
os.getxattr(path, attribute, *, follow_symlinks=True)
:Функция os.getxattr()
вернет значение расширенного атрибута attribute
файловой системы для пути path
.
Аргумент attribute
может быть bytes
или str
, переданный прямо или косвенно через интерфейс PathLike. Если это строка, то она кодируется с помощью кодировки файловой системы.
Функция os.getxattr()
вызывает событие аудита os.getxattr
с аргументами path
, attribute
.
os.listxattr(path=None, *, follow_symlinks=True)
:Функция os.listxattr()
вернет список расширенных атрибутов файловой системы по пути path
. Атрибуты в списке представлены в виде строк, декодированных в кодировке файловой системы. Если путь отсутствует, то os.listxattr()
будет проверять текущий каталог.
Функция os.listxattr()
вызывает событие аудита os.listxattr
с аргументом path
.
os.removexattr(path, attribute, *, follow_symlinks=True)
:Функция os.removexattr()
удаляет расширенный атрибут attribute
из пути path
файловой системы.
Аргумент attribute
может быть bytes
или str
, переданный прямо или косвенно через интерфейс PathLike. Если это строка, то она кодируется с помощью кодировки файловой системы.
Функция os.removexattr()
вызывает событие аудита os.removexattr
с аргументами path
, attribute
.
os.setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)
:Функция os.setxattr()
установит атрибут attribute
расширенной файловой системы на путь path
на значение value
.
Атрибут attribute
должен быть bytes
или str
без встроенных NUL
, переданный прямо или косвенно через интерфейс PathLike. Если это строка, то она кодируется с помощью кодировки файловой системы.
Флаги могут быть os.XATTR_REPLACE
или XATTR_CREATE
.
os.XATTR_REPLACE
и атрибут не существует, то будет вызван EEXISTS
. os.XATTR_CREATE
и атрибут уже существует, атрибут не будет создан и будет вызван ENODATA
.Примечание. Ошибка в версиях ядра Linux ниже 2.6.39 приводила к игнорированию аргумента flags
в некоторых файловых системах.
Функция os.setxattr()
вызывает событие аудита os.setxattr
с аргументами path
, attribute
, value
, flags
.
flags
:os.XATTR_SIZE_MAX
:Максимальный размер значения расширенного атрибута может быть. В настоящее время это 64 КиБ в Linux.
os.XATTR_CREATE
:Это возможное значение для аргумента flags
в функции os.setxattr()
и означает, что операция должна создать атрибут.
os.XATTR_REPLACE
:Это возможное значение для аргумента flags
в функции os.setxattr()
и означает, что операция должна заменить существующий атрибут.