Klasörleri taşıdığınızda devralınan izinler otomatik olarak güncelleştirilmez

Bu makalede, klasörleri taşıdığınızda devralınan izinlerin otomatik olarak güncelleştirilmiyor olması sorununa yönelik bir çözüm sağlanır.

Şunlar için geçerlidir: Windows Server 2012 R2
Özgün KB numarası: 320246

Belirtiler

bir Access Control Listesi (ACL), üst öğeden devralınmış olarak işaretlenmiş izinleri gösterebilir, ancak üst öğe ACL'sinde bu izinleri yapılandırmamış olabilir. Devralma hala etkin olsa bile bu belirti oluşabilir. Üst klasörün ACL'sinde yapılan sonraki değişiklikler, alt klasörün ACL'sinin devralınan izinleri almasına neden olur. Ayrıca, alt öğe ACL'sini değiştirme girişimleri devralma işleminin uygulanmasına neden olur (değişiklik, ACL'yi devralmadan korunuyor olarak işaretlemediği sürece). ACL'yi düzenlemeye başlamadan önce devralma durumu not edilmediyse bu davranış şaşırtıcı olabilir.

Not

Bu davranış, Windows Vista tabanlı bir bilgisayar çalıştırırken bir klasörü taşımadan kaynaklanamaz. Klasör veya dosya hedef klasör veya dosyanın ACL'sini devralabileceğinden taşıma işlemi artık çalışır. Klasör veya dosya, üst öğeden devralınmış olarak işaretlenmiş izinlere de sahiptir. Bu, Windows XP'den Windows Vista ve Windows Server 2008'e tasarım gereği yapılan bir değişikliktir.

Neden

Bu davranış bir klasörün taşınması nedeniyle oluşabilir. Bir klasörü taşıdığınızda, ACL değiştirilmez ve devralınan izinler güncelleştirilmez. Bu makale bağlamında taşımanın her zaman aynı birim içinde hareket etmek anlamına geldiğini unutmayın.

Bir dosya veya klasörü taşıdığınızda, ACL de taşınır ve hiçbir şekilde değiştirilmez. Devralma bu klasör için etkinleştirildiğinde bile devralınan izinler otomatik olarak güncelleştirilmez. ACL, izinleri bir sonraki değiştirişinde güncelleştirilir ve bu, üst öğeyi izinlerini yaymaya zorlar.

Bu davranışa aşağıdakiler neden olabilir:

  • BIR üst klasörün izinlerini CACLS kullanarak ayarlamak alt klasörlere yayılmaz. /T seçeneği, devralmayı kullanarak hakları yaymak değil, tüm ACL'lerin üzerine yazmak anlamına gelir.

  • Devralmayı otomatik olarak yaymayan bir API kullanarak üst klasörün izinlerini ayarlama (Adssecurity.dll gibi).

  • Yedekten farklı bir konuma geri yükleme.

Çözüm

Beklenmeyen izin değişikliklerini önlemek için, ayarları korumak istediğinizde taşımadan önce dosyanın/klasörün ACL'sini korumalı olarak ayarlayın. Aksi takdirde, gezgin ACL düzenleyicisini kullanarak taşınan dosyanın/klasörün ACL'sini el ile güncelleştirin. ACL'yi doğru devralınan izinlerle güncelleştirilmeye zorlamak için devralmayı devre dışı bırakın ve yeniden etkinleştirin. Bu işlemi otomatikleştirmek için VBScript de kullanabilirsiniz.

Durum

Bu davranış tasarımdan kaynaklanır. Bu davranış, Windows Vista'daki tasarım değişikliği nedeniyle oluşmaz.

Davranışı yeniden oluşturma adımları

  1. herkes:okuma ve kullanıcılar:izinleri değiştirme ile bir test1 klasörü oluşturun.
  2. Bir test1\sub alt klasörü oluşturun ve üst klasörden devralmayı etkinleştirin (varsayılan). Bu klasör everyone:read ve users:change değerlerini devralınan izinler olarak göstermelidir.
  3. Yalnızca yöneticiler:tam denetim izinleriyle başka bir klasör testi2 oluşturun.
  4. Alt klasörü test2'ye taşıyın.
  5. Üst izin administrators:full control olsa da, herkes:okuma ve kullanıcılar:devralınan izinler olarak değişiklik yapmak için test2\sub üzerindeki izinleri görüntüleyin.
  6. Alt vermenin ACL'sine başka bir grup/kullanıcı (konuk gibi) ekleyin; örneğin, gezgin ACL düzenleyicisini kullanarak okuma erişimi. Uygula'ya tıkladıktan sonra everyone:read ve users:change kaldırılır ve yeni eklediğiniz izinlerin yanında yalnızca administrators:full control devralınan izinler olarak görüntülenir.