Scroll to navigation

setxattr(2) System Calls Manual setxattr(2)

ИМЯ

setxattr, lsetxattr, fsetxattr - устанавливает расширенное значение атрибутов

БИБЛИОТЕКА

Стандартная библиотека языка C (libc, -lc)

СИНТАКСИС

#include <sys/xattr.h>
int setxattr(const char *path, const char *name,
              const void value[.size], size_t size, int flags);
int lsetxattr(const char *path, const char *name,
              const void value[.size], size_t size, int flags);
int fsetxattr(int fd, const char *name,
              const void value[.size], size_t size, int flags);

ОПИСАНИЕ

Расширенные атрибуты представляют собой пару имя:значение и связываются с записями inode (файлы, каталоги, символьные ссылки и т.п.). Они являются расширениями к обычным атрибутам, связанным со всеми записями inode в системе (например, данные stat(2)). Полное описание модели расширенных атрибутов можно найти в xattr(7).

Вызов setxattr() устанавливает значение value расширенного атрибута с именем, заданным в name и связанного с заданным path в файловой системе. В аргументе size задаётся размер (в байтах) value; допускается нулевой размер.

Вызов lsetxattr() идентичен setxattr(), за исключением случая работы с символьными ссылками; он устанавливает расширенный атрибут на ссылке, а не на том файле, на который она указывает.

Вызов fsetxattr() идентичен setxattr(), отличием является то, что расширенный атрибут устанавливается на открытом файле, на который указывает fd (возвращаемом open(2)), а не на указанном в path.

Имя расширенного атрибута представляет собой строку, заканчивающуюся null. Имя name включает префикс пространства имён; их может быть несколько, разрозненные пространства ассоциируются с разными inode. Значением value расширенного атрибута является произвольный кусок текстовых или двоичных данных определённой длины.

По умолчанию (т. е., значение flags равно), если расширенный атрибут отсутствует, то он создаётся, а если он существует, то заменяется его значение. Для изменения такой работы, в flags можно указать одно из следующих значений:

Выполнять только создание, если атрибут с таким именем существует — возвращать ошибку.
Выполнять только замену, если атрибут с таким именем не существует — возвращать ошибку.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

On success, zero is returned. On failure, -1 is returned and errno is set to indicate the error.

ОШИБКИ

Предел по дисковой квоте; не хватает пространства для сохранения расширенного атрибута.
Указан XATTR_CREATE, но атрибут уже существует.
Указан XATTR_REPLACE, но атрибут не существует.
Не хватает пространства для сохранения расширенного атрибута.
Неверный префикс пространства имён name.
Расширенные атрибуты не поддерживаются файловой системой или отключены.
Файл помечен как неизменяемый (immutable) или только для добавления (смотрите ioctl_iflags(2)).

Также могут возникать ошибки, описанные в stat(2).

Размер name или value превышает ограничение, задаваемое файловой системой.

ВЕРСИИ

Данные системные вызовы доступны начиная с Linux 2.4; поддержка в glibc появилась с glibc 2.3.

СТАНДАРТЫ

Данные системные вызовы есть только в Linux.

СМОТРИТЕ ТАКЖЕ

getfattr(1), setfattr(1), getxattr(2), listxattr(2), open(2), removexattr(2), stat(2), symlink(7), xattr(7)

ПЕРЕВОД

Русский перевод этой страницы руководства разработал(и) Alexander Golubev <fatzer2@gmail.com>, Azamat Hackimov <azamat.hackimov@gmail.com>, Hotellook, Nikita <zxcvbnm3230@mail.ru>, Spiros Georgaras <sng@hellug.gr>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков.

4 декабря 2022 г. Справочные страницы Linux 6.03