Deleting extended attribute set что это

Deleting extended attribute set что это

Расширенные атрибуты файлов — дополнительный набор атрибутов, поддерживаемый Windows в файловых системах NTFS, FAT16 и HPFS. Расширенные атрибуты (extended attributes, EA) поддерживаются начиная с Windows NT и во всех последующих операционных системах на ядре NT. Поддержка расширенных атрибутов была добавлена в Windows для совместимости с операционной системой OS/2, в которой они широко использовались. В Windows эти атрибуты почти не используются программным обеспечением, но, тем не менее, их поддержка не была убрана и присутствует даже в Windows 7.

Каждый расширенный атрибут имеет строку названия, максимальный размер которой 255 символов, и байт флагов атрибута. Максимальный размер данных расширенного атрибута — 64 килобайта, причём это ограничение распространяется не на один отдельный атрибут, а на все атрибуты целиком.

В NTFS расширенные атрибуты прицеплены к файлу в виде потока ::$EA. Увидеть этот поток у файла можно с помошью программы NTFS Stream Explorer. Она предназначена для работы с альтернативными файловыми потоками, но может отображать и наличие потока EA. На иллюстрации видно, что у файла test.dat нулевой длины есть поток расширенных атрибутов размером 23 байта.

Прочитать содержимое потока ::$EA напрямую нельзя. Это приведёт к выводу такого сообщения:

В FAT16 для расширенных атрибутов система создаёт в корне диска системный файл «EA DATA. SF», там и хранится их содержимое. А вот в FAT32 поддержка расширенных атрибутов отсутствует, при копировании файла на эту файловую систему EA теряются.

При копировании файла с расширенными атрибутами на раздел FAT32 информация EA молча теряется. Windows не выводит никаких сообщений о потере информации. Это отличает дополнительные атрибуты от схожих по концепции альтернативных файловых потоков, поддержка которых есть в NTFS. Например в Windows 7 при попытке скопировать с NTFS на FAT32 файл, содержащий в себе альтернативные потоки NTFS, выводится сообщение «Действительно скопировать файл без его свойств?». Но если копировать туда же файл с EA, никаких сообщений не будет.

Стандартных WinAPI функций специально для работы с расширенными атрибутами нет. Отсутствуют также стандартные утилиты Windows для работы с ними. Даже утилита fsutil, которая умеет делать много интересных операций над файлами, не поможет при работе с EA. Этим объясняется то, что данная технология почти никем не используется в Windows. Чтение расширенных атрибутов возможно через использование функции BackupRead (способ описан тут, но в примере описывается чтение потоков NTFS, а не EA), или через использование NT Native API (недокументированных функций библиотеки ntdll.dll).

Я написал консольное приложение EA.EXE, способное читать, писать, удалять расширенные атрибуты и выводить список EA. Программа использует функции из ntdll для работы с EA.

Имя расширенного атрибута состоит из ASCII-символов. Латинские буквы приводятся к верхнему регистру, регистр символов не различается при обращении к атрибуту. Набор символов имени файла не должен содержать следующие запрещённые символы: значения ASCII 0x00 — 0x1F, символы / : * ? " | , + = [ ] ;. Максимальная длина имени 255 символов.

В ntdll.dll содержатся две функции, с помощью которых реализуется доступ к расширенным атрибутам. Их прототипы:

Функция NtSetEaFile служит для записи информации в расширенные атрибуты, а также для удаления атрибутов. Функция NtQueryEaFile предназначена для чтения данных EA или перечисления расширенных атрибутов у файла. Эти функции работают со структурой FILE_FULL_EA_INFORMATION, имеющей следующий формат:

Поле NextEntryOffset содержит смещение следующей структуры в буфере данных. Поле нужно при использовании NtQueryEaFile, когда она возвращает в буфере сразу несколько атрибутов. Поле Flags содержит флаги атрибутов. По-умолчанию поле флагов имеет значение 0, допустимо также значение FILE_NEED_EA, равное 0x80, которое означает, что имеющий этот флаг атрибут важен для обработки данных файла.

Поля EaNameLength и EaValueLength это размеры имени атрибута и данных атрибута. EaName это указатель на начало имени атрибута. Сразу после имени атрибута начинаются данные. Общий размер структуры FILE_FULL_EA_INFORMATION не может превышать 64 кб. При наличии в буфере нескольких структур их общий размер также не может превышать этот размер.

Читайте также:  Как сохранить гифку из яндекс картинок

Определим в константе EA_BUF_LEN максимальный размер буфера EA, равный 0xFFFF. Тогда максимальный размер данных атрибута MAX_EA_DATA_LEN равен размеру буфера, от которого нужно отнять 8 (заголовок структуры) и ещё отнять 2 (минимально короткое имя атрибута, 1 буква + нулевой символ). Перед записью нужно убедиться, что записываемые данные не превышают этого значения.

Файл для записи EA данных нужно открыть с флагом FILE_FLAG_BACKUP_SEMANTICS. Далее следует сформировать структуру FILE_FULL_EA_INFORMATION, правильно указать в ней размеры имени и данных, выставить флаги и скопировать в структуру строку имени и данные атрибута по правильным смещениям.

