Odpowiedzi:
Od wersji Vista cacls
jest przestarzały. Oto kilka pierwszych linii pomocy:
C:\>cacls
NOTE: Cacls is now deprecated, please use Icacls.
Displays or modifies access control lists (ACLs) of files
Zamiast tego powinieneś użyć icacls
. W ten sposób zapewniasz Johnowi pełną kontrolę nad D:\test
folderem i wszystkimi jego podfolderami:
C:\>icacls "D:\test" /grant John:(OI)(CI)F /T
Zgodnie z dokumentacją MS:
F
= Pełna kontrolaCI
= Dziedziczenie kontenera - ta flaga wskazuje, że podrzędne kontenery odziedziczą to ACE.OI
= Object Inherit - ta flaga wskazuje, że pliki podrzędne odziedziczą ACE./T
= Zastosuj rekurencyjnie do istniejących plików i podfolderów. ( OI
i CI
dotyczą tylko nowych plików i podfolderów). Źródło: komentarz @AlexSpence.Aby uzyskać pełną dokumentację, możesz uruchomić „ icacls
” bez argumentów lub przejrzeć dokumentację Microsoft tutaj i tutaj
C:\>icacls "D:\test" /grant "John:(OI)(CI)F" /T
Możesz także użyć ICACLS.
Aby przyznać grupie użytkowników pełną kontrolę nad folderem:
>icacls "C:\MyFolder" /grant Users:F
Aby udzielić uprawnień do modyfikacji użytkownikom IIS C:\MyFolder
(jeśli potrzebujesz, IIS ma możliwość R / W plików do określonego folderu):
>icacls "C:\MyFolder" /grant IIS_IUSRS:M
Jeśli robisz ICACLS /? będziesz mógł zobaczyć wszystkie dostępne opcje.
cacls
już go nie ma, jest jeszcze więcej powodów, aby używać icacl .
/grant Users:(OI)(CI)F
użyte
Users
coś innego lub NIE? Wedługicacls "C:\MyFolder" /grant Users:F
Otwórz wiersz polecenia, a następnie wykonaj następujące polecenie:
icacls "c:\somelocation\of\path" /q /c /t /grant Users:F
F
daje pełny dostęp.
/q /c /t
stosuje uprawnienia do podfolderów.
Uwaga: Czasami pomoże „Uruchom jako administrator”.
Użyj cacls
polecenia. Zobacz informacje tutaj .
Pliki CACLS / e / p {NAZWA UŻYTKOWNIKA}: {ZEZWOLENIE}
Gdzie,
/ p: ustaw nowe uprawnienia
/ e: edytuj uprawnienie i zachowałem stare pozwolenie, ponieważ jest to np. edycja ACL zamiast zastępowania.
{NAZWA UŻYTKOWNIKA}: nazwa użytkownika
{ZEZWOLENIE}: Zezwolenie może być:
R - Przeczytaj
W - Napisz
C - Zmień (zapisz)
F - Pełna kontrola
Na przykład udziel kontroli Rocky Full (F) za pomocą następującego polecenia (wpisz w wierszu polecenia systemu Windows):
C:> Pliki CACLS / e / p rocky: f
Przeczytaj całą pomoc, wpisując następujące polecenie:
C:> cacls /?
cacls
Jest istotna; jest nadal dostępny w Windows 10
; Microsoft zrezygnowałby również cmd.exe
na rzecz Powershell.
cmd.exe
nie jest przestarzałe i prawdopodobnie nie będzie, więc nie jest to wcale argument na korzyść icacls
, wręcz przeciwnie.
Uszkodzone uprawnienia: Odzyskiwanie dostępu do folderu i jego podobiektów
Chociaż większość odpowiedzi zamieszczonych w odpowiedzi na pytanie ma pewne zalety, żadna z nich IMHO nie daje kompletnego rozwiązania. Poniższe (być może) idealne rozwiązanie dla systemu Windows 7, jeśli folder jest zablokowany przez uszkodzone ustawienia uprawnień:
icacls "c:\folder" /remove:d /grant:r Everyone:(OI)(CI)F /T
W przypadku systemu Windows 10 należy podać identyfikator użytkownika / SID po /remove:d
opcji:
icacls "c:\folder" /remove:d Everyone /grant:r Everyone:(OI)(CI)F /T
.
Uwagi :
Polecenie stosuje się do określonego katalogu.
Określenie użytkownika „Wszyscy” ustawia możliwie najszersze uprawnienia, ponieważ obejmuje ono każdego możliwego użytkownika.
Opcja „/ remove: d” usuwa wszelkie jawne ustawienia ODMÓW, które mogą istnieć, ponieważ zastępują one jawne ustawienia ZEZWALAJĄ: konieczny wstęp do utworzenia nowego ustawienia ZEZWALAJ. Jest to tylko środek ostrożności, ponieważ często nie ma ustawienia ODMÓW, ale lepiej jest zabezpieczyć niż przepraszać.
Opcja „/ grant” tworzy nowe ustawienie ZEZWOLENIA, wyraźne uprawnienie, które zastępuje („: r”) wszelkie istniejące jawne ustawienia ZEZWOLENIA.
Parametr „F” (tzn. Utworzone uprawnienie) powoduje, że jest to kontrola PEŁNA.
Parametr „/ T” dodaje rekurencję, stosując te zmiany do wszystkich bieżących podobiektów w określonym katalogu (tj. Plików i podfolderów), a także do samego folderu.
Parametry „(OI)” i „(CI)” również dodają rekurencję, stosując te zmiany do później utworzonych podobiektów.
.
DODATEK (2019/02/10) -
Wiersz poleceń systemu Windows 10 powyżej został mi dziś zasugerowany, więc oto proszę. Nie mam systemu Windows 10, aby go przetestować, ale proszę wypróbować, jeśli masz (a następnie czy możesz zamieścić komentarz poniżej).
Zmiana dotyczy tylko usunięcia ustawienia ODMÓW jako pierwszego kroku. Może nie być żadnego ustawienia ODMOWY, więc ta opcja nie ma znaczenia. Rozumiem, że w systemie Windows 7 nie musisz określać użytkownika po / usuń: d, ale mogę się mylić!
.
DODATEK (2019/11/21) -
Użytkownik z uwagą zaleca zastąpienie Wszyscy terminem * S-1-1-0, aby polecenie było niezależne od języka. Mam tylko angielską instalację systemu Windows, więc nie mogę przetestować tej propozycji, ale wydaje się rozsądna.
Invalid parameter "/remove:d"
Walczyłem z tym na chwilę i tylko łącząc odpowiedź w tym wątku pracował dla mnie (w systemie Windows 10):
1. Otwórz cmd lub PowerShell i przejdź do folderu z plikami
2. takeown / R / F .
3. icacls * / T / grant dan: F
Powodzenia!
Na wszelki wypadek, gdy ktoś potknie się na tej stronie, jeśli chcesz połączyć różne uprawnienia razem w jednym poleceniu, użyłem tego:
icacls "c:\TestFolder" /grant:r Test_User:(OI)(CI)(RC,RD,RX)
Zanotuj ciąg csv dla różnych uprawnień.
Ze skryptem Excel vba do obsługi i tworzenia kont. Musiałem przyznać pełne uprawnienia do folderu i podfolderów, które zostały utworzone przez narzędzie przy użyciu konta x administratora naszego nowego użytkownika.
cacls wyglądał mniej więcej tak: cacls \ FileServer \ Users \ Nazwa użytkownika / e / g Domena \ Nazwa użytkownika: C
Musiałem migrować ten kod do systemu Windows 7 i nowszych wersji. Moje rozwiązanie okazało się:
icacls \ FileServer \ Users \ Nazwa użytkownika / grant: r Domena \ Nazwa użytkownika: (OI) (CI) F / t
/ grant: r - przyznaje określone prawa dostępu użytkownika. Uprawnienia zastępują wcześniej przyznane uprawnienia jawne. Bez: r uprawnienia są dodawane do wszelkich wcześniej przyznanych jawnych uprawnień
(OI) (CI) - ten folder, podfoldery i pliki.
F - Pełny dostęp
/ t - przeglądaj wszystkie podfoldery, aby dopasować pliki / katalogi.
To, co mi to dało, to folder na tym serwerze, który użytkownik widział tylko w tym folderze i tworzył podfoldery, aby mógł czytać i zapisywać pliki. Jak również tworzyć nowe foldery.
XCACLS.VBS to bardzo wydajny skrypt, który zmienia / edytuje informacje ACL. c: \ windows \ system32 \ cscript.exe xcacls.vbs pomaga zwrócić wszystkie przełączniki i opcje.
Oficjalną dystrybucję można uzyskać ze strony pomocy technicznej Microsoft
XCACLS.VBS
można znaleźć?
Zbiorowe tworzenie folderów i udzielanie uprawnień działa przy użyciu poniższego skryptu PowerShell.
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
}
Uwaga: musisz utworzyć tę samą nazwę użytkownika domeny w pliku csv, w przeciwnym razie wystąpią problemy z uprawnieniami
attrib +r +a +s +h <folder name> <file name> to hide
attrib -r -a -s -h <folder name> <file name> to unhide
ocena doskonała Călin Darie
Miałem wiele skryptów do użycia caclów. Przenoszę je do icaclów, jakkolwiek nigdy nie mogłem znaleźć skryptu, aby zmienić przykładowy wolumin montowania katalogu głównego: d: \ datafolder. W końcu stworzyłem poniższy skrypt, który montuje wolumin jako dysk tymczasowy, a następnie stosuje sek. następnie odmontowuje. Jest to jedyny sposób, w jaki odkryłem, że możesz zaktualizować zabezpieczenia montowania roota.
1 pobiera identyfikator GUID podłączenia folderu do pliku tymczasowego, a następnie odczytuje identyfikator GUID, aby zamontować wolumin jako dysk tymczasowy X: stosuje sec i rejestruje zmiany, a następnie odmontowuje wolumin tylko z dysku X: tak, aby zamontowany folder nie był zmieniany ani przerywany innym następnie zastosował ust.
oto przykład mojego skryptu:
**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**
Jestem administratorem, a niektóre skrypty nadały mojej nazwie uprawnienia „Odmów” dla wszystkich plików i podfolderów w katalogu. Wykonanie icacls "D:\test" /grant John:(OI)(CI)F /T
polecenia nie działało, ponieważ wydawało się, że nie usunęło ono „Odmów” bezpośrednio z mojego nazwiska z tej listy.
Jedyną rzeczą, która działała dla mnie, było zresetowanie wszystkich uprawnień za pomocą icacls "D:\test" /reset /T
polecenia.
w systemie Windows 10 działającym bez „c:>” i „>”
Na przykład:
F = Full Control
/e : Edit permission and kept old permission
/p : Set new permission
cacls „ścieżka pliku lub folderu” / e / p Nazwa użytkownika: F
(także to naprawia błąd 2502 i 2503)
cacls "C: \ Windows \ Temp" / e / p Nazwa użytkownika: F
Oto, co zadziałało dla mnie:
Ręcznie otwórz folder, do którego odmówiono dostępu.
Wybierz plik wykonywalny / aplikacji w tym folderze.
Kliknij go prawym przyciskiem myszy i przejdź do Properties->Compatibility
Teraz zobacz Privilege Leveli sprawdźRun As Administrator
Kliknij na Change Settings for all users.
Problem został rozwiązany teraz.