Вы можете установить расширенные атрибуты файловой системы (где поддерживается, то есть с ext4 при монтировании с параметром user_xattr
):
#include <sys/types.h>
#include <attr/xattr.h>
int main (void) {
setxattr("test", "user.fileguid", "someuniqueguid", 15, 0);
}
и прочитайте его обратно
char uuid[100];
int len = getxattr("test", "user.fileguid", uuid, sizeof(uuid), 0);
Если этот атрибут должен изменяться только привилегированным процессом, вы можете использовать пространство имен security
вместо user
(т.е. имя-атрибута security.fileguid
). В этом случае сам владелец файла не может сам изменять атрибуты. Если вы не используете пространство имен user
, опция монтирования user_xattr
даже не нужна.
Однако эти атрибуты не устанавливаются сразу после создания файла. Но при первом обращении к файлу с помощью инструмента должно быть достаточно установить случайную направляющую (т. Е. Когда еще не задана направляющая).
Эти атрибуты файла сохраняются вместе с индексом, поэтому переименование файла или (жесткая) привязка к нему сохранят атрибуты. Однако удалить и создать его заново не удастся.