Затем вызывается функция NtSetEaFile и анализируется её возвращаемое значение NTSTATUS. В результате ошибки попытки записи расширенных атрибутов функция может вернуть следующие коды ошибок:

Код ошибки STATUS_EAS_NOT_SUPPORTED может означать не только отсутствие поддержки расширенных атрибутов у файловой системы, но и невозможность использовать EA у конкретного файла. Если у файла есть reparse данные, то есть файл является точкой повторной обработки (например, симлинком), то у такого файла расширенные атрибуты не поддерживаются. В файловой системе NTFS файл не может одновременно являться и reparse point’ом, и содержать расширенные атрибуты EA, только что-то одно.

Для чтения расширенного атрибута следует получить EA-буфер полностью и найти в буфере ту структуру, которая содержит атрибут с искомым именем (EaName). Буфер читается с помощью функции NtQueryEaFile. Если параметр ReturnSingleEntry установлен в TRUE, функция с каждым вызовом возвращает только одну структуру, если FALSE — в буфер пишутся сразу все структуры, а переход между ними осуществляется через поле NextEntryOffset.

Данные читаются из буфера по смещению EaName + EaNameLength + 1. Параметр RestartScan перезапускает выдачу атрибутов сначала (если используется ReturnSingleEntry). Параметр EaList может содержать указатель на дополнительный список структур FILE_GET_EA_INFORMATION, содержащий список EA, которые нужно получить. Тем самым можно получить в буфере не все EA, а какой-то определённый набор. Параметр EaIndex позволяет обращаться к атрибуту по индексу.

В результате ошибки попытки чтения расширенных атрибутов, функция NtQueryEaFile может вернуть следующие коды ошибок:

Код функции для чтения расширенных атрибутов:

Удаление расширенного атрибута из файла реализуется через вызов NtSetEaFile, со структурой, в которой поле EaValueLength равно NULL, а EaName содержит только имя удаляемого атрибута.

Скачать консольную программу EA.EXE для работы с расширенными атрибутами. В архиве содержится программа и её исходный код на Си.

Кроме того, моя программа NTFS Stream Explorer, которая имеет графический интерфейс, теперь тоже поддерживает редактирование расширенных атрибутов файлов.

Extended file attributes are file system features that enable users to associate computer files with metadata not interpreted by the filesystem, whereas regular attributes have a purpose strictly defined by the filesystem (such as permissions or records of creation and modification times). Unlike forks, which can usually be as large as the maximum file size, extended attributes are usually limited in size to a value significantly smaller than the maximum file size. Typical uses include storing the author of a document, the character encoding of a plain-text document, or a checksum, cryptographic hash or digital certificate, and discretionary access control information.

In Unix-like systems, extended attributes are usually abbreviated as xattr. [1]

Contents

Implementations [ edit ]

AIX [ edit ]

In AIX, the JFS2 v2 filesystem supports extended attributes, which are accessible using the getea command. [2] The getea, [3] , setea, [4] listea, [5] statea, [6] and removeea [7] APIs support fetching, setting, listing, getting information about, and removing extended attributes.

OpenBSD [ edit ]

Support for extended file attributes was removed from the OpenBSD source code in 2005 due to a lack of interest in Access Control Lists [8]

FreeBSD [ edit ]

In FreeBSD 5.0 and later, the UFS1, UFS2, and ZFS filesystems support extended attributes, using the extattr_ [9] family of system calls. Any regular file may have a list of extended attributes. Each attribute consists of a name and the associated data. The name must be a null-terminated string, and exists in a namespace identified by a small-integer namespace identifier. Currently, two namespaces exist: user and system. The user namespace has no restrictions with regard to naming or contents. The system namespace is primarily used by the kernel for access control lists and mandatory access control.

Читайте также:  Мтс модем пишет сим карта не готова

Linux [ edit ]

In Linux, the ext2, ext3, ext4, JFS, Squashfs, Yaffs2, ReiserFS, Reiser4, XFS, Btrfs, OrangeFS, Lustre, OCFS2 1.6, ZFS, and F2FS [10] filesystems support extended attributes (abbreviated xattr) when enabled in the kernel configuration. Any regular file or directory may have extended attributes consisting of a name and associated data. The name must be a null-terminated string prefixed by a namespace identifier and a dot character. Currently, four namespaces exist: user, trusted, security and system. The user namespace has no restrictions with regard to naming or contents. The system namespace is primarily used by the kernel for access control lists. The security namespace is used by SELinux, for example.

Support for the extended attribute concept from a POSIX.1e draft that had been withdrawn in 1997 was added to Linux around 2002. [11] [12] As of 2016, they are not yet in widespread use by user-space Linux programs, but are used by Beagle, OpenStack Swift, Dropbox, KDE’s semantic metadata framework (Baloo), Chromium, Wget and cURL. A set of recommendations for using them is available at freedesktop.org. [13]

