В Linux информация о файле или каталоге хранится в его inode. Мне было интересно, какова структура данных для информации о файле или каталоге в Windows 7?
В обеих операционных системах это зависит от того, какая файловая система используется.
Windows по умолчанию использует NTFS, у которой есть "списки атрибутов" в таблице основных файлов. Есть некоторая документация в Википедии, на NTFS.com и Linux NTFS.
Старая файловая система FAT32 (все еще часто используемая на съемных дисках) намного проще и хранит все в одной таблице размещения файлов.
Как получить информацию о файле или каталоге в Linux и в Windows 7, в терминале и окне командной строки?
В Linux используйте команду stat
.
В Windows PowerShell используйте System.Io.FileInfo
.
В Windows cmd.exe
вы должны использовать либо внешние инструменты, либо связываться с dir
.
Владелец файла или каталога всегда является его создателем? Сможет ли он измениться?
В Windows NT (включая XP, 2003, Vista, 7 и будущие версии) вновь созданные объекты 1 являются собственностью их создателя, если только кто-то другой не станет владельцем. (Администраторы могут сделать это, используя привилегию SeTakeOwnership
; пользователи, не являющиеся администраторами, могут стать владельцами, если ACL объекта позволяет это.)
В серверных выпусках Windows NT администраторы могут назначать владение объектом другому пользователю. Потребительские выпуски (такие как Windows XP или 7) разрешают брать на себя ответственность только за себя.
В Windows 2000 и более ранних версиях, если создатель является членом группы «Администраторы», созданные им объекты будут принадлежать администраторам, а не пользователю. Это изменилось в Windows XP, где пользователь всегда будет владеть объектами, которые он создает.
Файловые системы FAT не поддерживают владение файлами.
Все [править] Unix системы используют создатель файла в качестве его владельца.
root
может использовать chown
для смены владельца.
Существует ли метка времени создания файла в Linux и в Windows 7? Как получить его?
В Windows и FAT32, и NTFS хранят метку времени создания. В cmd.exe
, dir /tc
покажет это.
UFS2 во FreeBSD хранит время создания как st_birthtime
.
В Linux время создания поддерживается некоторыми файловыми системами (ntfs, возможно, ext4), но пока не самой ОС. (Команда stat
уже показывает время рождения, если поддерживается системным вызовом с тем же именем.)
Примечание. В Windows и FreeBSD время создания легко изменить.
1 Это относится ко многим другим типам объектов Windows NT, не ограничиваясь файлами. Примеры: именованные каналы, ключи реестра, процессы, службы, рабочие столы, устройства, мьютексы ...