Kullanıcı dizinlerinde izinleri ayarlamak için ICACLS kullanma


16

Kullanıcı dizinleri izinlerini sıfırlamaya çalışıyorum ve benim komut dosyası son adımda biraz sorun yaşıyorum. Komut dosyam temelde tüm kullanıcı dizininin sahipliğini alır, dizindeki tüm dosya ve klasörlerin izinlerini sıfırlar, açıkça izin verdiğim izinleri verir, üst klasörlerden izinlerin tüm devralınmasını durdurur, tüm dosyalar için hak sahibini (belirtilen kullanıcı) ayarlar ve daha sonra kendime verdiğim izni kaldırır, böylece dosyalar üzerinde çalışabilirim. Kendimi TÜM dosyalardan ve alt klasörlerden kaldırmak için bu son adımı gerekiyor, ama şu anda sadece% userDir% beni kaldırır ve tüm devralınan izinleri aşağıda bırakır. Bu ICACLS'de belirgin bir eksikliktir. Bunu başarmanın başka bir yolu var mı?

set /p userDir=Enter the login of the user's directory you're modifying permissions for. (i.e. jDoe)
TAKEOWN /f "E:\Home Directories\%userDir%" /r /d y
ICACLS "E:\Home Directories\%userDir%" /reset /T
ICACLS "E:\Home Directories\%userDir%" /grant:r "MYDOMAIN\%userDir%":(OI)(CI)F /grant:r "SYSTEM":(OI)(CI)F /grant:r "MYDOMAIN\%username%":(OI)(CI)F
ICACLS "E:\Home Directories\%userDir%" /inheritance:r
ICACLS "E:\Home Directories\%userDir%" /setowner "MYDOMAIN\%userDir%" /T
ICACLS "E:\Home Directories\%userDir%" /remove "MYDOMAIN\%username%"

Microsoft tarafından oluşturulan desteklenmeyen XCACLS.vbs betiği ile oynuyorum ve betiğimin son satırı için şansı vardı. Bu ICACLS yerine "E: \ Ana Sayfa Dizinleri \% userDir%" / "MYDOMAIN \% kullanıcı adı%" öğesini kaldır Bunu cscript.exe xcacls.vbs "e: \ Test" / E / R "MYDOMAIN \% ile değiştirdim username% "Bu çalışıyor, ancak ciddi performans sorunları olduğundan XCACLS.vbs kullanımından kaçınmak istiyorum. Başka fikir var mı?
pk.

Yanıtlar:


18

İlk önce bir gözlem: Mirasınızı her engellediğinizde kendinizi gelecekteki esneklikten kurtarırsınız. Her ne pahasına olursa olsun kalıtımın engellenmesinden kaçınırım.

Örneğin, üst düzey "E: \ Home Dizinler" klasörünün içeriğini listeleyebilmeniz gerekiyorsa, aşağıdaki izni göz önünde bulundurun:

  • SİSTEM - Tam Denetim - Bu klasöre, alt klasörlere ve dosyalara uygulanır
  • BUILTIN \ Administrators - Tam Denetim - Bu klasöre, alt klasörlere ve dosyalara uygulanır
  • BUILTIN \ Kimliği Doğrulanmış Kullanıcılar - Okuma ve Yürütme - Yalnızca bu klasöre uygulanır

