Aracılığıyla paylaş


Dosya Güvenliği ve Erişim Hakları

Dosyalar güvenli hale getirilebilir nesnelerolduğundan, bunlara erişim, Windows'taki diğer tüm güvenli hale getirilebilir nesnelere erişimi yöneten erişim denetimi modeli tarafından düzenlenir. Bu modelin ayrıntılı açıklaması için bkz. erişim denetimi .

CreateFile, CreateDirectoryveya CreateDirectoryExişlevinibir dosya veya dizin için güvenlik tanımlayıcısı belirtebilirsiniz. lpSecurityAttributes parametresi için NULL belirtirseniz, dosya veya dizin varsayılan bir güvenlik tanımlayıcısı alır. Bir dosya veya dizin için varsayılan güvenlik tanımlayıcısında yer alan erişim denetim listeleri (ACL), üst dizininden devralınır. Varsayılan güvenlik tanımlayıcısı yalnızca bir dosya veya dizin yeni oluşturulduğunda atanır, yeniden adlandırıldığında veya taşındığında atanmamalıdır.

Bir dosya veya dizin nesnesinin güvenlik tanımlayıcısını almak için GetNamedSecurityInfoveya GetSecurityInfoişleviniçağırın. Bir dosya veya dizin nesnesinin güvenlik tanımlayıcısını değiştirmek için SetNamedSecurityInfoveya SetSecurityInfo işleviniçağırın.

Dosyalar ve dizinler için geçerli erişim hakları DELETE, READ_CONTROL, WRITE_DAC, WRITE_OWNERve SYNCHRONIZEstandart erişim haklarıiçerir. Dosya Erişim Hakları Sabitleri tablosunda dosyalara ve dizinlere özgü erişim hakları listelenir.

SYNCHRONIZE erişim hakkı, bekleme işlevlerinden birinde dosya tanıtıcısı belirtme hakkı olarak standart erişim hakları listesinde tanımlanmış olsa da, zaman uyumsuz dosya G/Ç işlemlerini kullanırken eşitleme için EŞITLEME erişim hakkıyla dosya tanıtıcısını kullanmak yerine düzgün yapılandırılmış ÇAKıŞMALI yapısında yer alan olay tanıtıcısını beklemeniz gerekir.

Dosyalar ve dizinler için genel erişim hakları aşağıdadır.

Erişim hakkı Açıklama
FILE_GENERIC_EXECUTE
FILE_EXECUTE
FILE_READ_ATTRIBUTES
STANDARD_RIGHTS_EXECUTE
EŞITLEME
FILE_GENERIC_READ
FILE_READ_ATTRIBUTES
FILE_READ_DATA
FILE_READ_EA
STANDARD_RIGHTS_READ
EŞITLEME
FILE_GENERIC_WRITE
FILE_APPEND_DATA
FILE_WRITE_ATTRIBUTES
FILE_WRITE_DATA
FILE_WRITE_EA
STANDARD_RIGHTS_WRITE
EŞITLEME

 

Windows, istenen erişim haklarını ve iş parçacığının erişim belirtecindeki bilgileri dosya veya dizin nesnesinin güvenlik tanımlayıcısı içindeki bilgilerle karşılaştırır. Karşılaştırma, istenen tüm erişim haklarının verilmesini yasaklamıyorsa, nesnenin tanıtıcısı iş parçacığına döndürülür ve erişim hakları verilir. Bu işlem hakkında daha fazla bilgi için bkz. İş Parçacıkları ve Güvenliği Sağlanabilir Nesneler arasındaki Etkileşim.

Varsayılan olarak, bir dosya veya dizine erişim yetkilendirmesi, söz konusu dosya veya dizinle ilişkilendirilmiş güvenlik tanımlayıcısında yer alan ACL'ler tarafından kesinlikle denetlenmektedir. Özellikle, bir üst dizinin güvenlik tanımlayıcısı herhangi bir alt dosyaya veya dizine erişimi denetlemek için kullanılmaz. FILE_TRAVERSEerişim hakkı, kullanıcılardan BYPASS_TRAVERSE_CHECKINGayrıcalık kaldırılarak zorunlu kılınabilir. Birçok program dizin geçişi hatalarını doğru şekilde işlemediğinden, bu genel durumda önerilmez. Doğrudan dizinlerde FILE_TRAVERSE erişimi için birincil kullanım, Unix sistemleriyle birlikte çalışabilirlik bir gereksinim olduğunda belirli IEEE ve ISO POSIX standartlarına uyumluluğu sağlamaktır.

Windows güvenlik modeli, bir alt dizinin üst dizinin güvenlik tanımlayıcısında bir veya daha fazla ACL'yi devralması veya devralmasının engellenmesi için bir yol sağlar. Her ACE, nasıl devralınabileceğini ve devralan dizin nesnesi üzerinde bir etkisi olup olmayacağını belirleyen bilgiler içerir. Örneğin, devralınan bazı ACL'ler devralınan dizin nesnesine erişimi denetler ve bunlara etkin ACL'lerdenir. Diğer tüm ACL'ler yalnızca devralan ACL'lerolarak adlandırılır.

Windows güvenlik modeli, ACE devralma kurallarına göre ACL'lerin alt nesnelere otomatik devralmasını da zorunlu kılar. Bu otomatik devralma, her ACE'deki devralma bilgileriyle birlikte, güvenlik kısıtlamalarının dizin hiyerarşisine nasıl geçirileceğini belirler.

