Gå til indhold
atlas

Filsystem

Den måde, et styresystem organiserer gemte data i filer og mapper på og holder styr på, hvem der må bruge hver enkelt.

Kladde - dette opslag er endnu ikke gennemgået.

Formelt

Den del af styresystemet, der ordner data på et lagermedie i navngivne filer i mapper og for hver fil registrerer oplysninger som ejer, størrelse, hvornår den sidst blev ændret, og hvem der må læse eller ændre den.

Forklaret enkelt

Som et arkivskab med mærkede skuffer og mapper, hvor hver mappe har en seddel om, hvem der ejer den, og hvem der må tage den ud.

I praksis

Kommunens fælles drev har en mappe til HR. Filsystemet lader HR-medarbejderne åbne den, mens en sagsbehandler, der klikker på den, får 'adgang nægtet'.

Hvorfor det betyder noget

De fleste af en organisations følsomme data ligger i filer, så filsystemets rettigheder er ofte den sidste barriere mellem de data og et databrud.

Teknisk uddybning

Et filsystem afbilder et navnerum af stier over på blokke på et lagermedie og vedligeholder metadata om dem. I Unix-inspirerede designs (ext4, XFS) er hver fil en inode med type, rettighedsbits, ejer (UID/GID), størrelse, tidsstempler, antal links og henvisninger til data (extents i ext4); en mappe er selv en fil, der knytter navne til inode-numre. Navnet er altså ikke en del af filen: flere hårde links kan pege på samme inode, og at "slette" en fil fjerner kun et navn, mens datablokkene først frigives, når både antallet af links og antallet af åbne fildeskriptorer er nul. NTFS gemmer tilsvarende oplysninger som attributter i poster i Master File Table, bl.a. en security descriptor med en ACL og eventuelle alternate data streams, som Windows bruger til Zone.Identifier-strømmen bag Mark of the Web.

Kerner udstiller en ensartet grænseflade via et virtuelt filsystemlag (VFS i Linux): open, read, write, fsync, rename osv. virker ens, uanset om lageret bagved er ext4, NFS, FUSE eller et pseudofilsystem som /proc, der præsenterer kernens datastrukturer som filer. Konsistens efter nedbrud er det centrale ingeniørproblem. Journalførende filsystemer skriver metadataændringer til en log, før de udføres; ext4's standardtilstand ordered journalfører kun metadata, men tvinger data ned på disken før de metadata, der henviser til dem. Copy-on-write-designs (ZFS, Btrfs, APFS, ReFS) overskriver aldrig aktive blokke og opdaterer atomart et træ af checksummede henvisninger, hvilket giver billige snapshots og mulighed for at opdage stille datakorruption. Applikationer skal stadig kalde fsync, på POSIX-systemer også på den omsluttende mappe efter rename, for at en opdatering er holdbar; springes det over, er det en klassisk årsag til datatab efter strømsvigt.

Rettigheder håndhæves af kernen ved open ud fra filsystemets metadata: klassiske rwx-bits for ejer, gruppe og andre plus setuid, setgid og sticky bit på Unix, POSIX-ACL'er og udvidede attributter på Linux og discretionary ACL'er med nedarvning på NTFS. Fordi tjekket sker ved open, beholder en proces, der allerede har en fildeskriptor, adgangen, selv om rettighederne ændres. Time-of-check to time-of-use-kapløb, symlinkangreb i mapper, alle kan skrive i, som /tmp, og path traversal i applikationer, der bygger filnavne ud fra brugerinput, er tilbagevendende sårbarhedsklasser.

Forensisk gemmer filsystemer mere, end brugerne tror: tidsstempler (MACB-sættet), journalposter, NTFS' ændringsjournal $UsnJrnl og uallokerede blokke kan afsløre aktivitet, efter filer er slettet, og angribere bruger timestomping til at ændre tidsstemplerne i $STANDARD_INFORMATION. Omvendt betyder TRIM og wear levelling på SSD'er både, at slettede data kan forsvinde hurtigt, og at overskrivning af en fil ikke pålideligt destruerer den, så sikker sletning opnås ved at kryptere volumenet og destruere nøglen. Filsystemet er adskilt fra blokenheden og volumenstyringen nedenunder og fra objektlagring som S3, der tilbyder flade nøgler og udskiftning af hele objekter i stedet for POSIX-semantik.

Relationer

Åbner for
Container-image
Forveksl ikke med
Database
Bruges sammen med
Rettighed

Kilder og videre læsning

Lærebøger

Hvor dataene kommer fra

Dette opslag er skrevet af en AI ud fra kilderne ovenfor og er endnu ikke gennemgået af et menneske. Brug det som udgangspunkt, og tjek alt vigtigt mod kilderne.

Se gennemgangskøenForeslå en rettelse på GitHubDette begreb som JSON

Test dig selv

Indlæser…

Atlas er i beta.