Сообщить об ошибке.

Манипулирование списком контроля доступа ACL в Linux

Установка, чтение и изменение расширенных атрибутов OS Linux

Примером использования расширенных атрибутов является реализация списков контроля доступа POSIX ACL.

Чтобы определить, включена ли в вашей файловой системе поддержка xattr, проверьте файл параметров соответствующего устройства:

$ cat /proc/fs/ext4/sda1/options | grep xattr
user_xattr

Все перечисленные здесь функции доступны только в Linux.

Аргумент во всех функциях 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() и означает, что операция должна заменить существующий атрибут.