Yalnızca GENERIC_READ veya yalnızca dosyaya erişimi GENERIC_WRITE için erişim reddedilen ACE'yi kullanamayacağınızı unutmayın. Bunun nedeni, dosya nesneleri için hem GENERIC_READ hem de GENERIC_WRITE genel eşlemelerinin SYNCHRONIZE erişim hakkını içermesidir. ACE, bir güvene GENERIC_WRITE erişimi reddederse ve güvenen erişim GENERIC_READ istekte bulunursa istek, ACE tarafından örtük olarak reddedilen SYNCHRONIZE erişimini örtük olarak içerdiğinden başarısız olur ve tam tersi de geçerlidir. Erişim reddedilen ACL'leri kullanmak yerine erişim izni verilen ACL'leri kullanarak izin verilen erişim haklarına açıkça izin verin.

Depolama nesnelerine erişimi yönetmenin bir diğer aracı da şifrelemedir. Windows'ta dosya sistemi şifrelemesinin uygulanması Şifrelenmiş Dosya Sistemi veya EFS'dir. EFS, dizinleri değil yalnızca dosyaları şifreler. Şifrelemenin avantajı, dosya sistemi ve standart Windows erişim denetimi mimarisi aracılığıyla değil, medyada uygulanan dosyalara ek koruma sağlamasıdır. Dosya şifreleme hakkında daha fazla bilgi için bkz. dosya şifreleme .

Çoğu durumda, bir dosya veya dizin nesnesinin güvenlik ayarlarını okuma ve yazma özelliği çekirdek modu işlemleriyle sınırlıdır. Açıkçası, herhangi bir kullanıcı işleminin özel dosyanızda veya dizininizde sahiplik veya erişim kısıtlamasını değiştirebilmesini istemezsiniz. Ancak, dosyanıza veya dizininize eklediğiniz erişim kısıtlamaları uygulamanın kullanıcı modu işleminin okumasına izin vermiyorsa, yedekleme uygulaması dosyanızı yedekleme işini tamamlayamaz. Yedekleme uygulamalarının tam yedekleme sağlamak için dosya ve dizin nesnelerinin güvenlik ayarlarını geçersiz kılabilmesi gerekir. Benzer şekilde, bir yedekleme uygulaması diskte yerleşik kopyanın üzerine dosyanızın yedek kopyasını yazmayı denerse ve yedekleme uygulaması işlemine yazma ayrıcalıklarını açıkça reddederseniz, geri yükleme işlemi tamamlanamaz. Bu durumda, yedekleme uygulamasının dosyanızın erişim denetimi ayarlarını geçersiz kılabilmesi gerekir.

SE_BACKUP_NAME ve SE_RESTORE_NAME erişim ayrıcalıkları, uygulamaları yedeklemek için bu özelliği sağlamak için özel olarak oluşturulmuştur. Yedekleme uygulaması işleminin erişim belirtecinde bu ayrıcalıklar verildiyse ve etkinleştirildiyse, dosyanızı veya dizininizi yedekleme için açmak için CreateFile çağırabilir ve standart READ_CONTROL erişim hakkını dwDesiredAccess parametresinin değeri olarak belirtebilir. Ancak, çağırma işlemini yedekleme işlemi olarak tanımlamak için CreateFile çağrısının dwFlagsAndAttributes parametresinde FILE_FLAG_BACKUP_SEMANTICS bayrağını içermesi gerekir. İşlev çağrısının tam söz dizimi aşağıdaki gibidir:

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

Bu, yedekleme uygulaması işleminin dosyanızı açmasına ve standart güvenlik denetimini geçersiz kılmasını sağlar. Dosyanızı geri yüklemek için, yedekleme uygulaması yazılacak dosyanızı açarken aşağıdaki CreateFile çağrısı söz dizimini kullanır.

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

Bir yedekleme uygulamasının bir dosya veya dizinin erişim denetimi ayarlarını değiştirebilmesi gereken durumlar vardır. Bir dosya veya dizinin diskte yerleşik kopyasının erişim denetimi ayarlarının yedek kopyadan farklı olması buna bir örnektir. Dosya veya dizin yedeklendikten sonra bu ayarlar değiştirildiğinde veya bozulmuşsa bu durum ortaya çıkar.

CreateFile çağrısında belirtilen FILE_FLAG_BACKUP_SEMANTICS bayrağı, yedekleme uygulamasına dosya veya dizinin erişim denetimi ayarlarını okuma izni verir. Bu izinle, yedekleme uygulaması işlemi daha sonra GetKernelObjectSecurity çağırabilir ve access-control ayarlarını okumak ve sıfırlamak için SetKernelObjectSecurity.

Yedekleme uygulamasının sistem düzeyindeerişim denetimi ayarlarına erişimi olması gerekiyorsa, ACCESS_SYSTEM_SECURITY bayrağı dwDesiredAccessCreateFilegeçirilen parametre değerinde belirtilmelidir.

Yedekleme uygulamaları, geri yükleme işlemi için belirtilen dosyaları ve dizinleri okumak için BackupReadçağırır ve bunları yazmak için BackupWrite.

standart erişim hakları