Son izin alt klasörlere aktarılmaz. Her alt klasörde devralma etkin kalır ve kullanıcıyı yalnızca "Değiştir" veya "Tam Denetim" haklarına sahip olarak belirlersiniz (kullanıcıların ana dizinleri içinde izinleri ayarlayabilme konusunda ne hissettiğinize bağlı olarak). (Genellikle bu son izni "Gelişmiş" Güvenlik özellikleri sayfasına "Kimliği Doğrulanmış Kullanıcılar" ekleyerek, "Oku" ve "Oku ve Yürüt" onay kutularının işaretini kaldırarak ayarladım. "Gelişmiş" iletişim kutusuna geçip Bu ACE'nin "Yalnızca bu klasöre" ayarına "Uygula" ayarı. Tıklama sayısı açısından bunu ayarlamanın en kolay yolu budur.)

Ardından, betiğiniz şu şekilde olur:

set /p userDir=Enter the login of the user's directory you're modifying permissions for. (i.e. jDoe)
TAKEOWN /f "E:\Home Directories\%userDir%" /r /d y
ICACLS "E:\Home Directories\%userDir%" /reset /T
ICACLS "E:\Home Directories\%userDir%" /grant:r "MYDOMAIN\%userDir%":(OI)(CI)F
ICACLS "E:\Home Directories\%userDir%" /setowner "MYDOMAIN\%userDir%" /T

Yukarıda tanımladığım "Kimliği Doğrulanmış Kullanıcılar" izninin "Yalnızca bu klasör" olarak ayarlanmış kalıtımla eklenmesinin, işlevsellikte aradığınızı size vereceğini ve öğrenirseniz size gelecekte esneklik sağlayacağından şüpheleniyorum. gelecekte tüm kullanıcı ana dizinlerine devralması gerekebilecek bir izin ayarlamanız gerekir.

Bu, kullanıcı ana dizinleri, yeniden yönlendirilmiş "Belgelerim", "Masaüstü" vb. Klasörleri ve gezici kullanıcı profili dizinleri için SÇP'm. Harika çalışıyor.

Düzenle

re: BUILTIN \ Administrators erişimi hakkındaki yorumunuz

Yıllar boyunca BUILTIN \ Administrators erişimine izin verme konusundaki insanlarla ilgili çeşitli tartışmalar yaşadım ve benim aldığım şey:

  • Dosyalarına ulaşabiliyorsanız, belirli bir kullanıcı sınıfı sorununu çözmek daha kolaydır. "Sahip olmak" için bir acıdır ve çok sayıda dosya varsa da oldukça yavaş olabilir.

  • ICACLS ile gördüğünüz gibi BUILTIN \ Administrators, sahiplik "atayabilir" ("almanın yanı sıra"), bu nedenle BUILTIN \ Administrators tarafından erişilebilir dosyaların bulunmamasıyla "güvenlik" eklenmez.

  • Denetimi kullanmadığınız sürece (ve potansiyel olarak çok sayıda yanlış pozitif girişi eleme), bir BUILTIN \ Administrators kullanıcısı erişmemesi gereken dosyaların sahipliğini aldığında, kopyaladığında ve ardından bir denetim izi olmaz dosyaları "uygun" sahiplerine ve izinlerine geri döndürür.

  • Microsoft dünyasında, Şifreleme dosya sistemi (EFS), yetkisiz BUILTIN \ Administrators erişiminin gerçekleşmesini engelleme sorununu çözmek içindir. NTFS EKL'leri bu sorunu çözmez. (Açıkçası, EFS şehirdeki tek gösteri değildir. Şifreleme, nasıl dilerseniz dileyin "ağ Yöneticisinin erişimini sınırla" sorununu çözmenin gerçek cevabıdır.)

Bana göre, BUILTIN \ Administrators kullanıcı kullanıcı dizinlerine (ve aslında herhangi bir klasöre) erişimi belirtmemek, gerçek bir güvenlikten daha azını ("hiçbirinden daha az" sağlarken sorunları çözmek için gereken karmaşıklığı ve zamanı artırdığınız anlamına gelir. "çünkü hiçbir yerde yanlış bir güvenlik hissi verir).

İnsanlarla tartışmayı mantık yoluyla kazanmaya çalışmayı bıraktım. Bazı insanlarla duygusal bir sorun gibi görünüyor. Bu, belirli ayrıcalıklı grupların kullanıcıların posta kutularını açmasını önlemek için bir Exchange kuruluşunun köküne yerleştirilen aptal "Farklı Reddet / Al" ACE'ye benzer. Gerçek bir güvenlik sunmaz (denetlenmeden ACE'yi gerektiği gibi kaldırabilir / yeniden uygulayabilir), yanlış bir güvenlik hissi verir ve gerçek sorunları çözerken yoluna girer.

BUILTIN \ Administrator erişimi olan argümanımı beğenmeseniz bile , uygun olan yerlerde "Yalnızca bu klasör" mirasını kullanarak miras hiyerarşisini olduğu gibi bırakmak istersiniz . İzin hiyerarşilerinde kalıtımın engellenmesi, tasarımla ilgili bir şeyin "bozulduğunu" (tersine çevrilmiş vb.)


1
BUILTIN \ Administrators dizin dizininin tamamına tam erişim izni vermenizi önerir misiniz? Ben (yöneticiler) sahiplik almadan herkesin kullanıcı dizinlerine / profillerine tam erişime sahip olmamamız gerektiğine inanıyorum.
pk.

+1, sahte güvenlik duygusu ile ilgili noktaları sev ...
DCookie

1

İlk olarak, senaryo alıntısı için teşekkürler. Aynı şey üzerinde çalışıyordum ama farklı bir yere saplandım. Benim SBS 2008 kutumda, aşağıdaki kod benim için çalışıyor (tabii ki yükseltilmiş varsayalım). İşletim sistemi tarafından oluşturulan yeni (varsayılan) bir kullanıcı klasörünün icacls% userdir% / t yaptım ve bu komut dosyasını çalıştırdıktan sonra bir klasörün icacls% userdir% / t ile karşılaştırdım ve tüm "O'lar ve Ben "haklıyım. Umarım sizin için de çalışır.

set /p userDir=Enter the login of the user's directory you're modifying permissions for. (i.e. jDoe)
TAKEOWN /f "E:\Home Directories\%userDir%" /r /d y
ICACLS "E:\Home Directories\%userDir%" /reset /T
ICACLS "E:\Home Directories\%userDir%" /grant:r "MYDOMAIN\%userDir%":(oi)(ci)f
ICACLS "E:\Home Directories\%userDir%\*.*" /grant:r "SYSTEM":(OI)(CI)F /grant:r "MYDOMAIN\%userDir%":(OI)(CI)F /grant:r "MYDOMAIN\%username%":(OI)(CI)F
ICACLS "E:\Home Directories\%userDir%\*.*" /inheritance:r
ICACLS "E:\Home Directories\%userDir%\*.*" /setowner "MYDOMAIN\%userDir%" /T
ICACLS "E:\Home Directories\%userDir%" /remove "MYDOMAIN\%username%" /t

Saygılarımla,

 -d

Komut dosyanızın son satırını doğruladığınızdan emin olun. ICACLS'nin devralınan izinleri başarıyla kaldırmayacağı deneyimim oldu. "MYDOMAIN \% kullanıcıadı%" klasöründeki girdiyi kaldırır, ancak alt klasörlerin izinlerine dokunulmaz. Bu nedenle, "MYDOMAIN \% kullanıcıadı%", doğrudan erişilirse alt klasörlere erişmeye devam eder, bunlara göz atamazsınız. XCACLS.vbs bunu benim için çözdü. cscript.exe xcacls.vbs "e: \ Test" / E / R "MYDOMAIN \% kullanıcı adı%"
pk.

İşte burada . bölüm benim düzenleme geldi. / miras: r üst klasörde, ben de aynı sorunu vardı. ama yapıyorum . üst klasörde hile gibi görünüyordu. Yukarıdakileri çalıştırdıktan sonra% userdir%,% username%, system ve yöneticilere sahiptir, ancak bunun altındaki her şey sadece% username% ve sistemdir, bu da sunucuyu başlangıçta nasıl ayarladığımdır - tam istediğim.

-1

Teknik olarak mümkünse, bu komutu gereksinimime göre değiştirmek için yardımınıza ihtiyacım var.

İşte yapı

\ Server \ Veli \ UserA \ unix

\ Server \ Veli \ UserB \ unix

\ Server \ Parent \ UserC \ unix .... vb.

User $ klasörünün her birinin altında "unix" adında bir klasör vardır.

"Üst" klasör altında listelenen tüm User $ klasörlerine (yukarıdaki yapıdan itibaren alınan adlar) tam izinlere sahip bir kullanıcı veya grup eklemek istiyorum, ancak izinleri yalnızca "unix" klasöründe hariç tutmak istiyorum.

Gerekli izinlerin uygulanabilirliği açısından benim için iyi çalışan bu komutu var, ancak buna dışlama işlevi ekleyemiyorum.

icacls "\\ Sunucu \ Ebeveyn \ KullanıcıA" / Etki Alanı \ Grup: (OI) (CI) F / T

Bu senaryoda rehberlik edebilecek misiniz?


1
Merhaba ve Sunucu Hatası'na hoş geldiniz! Lütfen sorularınızı cevap yoluyla sormayın. Kullanın Soru Ask isteğinizi göndermek için düğmeye.
Bay Shunz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.