Відповіді:
Станом на Vista, cacls
застаріла. Ось перша пара довідок:
C:\>cacls
NOTE: Cacls is now deprecated, please use Icacls.
Displays or modifies access control lists (ACLs) of files
Ви повинні використовувати icacls
замість цього. Ось як ви надаєте Джону повний контроль над D:\test
папкою та всіма її папками:
C:\>icacls "D:\test" /grant John:(OI)(CI)F /T
Відповідно до документації MS:
F
= Повний контрольCI
= Контейнерна спадщина - Цей прапор вказує, що підлеглі контейнери успадкують цей ACE.OI
= Об'єктна спадщина - Цей прапор вказує, що підлеглі файли успадкують ACE./T
= Застосовувати рекурсивно до існуючих файлів і підпапок. ( OI
і CI
стосується лише нових файлів і підпапок). Кредит: коментар @AlexSpenceДля повної документації ви можете " icacls
" працювати без аргументів або бачити документацію Microsoft тут і тут
C:\>icacls "D:\test" /grant "John:(OI)(CI)F" /T
Ви також можете використовувати ICACLS.
Щоб надати Групі користувачів повний контроль папці:
>icacls "C:\MyFolder" /grant Users:F
Щоб надати Модифікація дозволу користувачам IIS для C:\MyFolder
(якщо вам потрібен, ваш IIS має можливість R / W файлів у певну папку):
>icacls "C:\MyFolder" /grant IIS_IUSRS:M
Якщо ви робите ICACLS /? ви зможете побачити всі доступні варіанти.
cacls
цього немає, це ще більше причин використовувати icacls .
/grant Users:(OI)(CI)F
використовувався
Users
чимось іншим чи НІ? Згідноicacls "C:\MyFolder" /grant Users:F
Відкрийте командний рядок і виконайте цю команду:
icacls "c:\somelocation\of\path" /q /c /t /grant Users:F
F
надає повний доступ.
/q /c /t
застосовує дозволи до підпапок.
Примітка. Іноді допоможе "Запустити як адміністратор".
Використовувати cacls
команду. Інформацію дивіться тут .
Файли CACLS / e / p {USERNAME}: {PERMISSION}
Де,
/ p: Встановити новий дозвіл
/ e: Редагування дозволу та збереження старого дозволу, оскільки воно є, тобто редагування ACL замість заміни.
{USERNAME}: Ім'я користувача
{ДОКУМЕНТ}: Дозвіл може бути:
R - Прочитайте
W - Пишіть
C - Змінити (написати)
F - Повний контроль
Наприклад, надайте управління Rocky Full (F) за допомогою наступної команди (введіть у командному рядку Windows):
C:> Файли CACLS / e / p rocky: f
Прочитайте повну допомогу, набравши наступну команду:
C:> cacls /?
cacls
актуально; він по - , як і раніше доступний в Windows 10
; Microsoft також знехтувала cmd.exe
на користь Powershell.
cmd.exe
не є застарілим і, швидше за все, не буде, тому це зовсім не на користь icacls
, а навпаки.
Пошкоджені дозволи: відновлення доступу до папки та її підметів
Хоча більшість відповідей, розміщених у відповіді на запитання, мають певні заслуги, жодна з них не дає повноцінного рішення. Наступне (можливо,) ідеальне рішення для Windows 7, якщо ви заблоковані з папки пошкодженими налаштуваннями дозволу:
icacls "c:\folder" /remove:d /grant:r Everyone:(OI)(CI)F /T
Для Windows 10 користувач / SID повинен бути вказаний після /remove:d
параметра:
icacls "c:\folder" /remove:d Everyone /grant:r Everyone:(OI)(CI)F /T
.
Примітки :
Команда застосовується до вказаного каталогу.
Вказавши користувача "Усі" встановлює максимально широкий дозвіл, оскільки він включає кожного можливого користувача.
Опція "/ delete: d" видаляє будь-які явні параметри DENY, які можуть існувати, оскільки вони перекривають явні налаштування ALLOW: необхідний попередній для створення нового параметра ALLOW. Це лише обережність, оскільки часто немає ДЕНІ налаштувань, але краще безпечно, ніж шкода.
Параметр "/ grant" створює нове налаштування ALLOW, явний дозвіл, який замінює (": r") будь-які та всі явні установки ALLOW, які можуть існувати.
Параметр "F" (тобто створений дозвіл) робить це дозволом FULL управління.
Параметр "/ T" додає рекурсію, застосовуючи ці зміни до всіх поточних суб'єктів у вказаному каталозі (тобто файлах і папках), а також до самої папки.
Параметри "(OI)" і "(CI)" також додають рекурсію, застосовуючи ці зміни до створених згодом суб'єктів.
.
ДОДАТОК (2019/02/10) -
Командний рядок Windows 10 вище мені було ласкаво запропоновано сьогодні, ось ось воно. У мене немає Windows 10 для тестування, але будь ласка, спробуйте, якщо у вас є (і тоді ви, будь ласка, опублікуйте коментар нижче).
Ця зміна стосується лише видалення параметра DENY як першого кроку. Можливо, немає ніяких налаштувань DENY, тому ця опція може не мати ніякого значення. Наскільки я розумію, в Windows 7, що вам не потрібно вказувати користувача після / видалення: d але я можу помилитися з цього приводу!
.
ДОБАВЛЕННЯ (2019/11/21) -
Користувач astark рекомендує замінити кожному термін * S-1-1-0, щоб команда була незалежною від мови. У мене є лише англійська версія Windows, тому я не можу перевірити цю пропозицію, але це здається розумним.
Invalid parameter "/remove:d"
Я боровся з цим на деякий час і тільки комбінуючи відповіді в цій темі працював для мене (на Windows 10):
1. Відкрийте CMD або PowerShell і перейдіть в папку з файлами
2. takeown / R / F .
3. icacls * / T / grant dan: F
Удачі!
На всякий випадок, якщо на цій сторінці хтось інший натикається, якщо ви хочете з'єднати різні дозволи разом в одній команді, я використав це:
icacls "c:\TestFolder" /grant:r Test_User:(OI)(CI)(RC,RD,RX)
Зверніть увагу на рядок csv для різних дозволів.
За допомогою сценарію Excel vba для забезпечення та створення облікових записів. Мені потрібно було надати повні права на папки та підпапки, створені інструментом за допомогою x-акаунта адміністраторів нашого нового користувача.
cacls виглядав приблизно так: cacls \ FileServer \ Користувачі \ Ім'я користувача / e / g Домен \ Ім'я користувача: C
Мені потрібно було перенести цей код на Windows 7 і вище. Моє рішення виявилося таким:
icacls \ FileServer \ Користувачі \ Ім'я користувача / грант: r Домен \ Ім'я користувача: (OI) (CI) F / t
/ grant: r - надає вказані права доступу користувача. Дозволи дозволяють замінити раніше надані явні дозволи. Без: r, дозволи додаються до будь-яких раніше наданих явних дозволів
(OI) (CI) - ця папка, підпапки та файли.
F - Повний доступ
/ t - Перемістіть усі підпапки для відповідності файлів / каталогів.
Це дало мені папку на цьому сервері, що користувач міг бачити лише цю папку і створював підпапки, щоб вони могли читати та писати файли. А також створити нові папки.
XCACLS.VBS - це дуже потужний сценарій, який буде змінювати / редагувати інформацію про ACL. c: \ windows \ system32 \ cscript.exe xcacls.vbs допоможе повернути всі комутатори та параметри.
Офіційний розподіл можна отримати на сторінці підтримки Microsoft
XCACLS.VBS
її можна знайти?
Створення масових папок та надання дозволу працює на мене, використовуючи наведений нижче сценарій повноважень.
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
}
Примітка. Вам потрібно створити те саме ім’я користувача домену у файлі csv, інакше ви отримаєте проблеми з дозволом
attrib +r +a +s +h <folder name> <file name> to hide
attrib -r -a -s -h <folder name> <file name> to unhide
чудовий момент Călin Darie
У мене було багато сценаріїв для використання cacls, я переміщу їх у icacls, тому що коли-небудь я не міг знайти скрипт для зміни прикладу томів кореневого кріплення: d: \ datafolder. Нарешті я розробив сценарій нижче, який встановлює гучність як тимчасовий диск, а потім застосовує sec. потім відключає його. Це єдиний спосіб, коли я виявив, що ви можете оновити захист кореневого монтажу.
1 отримує GUID кріплення папки до тимчасового файлу, потім читає GUID для монтажу гучності як темп-накопичувача X: застосовує sec та реєструє зміни, після чого відключає гучність лише з диска X: так що змонтована папка не змінюється і не переривається інше потім застосовується сек.
ось зразок мого сценарію:
**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**
Я адміністратор, і якийсь сценарій розмістив дозвіл "Заборонити" на моє ім'я для всіх файлів і папок у каталозі. Виконанняicacls "D:\test" /grant John:(OI)(CI)F /T
команди не спрацювало, тому що, здавалося, вона не видалила "Заборонити" прямо з мого імені зі цього списку.
Єдине, що працювало для мене, - це скидання всіх дозволів за допомогою icacls "D:\test" /reset /T
команди.
Це для мене працювало:
Вручну відкрийте папку, до якої заборонено доступ.
Виберіть виконуваний файл / файл програми у цій папці.
Клацніть по ньому правою кнопкою миші та перейдіть до Properties->Compatibility
Тепер подивіться Privilege Levelта перевірте цеRun As Administrator
Натисніть на Change Settings for all users.
Проблема вирішена зараз.