2013-02-14 2 views
3

Я пытаюсь установить атрибуты файла следующим образом:setxattr терпит неудачу с работы не поддерживается

  1. создать файл foo.txt с 0644 разрешениями
  2. , когда я пытаюсь setxattr для этого, как

    if (setxattr("foo.txt", "user.test", "test", 4, XATTR_CREATE) == -1) 
        perror(""); 
    

Я получаю ошибку как операция не поддерживается

Есть ли что-нибудь, что можно включить? Как это решить?

+2

Поддерживает ли ваша файловая система его? Это может помочь перезагрузка с опцией mount_ user_xattr. –

+0

Какую файловую систему вы используете? –

+1

Я использую файловую систему nfs –

ответ

5

От setxattr

ВОЗВРАТ СТОИМОСТИ

On success, zero is returned. On failure, -1 is returned and errno is set 
    appropriately. 
    ... 
    If extended attributes are not supported by the file system, or are disabled, 
    errno is set to ENOTSUP. 

Итак, либо файловая система не поддерживает дополнительные атрибуты (доб [234], CIFS, Btrfs сделать, например,), либо они отключены при сборке ядра или во время монтирования.

Для NFS нет отдельного переключателя для включения расширенных атрибутов в конфигурацию ядра. Из источника fs/nfs/dir.c, кажется, включен, когда вы включаете поддержку CONFIG_NFS_V3 или CONFIG_NFS_V4. Но NFS все еще зависит от базовой файловой системы. Таким образом, вы должны включить расширенные атрибуты на стороне сервера.

От man mount

Параметры монтирования для ext2
...
user_xattr | nouser_xattr
Поддержка "пользователь". расширенные атрибуты (или нет).

+0

Как включить расширенные атрибуты файловой системы nfs в ядре Linux? –

+1

@ Антон Коваленко Найдите 'xattr' в' fs/nfs */*. C'. –

+0

@Venkat См. Обновленный ответ. –

Смежные вопросы