Kısıtlı kullanıcıların sabit bir dizinde bulunan uygulamayı tam yetkileri ile kullanabilmeleri için group policy ile script/batch file oluşturalım.
isterseniz Group Policy üzerinde Computer Configuration / Windows Settings / Security Settings / File System altındanda düzenleyebilirsiniz. Anlatım script yönetmi üzerine.
Kullanacağımız komut cacls (vista ile daha gelişmiş icacls komutu mevcut ama bizim istemcilerimiz xp ve cacls komutunu vista üzerinde de kullanabiliriz)
Parametreler:
parametrelere cacls /? yazarak ulaşabilirsiniz.
/t ACL listemizin alt dizin/dosyalara da etki etmesini sağlar
/e değiştirme yapmamızı sağlar. (bunu kullanmazsak mevcut ACL bilgileri silinir yeni yetkiler aktarılır
/p mevcut olan yetkileri değiştirmek için
/r kullanıcıyı acl listesinden silmek için
/c hata oluşsa bile devam etmesi için
/d kullanıcı erişimini engellemek için
yetkiler:
R Oku
W Yaz
C Değiştir (yaz)
F Tam denetim
Örnekler
CMD /c Echo E|
komutunu başa yazarak bize onay sormasını engelliyoruz.(Ingilizce olan işletim sistemleri için E yerine Y koymamız gerekiyor. Bunları ayırt etmemize gerek yok hem E hemde Y olan satırları peş peşe çalıştırırsanız bir tanesi geçerli olacaktır.)
CMD /c Echo E| cacls c:\test /t /c /g Administrators:F system:f users:r musti:f
Üstteki örnekte c:\test klasörü ve alt klasörlerindeki tüm yetkiler silinip administrators,system gruplarına tam yetki users grubuna ise okuma yetkisi veriyoruz.
CMD /c Echo E| cacls c:\test /e /t /r users
Bu örnekte ise mevcut acl listemizden sadece users grubuna verdiğimiz yetkileri siliyoruz
CMD /c Echo E| cacls c:\test /t /e /p users:r musti:f
mevcut acl üzerindeki yetkileri users grubuna sadece okuma musti kullanıcısına tam yetki verdik.
CMD /c Echo E| cacls c:\test /e /d musti
musti isimli kullanıcının dizine erişimini engelliyoruz
Bu kodları bat dosyası içerisine yazabileceğimiz gibi vbs üzerine de ekleyebiliriz.
Örnek vbs dosyamız.
Option Explicit
Dim klasor
Dim intRunError, objShell, objFSO
klasor = "c:\test"
Set objShell = CreateObject("Wscript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FolderExists(klasor) Then
intRunError = objShell.Run("CMD /c Echo E| cacls " & klasor & " /t /c /g Administrators:F ", 2, True)
If intRunError <> 0 Then
Wscript.Echo klasor & " Klasörünün izinleri değiştirilirken hata ile karşılaşıldı."
End If
End If
WScript.Quit