Filsäkerhet i Windows NT (NTFS) Jens Granlund 19.10.2000 Introduktion Detta dokument försöker att beskriva säkerhetsmekanismerna i Windows NTs filsystem NTFS på ett lättbegripligt sätt. Access Control Listor och Access Control Entryn Varje objekt (Katalog eller fil) i NTFS är förenat med en Access Control Lista (ACL). I exemplet nedan ser vi Access Control Listan för objektet (katalogen) \\homeserver\home\jenstest\projekta. Varje element i en sådan lista kallas för Access Control Entry (ACE). I exemplet ovan finns fyra ACEn. Ett ACE bestämmer vilka rättigheter en viss användare eller en viss grupp av användare har till objektet. I ACLn ovan finns tre grupper och en användare (jenstest) angivna. En användares rätt till ett objekt bestäms av summan av alla de ACEs som är relaterade till användaren. Om användaren jenstest tillhör gruppen pfstuderande har denne Add & Read + Full Control = Full Control. Ett undantag är det att något ACE som gäller för användaren anger No Access, då har användaren inga rättigheter till objektet oberoende vad andra ACEn anger. No Access har prioritet över andra rättigheter. Ägare Varje objekt har en ägare. Den som skapar ett objekt blir automatiskt objektets ägare. Äganderätten kan i princip inte ges till en annan användare, men man kan ge rättigheten Take Ownership åt en annan användare som då kan överta äganderätten till objektet om han/hon så önskar. En administratör kan alltid ta äganderätten till ett objekt och därefter ge sig själv vilka rättigheter som helst till objektet
Filrättigheter Till filer ger man vanligen rättigheten No Access (None), Read (RX), Change (RWXD) eller Full Control (All). Genom att välja special file access kan man dock välja vilka kombinationer av grundrättigheterna (RWXDOP). I figuren nedan ser vi de grundrättigheter som kan anges.
Katalogrättigheter För kataloger kan man ange samma rättigheter som för filer, betydelsen är dock lite annan. R innebär att man har rätt att se vilka objekt som finns i katalogen (inte nödvändigtvis se innehållet i dessa, endast namn mm.). W betyder att man har rätt att sätta till objekt i katalogen. X betyder att man har rätt att byta katalog till denna (t.ex. med CD kommandot). D betyder att man har rätt att stryka katalogen, INTE nödvändigtvis att stryka objekt i katalogen. Förutom att man kan ange katalogrättigheter till en katalog kan man också ange filrättigheter för en katalog. Filrättigheterna är ACEn som automatiskt kommer att tilldelas nya objekt i katalogen. Objekt som skapas i katalogen ärver de filrättigheter som katalogen har (ej katalogrättigheterna). Om en användare har rättigheterna (RX)(RXWD) till en katalog betyder det att pga. Katalogrättigheterna RX kan användaren läsa katalogen och byta till denna katalog. Pga. av att användaren har filrättigheterna (RXWD) till katalogen kommer alla filer som skapas i katalogen att får ett ACE som ger användaren (RXWD) rättigheter till filen. Detta ACE kan naturligtvis senare ändras. I figuren nedan har vi en lista över katalogrättigheterna och deras betydelse.
Verktyg för att modifiera ACLs Man kan göra enkla modifikationer av ACLs via explorern. Genom att markera ett objekt, högerklicka, välja properties, välja security, permissions får man fram ett fönser som ser ut som i bilden nedan. Med Add och Remove kan man sätta till respektiva ta bort ACEn ur Access Control listan. Genom checkboxen Replace Permissions on Existing Files kan man ersätta Access Control listorna för alla filer i katalogen och genom ceckboxen Replace Permissions on Subdirectories kan man ersätta alla Access Control listor i hela katalogträdet från den markerade katalogen och neråt. Observera att listorna ersätts med den lista som visas i fönstret alla filers ACLs blir identiska i hela katalogen eller hela trädet. Det händer ofta att användare öppnar denna dialogruta och sättter till ett Access Control Entry typ pfstuderande i exemplet ovan och kör detta rekursivt på hela katalogen och tror at detta innebär att motsvarande ACE för pfstuderande sätts till i varje ACL i stukturen, så är inte fallet utan varje ACL ersätts med den angívna ACLn. Detta kan vara ett stort problem till exempel om man har en stor web katalog med många underkataloger och varje underkatalog administreras av olika personer med olika rättigheter angivna med ACLs. Om man då ersätter alla ACLs rekursivt från en högre nivå, går denna information (de olika ACLna) förlorad! Det korrekta sättet att utföra modifikationer av skilda ACEn i en större hierarki med olika ACLs är att använda kommandot CACLS med växeln /E (och eventuellt /T om man vill köra rekursivt på hela trädet). I Windows NT Resource Kit finns en mera utvecklad version av CACLS som heter XCACLS. Det finns också verktyg för att spara ACLs som filer och att återskapa ACLs från en sådan sparad fil, men dessa verktyg beskrivs inte i denns guide.
Syntaxen för CACLS är som följer: Displays or modifies access control lists (ACLs) of files CACLS filename [/T] [/E] [/C] [/G user:perm] [/R user [...]] [/P user:perm [...]] [/D user [...]] filename Displays ACLs. /T Changes ACLs of specified files in the current directory and all subdirectories. /E Edit ACL instead of replacing it. /C Continue on access denied errors. /G user:perm Grant specified user access rights. Perm can be: R Read C Change (write) F Full control /R user Revoke specified user's access rights (only valid with /E). /P user:perm Replace specified user's access rights. Perm can be: N None R Read C Change (write) F Full control /D user Deny specified user access. Wildcards can be used to specify more that one file in a command. You can specify more than one user in a command.