The Linux kernel allows extended attribute to have names of up to 255 bytes and values of up to 64KiB, [14] as do XFS and ReiserFS, but ext2/3/4 and btrfs impose much smaller limits, requiring all the attributes (names and values) of one file to fit in one "filesystem block" (usually 4 KiB).

Extended attributes can be accessed and modified using the attr , getfattr and setfattr commands from the attr package [15] on most distributions.

macOS [ edit ]

Mac OS X 10.4 and later support extended attributes by making use of the HFS+ filesystem Attributes file B*-tree feature which allows for named forks. Although the named forks in HFS+ support arbitrarily large amounts of data through extents, the OS support for extended attributes only supports inline attributes, limiting their size to that which can fit within a single B*-tree node. [ citation needed ] Any regular file may have a list of extended attributes. HFS+ supports an arbitrary number of named forks, and it is unknown if macOS imposes any limit on the number of extended attributes. Each attribute consists of a name and the associated data. The name is a null-terminated Unicode string.

The macOS APIs support listing, [16] getting, [17] setting, [18] and removing [19] extended attributes from files or directories. From the command line, these abilities are exposed through the xattr utility. [20]

Since macOS 10.5, files originating from the web are marked with com.apple.quarantine via extended file attributes. [21] In some older versions of macOS (such as Mac OS X 10.6), user space extended attributes were not preserved on save in common Cocoa applications (TextEdit, Preview etc.). [ citation needed ]

OS/2 [ edit ]

In OS/2 version 1.2 and later, the High Performance File System was designed with extended attributes in mind, but support for them was also retro-fitted on the FAT filesystem of DOS. For compatibility with other operating systems using a FAT partition, OS/2 attributes are stored inside a single file " EA DATA. SF " located in the root directory. This file is normally inaccessible when an operating system supporting extended attributes manages the disk, but can be freely manipulated under, for example, DOS. Files and directories having extended attributes use one or more clusters inside this file. The logical cluster number of the first used cluster is stored inside the owning file’s or directory’s directory entry. [22] These two bytes are used for other purposes on the FAT32 filesystem, and hence OS/2 extended attributes cannot be stored on this filesystem.

Читайте также:  Как обрезать часть в кореле

Parts of OS/2 version 2.0 and later such as the Workplace Shell uses several standardized extended attributes (also called EAs) for purposes like identifying the filetype, comments, computer icons and keywords about the file. Programs written in the interpreted language Rexx store an already parsed version of the code as an extended attribute, to allow faster execution.

Solaris [ edit ]

Solaris version 9 and later allows files to have "extended attributes", which are actually forks; the maximum size of an "extended attribute" is the same as the maximum size of a file, and they are read and written in the same fashion as files. Internally, they are actually stored and accessed like normal files, so their names cannot contain "/" characters [23] and their ownership and permissions can differ from those of the parent file.

Version 4 of the Network File System supports extended attributes in much the same way as Solaris.

Windows NT [ edit ]

On Windows NT, limited-length extended attributes are supported by FAT, [22] HPFS, and NTFS. This was implemented as part of the OS/2 subsystem. They are notably used by the NFS server of the Interix POSIX subsystem in order to implement Unix-like permissions. The Windows Subsystem for Linux added in the Windows 10 Anniversary Update uses them for similar purposes, storing the Linux file mode, owner, device ID (if applicable), and file times in the extended attributes. [24]

Additionally, NTFS can store arbitrary-length extended attributes in the form of alternate data streams (ADS), a type of resource fork. Plugins for the file manager Total Commander, like NTFS Descriptions and QuickSearch eXtended support filtering the file list by or searching for metadata contained in ADS Streams. [25] [26]

Сегодня, при запуске (после летающих огоньков), Windows неожиданно запустил CHKDSK. Оставил компьютер на пару минут, за это время CHKDSK выдал такое:

CHKDSK is verifying files (stage 1 of 3).
Deleting corrupt attribute record (128, "")
from file record segment 30218.
Deleting corrupt attribute record (128, "")
from file record segment 56152.
Deleted corrupt attribute list entry
with type code 128 in file 392968.
Deleting corrupt attribute record (128, "")
from file record segment 14655.
Deleting corrupt attribute record (128, "")
from file record segment 15386.

437248 file records processed. File verification completed.
Deleting orphan file record segment 14655.
Deleting orphan file record segment 15386.

183 large file records processed.
0 bad file records processed.
2 EA records processed.
265 reparse records processed.

Дальше пошел второй этап, там он удалил некоторые файлы *.tmp.
Интересный факт: компьютер работал уже включен довольно долго, решил перезагрузить после того, как перестали открываться некоторые файлы с исходниками. Notepad++ говорит что файл открыт в другой программе, блокнот — доступ запрещен.
Вопрос: хард скоро умрет? Бежать все бекапить? Вообще это ноутбук, и он еще на гарантии, есть ли смысл идти в гарантийный сервис? Они же не найдут ничего, скажут что сейчас все работает.

Ссылка на основную публикацию
Asus k56c установка ssd
Запись сделана для тех, кто собирается делать аналогичный апгрейд своего Asus N56VZ, но безболезненно и без танцев с бубнами. А...
Adblock detector