Sdílet prostřednictvím


Zabezpečení souborů a přístupová práva

Vzhledem k tomu, že soubory jsou zabezpečitelné objekty, je přístup k nim regulovaný modelem řízení přístupu, který řídí přístup ke všem ostatním zabezpečitelným objektům ve Windows. Podrobné vysvětlení tohoto modelu najdete v tématu řízení přístupu.

Při volání CreateFile, CreateDirectoryExnebo CreateDirectoryEx můžete zadat popisovač zabezpečení pro soubor nebo adresář. Pokud zadáte null pro parametr lpSecurityAttributes, soubor nebo adresář získá výchozí popisovač zabezpečení. Seznamy řízení přístupu (ACL) ve výchozím popisovači zabezpečení pro soubor nebo adresář se dědí z nadřazeného adresáře. Všimněte si, že výchozí popisovač zabezpečení je přiřazen pouze v případě, že je soubor nebo adresář nově vytvořen, a ne při přejmenování nebo přesunutí.

Chcete-li načíst popisovač zabezpečení souboru nebo objektu adresáře, zavolejte GetNamedSecurityInfo nebo GetSecurityInfo funkce. Chcete-li změnit popisovač zabezpečení objektu souboru nebo adresáře, zavolejte SetNamedSecurityInfo nebo SetSecurityInfo funkce.

Platná přístupová práva pro soubory a adresáře zahrnují DELETE, READ_CONTROL, WRITE_DAC, WRITE_OWNERa SYNCHRONIZOVATstandardní přístupová práva. Tabulka v Konstanty přístupových práv k souborům obsahuje přístupová práva specifická pro soubory a adresáře.

I když je synchronizační přístupové právo definováno v seznamu standardních přístupových práv jako právo určit popisovač souboru v některé z funkcí čekání, měli byste při použití asynchronních vstupně-výstupních operací počkat na obslužné rutině události obsažené v správně nakonfigurované překrývající se strukturu, a ne použít popisovač souboru s synchronizovat přístupová práva pro synchronizaci.

Tady jsou obecná přístupová práva pro soubory a adresáře.

Přístupová práva Popis
FILE_GENERIC_EXECUTE
FILE_EXECUTE
FILE_READ_ATTRIBUTES
STANDARD_RIGHTS_EXECUTE
SYNCHRONIZOVAT
FILE_GENERIC_READ
FILE_READ_ATTRIBUTES
FILE_READ_DATA
FILE_READ_EA
STANDARD_RIGHTS_READ
SYNCHRONIZOVAT
FILE_GENERIC_WRITE
FILE_APPEND_DATA
FILE_WRITE_ATTRIBUTES
FILE_WRITE_DATA
FILE_WRITE_EA
STANDARD_RIGHTS_WRITE
SYNCHRONIZOVAT

 

Systém Windows porovná požadovaná přístupová práva a informace v přístupovém tokenu vlákna s informacemi v popisovači zabezpečení objektu souboru nebo adresáře. Pokud porovnání nezakazuje udělení všech požadovaných přístupových práv, vrátí se popisovač objektu do vlákna a přístupová práva jsou udělena. Další informace o tomto procesu naleznete v tématu Interakce mezi vlákny a zabezpečitelné objekty.

Ve výchozím nastavení se autorizace pro přístup k souboru nebo adresáři řídí výhradně seznamy ACL v popisovači zabezpečení přidruženém k danému souboru nebo adresáři. Konkrétně popisovač zabezpečení nadřazeného adresáře se nepoužívá k řízení přístupu k žádnému podřízeného souboru nebo adresáři. Přístupovéprávo FILE_TRAVERSE lze vynutit odebráním oprávnění BYPASS_TRAVERSE_CHECKING uživatelům. Obecně se to nedoporučuje, protože mnoho programů správně nezpracuje chyby procházení adresářů. Primárním použitím pro přístupové právo FILE_TRAVERSE na adresářích je umožnit soulad s určitými standardy IEEE a ISO POSIX, pokud je požadavkem interoperabilita se systémy Unix.

Model zabezpečení systému Windows poskytuje způsob, jak podřízený adresář dědit nebo zabránit v dědění jednoho nebo více ACL v popisovači zabezpečení nadřazeného adresáře. Každá funkce ACE obsahuje informace, které určují, jak lze dědit, a zda bude mít vliv na zděděný objekt adresáře. Například některé zděděné ACL řídí přístup k zděděného objektu adresáře a ty se nazývají efektivní acEs. Všechny ostatní acE se nazývají jen pro dědění .

Model zabezpečení systému Windows také vynucuje automatickou dědičnost ACL na podřízené objekty podle pravidel dědičnosti ACE. Tato automatická dědičnost spolu s informacemi o dědičnosti v jednotlivých ACE určuje, jak jsou omezení zabezpečení předána v hierarchii adresářů.

