Get-ACL ve Set-ACL
PowerShell, NTFS izinlerinde toplu değişiklikler gerçekleştirmek için çok etkili bir araçtır.
Kullanılacak iki ana komut Get-ACL ve Set-ACL'dir.
Nasıl yapıldığını görmek için gerçek hayattan bir örnek kullanalım.
Klasör Mirasını Sıfırlayın ve NTFS İzinlerini Ayarlayın
Aşağıdaki örnekte, tek tek atanan izinlerden grup tarafından atanan izinlere geçerek Microsoft'un en iyi uygulamalarını uygulamak istiyoruz.
Üç kullanıcıya tam denetimin atandığı Mars_Data klasörünü düşünün:
Öncelikle kullanıcılara doğrudan izin atanmasını istemiyoruz, çünkü bu, izinleri değiştirmek için klasör özelliklerine gitmemiz gerektiği anlamına geliyor.
Microsoft'un en iyi uygulaması, izin ataması için etki alanı yerel gruplarını kullanmaktır, bu nedenle "DL.Mars_Data.Modify" adlı bir grup oluştururuz.
Bir etki alanı yerel grubu kullanarak, yalnızca grup üyeliğini değiştirerek Active Directory'mizde merkezi olarak veri erişimine izin verebilir veya kaldırabiliriz.
İkinci olarak, üst düzey klasörümüzden SİSTEM ve Yönetici erişimini yaymak için Mars_Data klasöründe kalıtımı etkinleştirmek istiyoruz.
Bunu başarmak için PowerShell betiğimizde ele almamız gereken üç adım vardır:
- Öncelikle, mevcut tüm açık (devralınmamış) izinleri klasörden kaldırın.
- Klasörde devralmayı etkinleştirin.
- Grubumuza Değiştirme iznini atayın.
Nasıl yapıldığını görelim.
PowerShell Kullanarak Devralınmayan İzinleri Kaldırma
Klasör izinlerini değiştirmek için öncelikle Get-ACL'yi kullanarak mevcut ACL'yi (Erişim Kontrol Listesi) almamız gerekir:
$FolderPath = "c:\ms_tmp\Projects\P0001-P0050\Mars_Data"
$Acl = Get-Acl -Path $FolderPathDaha sonra ACL'deki ACE'leri (Erişim Kontrol Girişleri) yineliyoruz ve devralınmayan tüm ACE'leri kaldırıyoruz:
ForEach ($Ace In $Acl.Access) {
If ($Ace.IsInherited -eq $false) {
$Acl.RemoveAccessRuleSpecific($Ace)
}
}
ACL'deki değişiklikler aslında bellekte gerçekleştirilir. Bu nedenle, değişikliklerimizi yaptıktan sonra her zaman değiştirilen ACL'yi Set-Acl kullanarak klasöre kaydetmemiz gerekir:
Set-Acl -Path $FolderPath -ACLObject $AclPowerShell Kullanarak İzin Devralmayı Etkinleştirme
NTFS izinlerinin devralınmasını etkinleştirmek için aşağıdaki komutu kullanırız:
$FolderPath = "c:\ms_tmp\Projects\P0001-P0050\Mars_Data"
$Acl = Get-Acl -Path $FolderPath
$Acl.SetAccessRuleProtection($false, $false)
Set-Acl -Path $FolderPath -ACLObject $AclÖnceki örnekte olduğu gibi Get-Acl ile ACL’yi okuyoruz, kalıtımı etkinleştirerek ACL’yi değiştiriyoruz ve ardından Set-Acl ile değişikliklerimizi tekrar diske yazıyoruz.
PowerShell Kullanarak NTFS İzinlerini Ekleme
Komut dosyamızın son bileşeni, bireysel kullanıcılara izin atamak yerine, erişimi yönetmek için kullanacağımız gruba izin atamaktır.
Bu, aşağıdaki PowerShell komutları kullanılarak gerçekleştirilir:
$FolderPath = "c:\ms_tmp\Projects\P0001-P0050\Mars_Data"
$Acl = Get-Acl -Path $FolderPath
$Ace = New-Object System.Security.AccessControl.FileSystemAccessRule("easy365manager\DL.Mars_Data.Modify", 'Modify', 'ContainerInherit, ObjectInherit', 'None', 'Allow')
$Acl.AddAccessRule($Ace)
Set-Acl -Path $FolderPath -ACLObject $Aclİzin atamak için öncelikle atamak istediğimiz izni yansıtan bir ACE oluşturmamız gerekiyor.
Parametreler atanan kişiyi, izin türünü, devralma bayraklarını, yayılma bayraklarını ve türü (İzin Ver/Reddet) içerir.
Yine değişiklik yapmadan önce Get-Acl ile ACL’yi okuyoruz ve Set-Acl ile ACL’yi yazıyoruz.
Son Senaryo
Komut dosyamızı temizlemek için değişiklikleri birleştiriyoruz, böylece ACL'yi yalnızca bir kez okuyup yazmamız gerekiyor.
Son komut dosyası şöyle görünür:
$FolderPath = "c:\ms_tmp\Projects\P0001-P0050\Mars_Data"
$Acl = Get-Acl -Path $FolderPath
# Remove non-inherited permissions
ForEach ($Ace In $Acl.Access) {
If ($Ace.IsInherited -eq $false) {
$Acl.RemoveAccessRuleSpecific($Ace)
}
}
# Enable inheritance
$Acl.SetAccessRuleProtection($false, $false)
# Assign Modify to new group
$Ace = New-Object System.Security.AccessControl.FileSystemAccessRule("easy365manager\DL.Mars_Data.Modify", 'Modify', 'ContainerInherit, ObjectInherit', 'None', 'Allow')
$Acl.AddAccessRule($Ace)
Set-Acl -Path $FolderPath -ACLObject $Acl
Betiği çalıştırdıktan sonra izinler tam olarak istediğimiz gibi ayarlanır:
Active Directory'den Merkezi Yönetim
Artık AD'mizden dosya izinlerinin merkezi yönetimini elde ettik.
İzinleri doğrudan kaynakta (klasör/dosya sistemi) değiştirmek yerine artık AD'deki grup üyeliğini değiştirmeye güvenebiliriz. Çok kullanışlı!
Ancak Office 365 yönetimini Active Directory'nizde de birleştirebileceğinizi biliyor muydunuz?
Devrim niteliğindeki Office 365 yönetim aracı Easy365Manager ile Office 365 lisanslarını ve posta kutularını doğrudan AD kullanıcı özelliklerinden yönetebilirsiniz:
Yüzlerce şirket, aşağıdaki nedenlerden dolayı dünya çapındaki tüm sektörlerde Easy365Manager'ı kullanıyor:
- Birçok Office 365 web konsolunu kullanmak zorunda kalmadan AD'den çalışmak büyük bir zaman tasarrufu sağlar.
- Easy365Manager'ı kurmak son derece kolaydır (bir dakikadan az).
- Easy365Manager, genellikle yalnızca PowerShell aracılığıyla kullanılabilen birçok görev için bir GUI sunar.
- Altyapınızda herhangi bir değişiklik yoktur (sıfır risk).
- Son olarak Easy365Manager şirket içi Exchange'i kaldırmanıza olanak tanır (büyük bir maliyet tasarrufu sağlar).
30 günlük tam işlevsel deneme sürümünü buradan indirebilirsiniz.


