Informazioni su un file o una directory

  1. In Linux, le informazioni relative a un file o una directory vengono memorizzate nel suo inode. Mi stavo chiedendo che cosa sia la struttura dei dati per informazioni su un file o una directory in Windows 7?
  2. Come get le informazioni su un file o una directory in Linux e in Windows 7, nella window di terminal e della row di command?
  3. Il proprietario di un file o una directory è sempre il suo creatore? Sarà in grado di cambiare?
  4. C'è un timestamp di creazione per un file in Linux e in Windows 7? Come ottenerlo?

Grazie e saluti!

In Linux, le informazioni relative a un file o una directory vengono memorizzate nel suo inode. Mi stavo chiedendo che cosa sia la struttura dei dati per informazioni su un file o una directory in Windows 7?

In entrambi i sisthemes operativi, ciò dipende da quale sistema di file è in uso.

Windows utilizza per impostazione predefinita NTFS , che contiene "elenchi di attributi" nella sua tabella di file master. C'è qualche documentazione in Wikipedia , a NTFS.com e Linux NTFS .

Il vecchio file system FAT32 (ancora usato spesso in unità rimovibili) è molto più semplice e mantiene tutto in una singola tabella di allocazione dei file .

Come get le informazioni su un file o una directory in Linux e in Windows 7, nella window di terminal e della row di command?

In Linux, utilizzare il command stat .

In Windows PowerShell, utilizzare System.Io.FileInfo .

In cmd.exe Windows, è necessario utilizzare strumenti esterni o disordini con dir .

Il proprietario di un file o una directory è sempre il suo creatore? Sarà in grado di cambiare?

  • Su Windows NT (incluse le versioni XP, 2003, Vista, 7 e future) , gli oggetti appena creati 1 sono di properties; del loro creatore, a less che qualcun altro prenda la properties;. (Gli amministratori possono farlo utilizzando il privilegio di SeTakeOwnership ; non amministratori possono assumere la properties; se l'ACL dell'object lo consente.)

    • Nelle edizioni server di Windows NT, gli amministratori possono assegnare la properties; di un object a un altro utente. Le edizioni dei consumatori (come Windows XP o 7) consentono solo di prendere la properties; a te stesso.

    • In Windows 2000 e nelle versioni precedenti, se il creatore è membro del gruppo Administrators, gli oggetti creati saranno properties; di amministratori, non l'utente. Questo è cambiato in Windows XP , where l'utente sarà sempre proprietario degli oggetti che crea.

    • I file system FAT non supportno la properties; del file.

  • Tutto [citazione necessaria] I sisthemes Unix usano il creatore del file come proprietario.

    • root può utilizzare chown per modificare il proprietario.

C'è un timestamp di creazione per un file in Linux e in Windows 7? Come ottenerlo?

  • In Windows, sia FAT32 che NTFS memorizzano un timestamp di creazione. In cmd.exe , dir /tc lo mostrerà.

  • UFS2 di FreeBSD memorizza il tempo di creazione come st_birthtime .

  • Su Linux, i tempi di creazione sono supportti da alcuni filesystem (ntfs, probabilmente ext4), ma non ancora dall'OS stesso . (Il command stat visualizza già i tempi di nascita, se supportti dal syscall dello stesso nome.)

Nota: su Windows e FreeBSD, è facile modificare il tempo di creazione.


1 Ciò vale per molti altri tipi di oggetti di Windows NT, non limitati ai file. Esempi: tubi denominati, chiavi del Registro di sistema, processi, servizi, desktop, dispositivi, mutex …

Non so di Windows 7, ma cercherò di rispondere alle parti Linux.

  1. È vero, ad exception del nome del file.
  2. L'utility stat(1) può get tutte le informazioni su un inodo. Syscall accompagnatore, stat(2) può essere utilizzato nei programmi.
  3. No, il proprietario di un file o una directory può essere modificato in qualsiasi momento, vedere chown(8) . Vedi anche bit sticky .
  4. No, in Linux il timestamp di creazione non viene memorizzato. Vedere la stat(2) syscall, in particolare la definizione di struct stat . Sono disponibili gli ultimi tempi di accesso ( st_atimespec ), il tempo di modifica ( st_mtimespec ) e il tempo di modifica dei dati inode ( st_ctimespec ).