Yanıtlar:
Vista itibarıyla cacls
kullanımdan kaldırılmıştır. İşte ilk yardım hatları:
C:\>cacls
NOTE: Cacls is now deprecated, please use Icacls.
Displays or modifies access control lists (ACLs) of files
Bunun icacls
yerine kullanmalısınız . John'a D:\test
klasör ve tüm alt klasörleri üzerinde tam kontrol sağlamanız için:
C:\>icacls "D:\test" /grant John:(OI)(CI)F /T
MS belgelerine göre:
F
= Tam KontrolCI
= Kapsayıcı Devral - Bu işaret, bağımlı kapların bu ACE'yi devralacağını gösterir.OI
= Nesne Devral - Bu işaret, bağımlı dosyaların ACE'yi devralacağını gösterir./T
= Varolan dosyalara ve alt klasörlere yinelemeli olarak uygulanır. ( OI
ve CI
yalnızca yeni dosyalara ve alt klasörlere uygulanır). Kredi: @AlexSpence tarafından yapılan yorum.Belgelerin tamamı için " icacls
" parametresini bağımsız değişken olmadan çalıştırabilir veya burada ve burada bulunan Microsoft belgelerine bakabilirsiniz.
C:\>icacls "D:\test" /grant "John:(OI)(CI)F" /T
ICACLS'yi de kullanabilirsiniz.
Vermek için Kullanıcılar grubu Tam Denetim bir klasöre:
>icacls "C:\MyFolder" /grant Users:F
İçin IIS kullanıcılarına Değiştirme izni vermek için C:\MyFolder
(IIS'nizin dosyaları belirli bir klasöre R / W yapabilmesi gerekiyorsa):
>icacls "C:\MyFolder" /grant IIS_IUSRS:M
ICACLS / yaparsanız ? mevcut tüm seçenekleri görebileceksiniz.
cacls
gittiği göz önüne alındığında , icacls kullanmak için daha fazla neden var .
/grant Users:(OI)(CI)F
kullanılana kadar benim için işe yaramadı
Users
Başka bir şeyle değiştirmem gerekiyor mu yoksa HAYIR? Göreicacls "C:\MyFolder" /grant Users:F
Bir Komut İstemi açın, ardından şu komutu yürütün:
icacls "c:\somelocation\of\path" /q /c /t /grant Users:F
F
Tam Erişim sağlar.
/q /c /t
izinleri alt klasörlere uygular.
Not: Bazen "Yönetici Olarak Çalıştır" yardımcı olabilir.
cacls
Komutu kullan . Buradaki bilgilere bakın .
CACLS dosyaları / e / p {USERNAME}: {PERMISSION}
Nerede,
/ p: Yeni izin ayarla
/ e: İzni düzenleyin ve eski iznini olduğu gibi saklayın.
{USERNAME}: Kullanıcının adı
{İZİN}: İzin şu olabilir:
R - Oku
W - Yaz
C - Değiştir (yazma)
F - Tam kontrol
Örneğin, aşağıdaki komutla Rocky Full (F) denetimi verin (Windows komut istemine yazın):
C:> CACLS dosyaları / e / p rocky: f
Aşağıdaki komutu yazarak tam yardımı okuyun:
C:> cacls /?
cacls
konuyla ilgilidir; hala kullanılabilir Windows 10
; Microsoft cmd.exe
, Powershell lehine de kullanımdan kaldırılacaktı .
cmd.exe
onaylanmadı ve olması muhtemel değil, bu yüzden bu icacls
tamamen lehine bir nokta değil , tam tersi.
cacls.exe
. Ben de cmd.exe
zaten kullanımdan kaldırılmış olduğunu söylemedim . İnsanların en azından yüksek sürümlerdeki kullanılabilirliğinin yalnızca geriye dönük uyumluluk veya başka herhangi bir sebeple bile farkında olmaları gerektiğini düşünüyorum.
Bozuk İzinler: Bir klasöre ve alt nesnelerine yeniden erişim
Her ne kadar soruya cevap olarak gönderilen cevapların çoğunun bir değeri olsa da, IMHO'nun hiçbiri tam bir çözüm sunmuyor. Aşağıdakiler , bozuk izin ayarlarıyla bir klasörü kilitli tuttuysanız Windows 7 için mükemmel bir çözüm olabilir :
icacls "c:\folder" /remove:d /grant:r Everyone:(OI)(CI)F /T
İçin , Windows 10 kullanıcı / SID sonra belirtilmelidir /remove:d
seçeneği:
icacls "c:\folder" /remove:d Everyone /grant:r Everyone:(OI)(CI)F /T
.
Notlar :
Komut belirtilen dizine uygulanır.
Kullanıcının "Herkes" belirtilmesi, mümkün olan her kullanıcıyı içerdiğinden mümkün olan en geniş izni ayarlar .
"/ Remove: d" seçeneği, varolan açık DENY ayarlarını siler, çünkü bunlar açık ALLOW ayarlarını geçersiz kılar: yeni bir ALLOW ayarı oluşturmak için gerekli bir ön hazırlık. Bu genellikle bir önlemdir, çünkü genellikle DENY ayarı yoktur, ancak üzgünümden daha güvenlidir.
"/ Grant" seçeneği, varolan tüm açık ALLOW ayarlarının yerini alan (": r") açık bir izin olan yeni bir ALLOW ayarı oluşturur.
"F" parametresi (yani oluşturulan izin) bunu FULL kontrolüne izin verir.
"/ T" parametresi özyineleme ekler ve bu değişiklikleri belirtilen dizindeki tüm geçerli alt nesnelere (yani dosyalar ve alt klasörler) ve klasörün kendisine uygular .
"(OI)" ve "(CI)" parametreleri de özyineleme ekleyerek bu değişiklikleri daha sonra oluşturulan alt nesnelere uygular.
.
EK (2019/02/10) -
Windows 10 komut satırı yukarıdaki nazikçe bugün bana önerildi, bu yüzden burada. Test etmek için Windows 10'um yok, ancak varsa lütfen deneyin (ve lütfen aşağıda bir yorum gönderirsiniz ).
Değişiklik sadece ilk adım olarak DENY ayarının kaldırılmasıyla ilgilidir. Herhangi bir DENY ayarı olmayabilir, bu nedenle bu seçenek bir fark yaratmayabilir. Anladığım kadarıyla, Windows 7'de / d: d'den sonra bir kullanıcı belirtmeniz gerekmiyor, ancak bu konuda yanlış olabilirim!
.
EK (2019/11/21) -
Kullanıcı astark , komutun dilden bağımsız olması için Herkesin * S-1-1-0 terimiyle değiştirilmesini önerir . Yalnızca İngilizce Windows yüklemem var, bu yüzden bu teklifi test edemiyorum, ancak makul görünüyor.
Invalid parameter "/remove:d"
Bir süre bu mücadele ve sadece bu konuya cevapları birleştirerek (Windows'da 10) benim için çalıştı:
Açık cmd veya PowerShell ve dosyalarla klasörüne gidin 1.
2. takeown / R / F .
3. icacls * / T / hibe dan: F
İyi şanslar!
Tek bir komutta çeşitli izinleri birlikte dizmek istiyorsanız, bu sayfada tökezleyen başka biri varsa, bunu kullandım:
icacls "c:\TestFolder" /grant:r Test_User:(OI)(CI)(RC,RD,RX)
Çeşitli izinler için csv dizesini not edin.
Hesap oluşturmak ve oluşturmak için bir Excel vba komut dosyası ile. Yeni kullanıcılarımıza yöneticilerimizin x hesabını kullanarak araç tarafından oluşturulan klasör ve alt klasörlere tam haklar izni vermem gerekiyordu.
cacls şöyle görünüyordu: cacls \ FileServer \ Users \ Kullanıcı Adı / e / g Etki Alanı \ Kullanıcı Adı: C
Bu kodu Windows 7 ve ötesine taşımam gerekiyordu. Benim çözümüm şu şekilde ortaya çıktı:
icacls \ FileServer \ Users \ Kullanıcı adı / hibe: r Etki Alanı \ Kullanıcı Adı: (OI) (CI) F / t
/ grant: r - Belirtilen kullanıcı erişim haklarını verir. İzinler, daha önce verilen açık izinlerin yerine geçer. Olmadan: r, izinler daha önce verilen açık izinlere eklenir
(OI) (CI) - Bu klasör, alt klasörler ve dosyalar.
F - Tam Erişim
/ t - Dosyaları / dizinleri eşleştirmek için tüm alt klasörlerde gezinin.
Bunun bana verdiği şey, bu sunucuda kullanıcının yalnızca o klasörü görebildiği ve alt klasörler oluşturduğu, dosyaları okuyabildiği ve yazabildiği bir klasördü. Yanı sıra yeni klasörler oluşturun.
XCACLS.VBS, ACL bilgilerini değiştirecek / düzenleyecek çok güçlü bir komut dosyasıdır. c: \ windows \ system32 \ cscript.exe xcacls.vbs tüm anahtarları ve seçenekleri döndürür.
Microsoft Destek Sayfasından resmi dağıtım alabilirsiniz
XCACLS.VBS
verebilir misiniz?
Toplu klasör oluşturma ve izin verme bana aşağıdaki powershell betiğini kullanarak çalışır.
Import-Csv "D:\Scripts\foldernames.csv" | foreach-object {
$username = $_.foldername
# foldername is the header of csv file
$domain = “example.com”
$folder= "D:\Users"
$domainusername = $domain+“\”+$username
New-Item $folder\$username –Type Directory
Get-Acl $folder\$username
$acl = Get-Acl $folder\$username
$acl.SetAccessRuleProtection($True, $False)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Administrators","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("SYSTEM","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("$domain\Domain Admins","Read", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($domainusername,"Modify", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
Set-Acl $folder\$username $acl
}
Not: csv dosyasında aynı alan adı kullanıcı adını oluşturmanız gerekir, aksi takdirde izin sorunları alırsınız
attrib +r +a +s +h <folder name> <file name> to hide
attrib -r -a -s -h <folder name> <file name> to unhide
mükemmel nokta Călin Darie
Ben cacls kullanmak için çok sayıda komut dosyası vardı Ben nasıl icacls için kök bağlama birimlerini değiştirmek için bir komut dosyası bulamadım: d: \ datafolder. Sonunda, geçici bir sürücü olarak birimi bağlar sonra sn uygular aşağıdaki komut dosyası sandık. sonra bağlantısını keser. Root mount güvenliğini güncelleyebilmenin tek yolu bu.
1, klasör bağlama GUID'ini geçici bir dosyaya alır, ardından birimi geçici sürücü X olarak bağlamak için GUID'i okur: sn uygular ve değişiklikleri günlüğe kaydeder, ardından yalnızca X: sürücüsünden birimin bağlantısını keser, böylece bağlı klasör değiştirilmez veya kesilmez. sonra uygulanan sn.
İşte benim komut dosyası örneği:
**mountvol "d:\%1" /L >tempDrive.temp && FOR /f "tokens=*" %%I IN (tempDrive.temp) DO mountvol X: %%I
D:\tools\security\icacls.exe %~2 /grant domain\group:(OI)(CI)F /T /C >>%~1LUNsec-%TDWEEK%-%TMONTH%-%TDAY%-%TYEAR%-%THOUR%-%TMINUTE%-%TAM%.txt
if exist x:\*.* mountvol X: /d**
Ben Yönetici ve bazı komut dizindeki tüm dosya ve alt klasörlerde adımı "Reddet" izni yerleştirilir. icacls "D:\test" /grant John:(OI)(CI)F /T
Komutun yürütülmesi işe yaramadı, çünkü "Reddet" i bu listeden adımdan kaldırmadı.
Benim için çalışan tek şey icacls "D:\test" /reset /T
komutla tüm izinleri sıfırlamak .
Windows 10'da "c:>" ve ">" olmadan çalışma
Örneğin:
F = Full Control
/e : Edit permission and kept old permission
/p : Set new permission
cacls "dosya veya klasör yolu" / e / p KullanıcıAdı: F
(ayrıca bu 2502 ve 2503 hatasını düzeltir)
cacls "C: \ Windows \ Temp" / e / p Kullanıcı Adı: F
Benim için işe yarayan buydu:
Erişimin reddedildiği klasörü el ile açın.
Bu klasördeki Yürütülebilir / uygulama dosyasını seçin.
Üzerine sağ tıklayın ve Properties->Compatibility
Şimdi bakın Privilege Levelve kontrol edinRun As Administrator
Tıklayın Change Settings for all users.
Sorun şimdi çözüldü.