{"licence":{"name":"CC BY-SA 4.0","spdx":"CC-BY-SA-4.0","url":"https://creativecommons.org/licenses/by-sa/4.0/","attribution":"Atlas, a bilingual technical dictionary (https://cmaintz.github.io/tech-atlas/)"},"id":"cs/file-system","url":{"en":"https://cmaintz.github.io/tech-atlas/en/terms/cs/file-system/","da":"https://cmaintz.github.io/tech-atlas/da/terms/cs/file-system/"},"term":{"en":"File system","da":"Filsystem"},"aka":{"en":["filesystem"],"da":[]},"domain":["cs"],"cluster":"os","layer":"os","status":"current","era":1965,"summary":{"en":"The way an operating system organises stored data into files and folders and keeps track of who may use each one.","da":"Den måde, et styresystem organiserer gemte data i filer og mapper på og holder styr på, hvem der må bruge hver enkelt."},"body":{"formal":{"en":"The part of the operating system that arranges data on a storage device into named files inside folders, and records for each file details such as its owner, its size, when it last changed and who may read or change it.","da":"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."},"plain":{"en":"Like a filing cabinet with labelled drawers and folders, where each folder carries a note saying who owns it and who may take it out.","da":"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."},"inPractice":{"en":"A municipality's shared drive holds a folder for HR. The file system lets the HR staff open it, while a case officer who clicks on it gets 'access denied'.","da":"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'."},"whyItMatters":{"en":"Most of an organisation's sensitive data sits in files, so the file system's permissions are often the last barrier between that data and a data breach.","da":"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."}},"deepDive":{"en":"A file system maps a namespace of paths onto blocks of a storage device and maintains metadata about them. In Unix-style designs (ext4, XFS) each file is an inode holding type, mode bits, owner UID/GID, size, timestamps, link count and pointers to data (extents in ext4); a directory is itself a file that maps names to inode numbers. The name therefore is not part of the file: several hard links can point to the same inode, and \"deleting\" a file only unlinks a name, with the data blocks freed once the link count and the number of open file descriptors both reach zero. NTFS stores equivalent information as attributes in records of the Master File Table, including a security descriptor with an ACL and optional alternate data streams, which Windows uses for the Zone.Identifier stream behind Mark of the Web.\n\nKernels expose a uniform interface through a virtual file system layer (VFS in Linux): open, read, write, fsync, rename and so on work the same whether the backing store is ext4, NFS, FUSE or a pseudo file system like /proc, which presents kernel data structures as files. Crash consistency is the central engineering problem. Journaling file systems write metadata changes to a log before applying them; ext4's default ordered mode journals metadata only but forces data to disk before the metadata that references it. Copy-on-write designs (ZFS, Btrfs, APFS, ReFS) never overwrite live blocks and update a tree of checksummed pointers atomically, which enables cheap snapshots and detection of silent corruption. Applications still need fsync, and on POSIX systems an fsync on the containing directory after rename, to make an update durable; skipping this is a classic source of data loss after power failure.\n\nPermissions are enforced by the kernel at open time against the file system's metadata: classic owner/group/other rwx bits plus setuid, setgid and sticky bits on Unix, POSIX ACLs and extended attributes on Linux, and discretionary ACLs with inheritance on NTFS. Because the check happens at open, a process that already holds a file descriptor keeps access after permissions change. Time-of-check to time-of-use races, symlink attacks in world-writable directories such as /tmp, and path traversal in applications that build file names from user input are recurring vulnerability classes.\n\nForensically, file systems retain more than users expect: timestamps (the MACB set), journal entries, NTFS's $UsnJrnl change journal and unallocated blocks can reveal activity after files are deleted, and attackers use timestomping to alter the $STANDARD_INFORMATION timestamps. Conversely, on SSDs TRIM and wear levelling mean both that deleted data may vanish quickly and that overwriting a file does not reliably destroy it, so secure deletion is achieved by encrypting the volume and destroying the key. The file system is distinct from the block device and volume manager below it and from object storage such as S3, which offers flat keys and whole-object replacement instead of POSIX semantics.","da":"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.\n\nKerner 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.\n\nRettigheder 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.\n\nForensisk 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."},"edges":[{"type":"part-of","to":"cs/operating-system","confidence":"high","strength":"normal"},{"type":"used-with","to":"cs/permission","confidence":"high","strength":"normal"}],"depth":0,"sources":[{"title":"Operating Systems: Three Easy Pieces","url":"https://pages.cs.wisc.edu/~remzi/OSTEP/","tier":"textbook","publisher":"Arpaci-Dusseau"},{"title":"Modern Operating Systems","tier":"textbook","publisher":"Tanenbaum & Bos (Pearson)"}],"draft":true}