Všimněte si, že ACE s odepřeným přístupem nelze použít k odepření pouze GENERIC_READ nebo pouze GENERIC_WRITE přístup k souboru. Důvodem je to, že u objektů souborů jsou obecná mapování pro GENERIC_READ nebo GENERIC_WRITE obsahovat přístupové právo SYNCHRONIZOVAT. Pokud ACE odepře GENERIC_WRITE přístup k správci a správce požádá o přístup GENERIC_READ, žádost selže, protože požadavek implicitně zahrnuje SYNCHRONIZOVAT přístup, který je implicitně odepřen ACE a naopak. Místo použití přístupových práv explicitně povolte přístupová práva pomocí přístupových přístupových přístupů.

Dalším způsobem správy přístupu k objektům úložiště je šifrování. Implementace šifrování systému souborů ve Windows je systém souborů EFS nebo Encrypted File System. Systém SOUBORŮ EFS šifruje jenom soubory, nikoli adresáře. Výhodou šifrování je, že poskytuje dodatečnou ochranu souborů, které se používají na médiu, a ne prostřednictvím systému souborů a standardní architektury řízení přístupu systému Windows. Další informace o šifrování souborů naleznete v tématu Šifrování souborů.

Ve většině případů je možnost číst a zapisovat nastavení zabezpečení souboru nebo objektu adresáře omezena na procesy režimu jádra. Je zřejmé, že nechcete, aby žádný uživatelský proces mohl měnit vlastnictví nebo omezení přístupu u vašeho soukromého souboru nebo adresáře. Zálohovací aplikace by ale nemohla dokončit svou úlohu zálohování souboru, pokud omezení přístupu, která jste zadali do souboru nebo adresáře, neumožňuje čtení procesu uživatelského režimu aplikace. Zálohovací aplikace musí mít možnost přepsat nastavení zabezpečení objektů souborů a adresářů, aby se zajistilo úplné zálohování. Podobně platí, že pokud se záložní aplikace pokusí zapsat záložní kopii souboru přes kopii rezidentního disku a explicitně odepřete oprávnění k zápisu do procesu zálohovací aplikace, operace obnovení se nedokončí. V takovém případě musí být zálohovací aplikace schopná přepsat nastavení řízení přístupu souboru.

Oprávnění k přístupu SE_BACKUP_NAME a SE_RESTORE_NAME byla vytvořena speciálně, aby bylo možné zálohovat aplikace. Pokud jsou tato oprávnění udělena a povolena v přístupovém tokenu procesu zálohované aplikace, může volat CreateFile otevřít soubor nebo adresář pro zálohování a zadat standardní READ_CONTROL přístup práva jako hodnotu parametru dwDesiredAccess. K identifikaci volajícího procesu jako procesu zálohování však musí volání CreateFile obsahovat příznak FILE_FLAG_BACKUP_SEMANTICS do parametru dwFlagsAndAttributes. Úplná syntaxe volání funkce je následující:

HANDLE hFile = CreateFile( fileName,                   // lpFileName
                           READ_CONTROL,               // dwDesiredAccess
                           0,                          // dwShareMode
                           NULL,                       // lpSecurityAttributes
                           OPEN_EXISTING,              // dwCreationDisposition
                           FILE_FLAG_BACKUP_SEMANTICS, // dwFlagsAndAttributes
                           NULL );                     // hTemplateFile

To umožní procesu zálohování aplikace otevřít soubor a přepsat standardní kontrolu zabezpečení. K obnovení souboru by zálohovací aplikace použila následující CreateFile syntaxi volání při otevření souboru, který se má zapsat.

HANDLE hFile = CreateFile( fileName,                   // lpFileName
                           WRITE_OWNER | WRITE_DAC,    // dwDesiredAccess
                           0,                          // dwShareMode
                           NULL,                       // lpSecurityAttributes
                           CREATE_ALWAYS,              // dwCreationDisposition
                           FILE_FLAG_BACKUP_SEMANTICS, // dwFlagsAndAttributes
                           NULL );                     // hTemplateFile

Existují situace, kdy záložní aplikace musí mít možnost změnit nastavení řízení přístupu souboru nebo adresáře. Příkladem je, když se nastavení řízení přístupu kopie souboru nebo adresáře rezidenta disku liší od záložní kopie. K tomu může dojít v případě, že se tato nastavení po zálohování souboru nebo adresáře změnila nebo byla poškozena.

Příznak FILE_FLAG_BACKUP_SEMANTICS zadaný ve volání CreateFile poskytuje procesu zálohování oprávnění ke čtení nastavení řízení přístupu souboru nebo adresáře. S tímto oprávněním může proces zálohovací aplikace volat GetKernelObjectSecurity a SetKernelObjectSecurity číst a resetovat nastavení řízení přístupu.

Pokud aplikace zálohování musí mít přístup k nastavení řízení přístupu na úrovni systému, musí být příznak ACCESS_SYSTEM_SECURITY zadán v dwDesiredAccess hodnotu parametru předanou CreateFile.

Aplikace zálohování volají BackupRead ke čtení souborů a adresářů zadaných pro operaci obnovení a backupWrite k jejich zápisu.

standardních přístupových práv