15 ответов:
по состоянию на Vista,
caclsустарела. Вот первые несколько строк справки:C:\>cacls NOTE: Cacls is now deprecated, please use Icacls. Displays or modifies access control lists (ACLs) of filesвы должны использовать . Вот как вы даете Джону полный контроль над
D:\testпапка и все ее подпапки:C:\>icacls "D:\test" /grant John:(OI)(CI)F /Tсогласно документации MS:
F= Полный КонтрольCI= Container Inherit - этот флаг указывает, что подчиненные контейнеры наследуют этот ACE.OI= Object Inherit - этот флаг указывает, что подчиненные файлы наследуют ACE./T= применить рекурсивно к существующим файлам и подпапкам. (OIиCIприменяется только к новым файлам и подпапкам). Кредит: комментарий @AlexSpence.для получения всей документации вы можете запустить "
icacls" без аргументов или см. документацию Microsoft здесь и здесь
вы также можете использовать ICACLS.
предоставить пользователи группа Полный Контроль в папку:
>icacls "C:\MyFolder" /grant Users:Fпредоставить изменить разрешение для пользователей IIS для
C:\MyFolder(Если вам нужен ваш IIS имеет возможность R / W файлы в определенную папку):>icacls "C:\MyFolder" /grant IIS_IUSRS:MЕсли у вас ICACLS /? вы сможете увидеть все доступные варианты.
использовать . Смотрите информацию здесь.
CACLS files /e / p {USERNAME}: {PERMISSION}
здесь
/P : установить новое разрешение
/e: редактировать разрешение и сохранить старое разрешение, как оно есть, т. е. редактировать ACL вместо его замены.
{USERNAME}: имя пользователя
{разрешение} : разрешение может быть:
R-Read
W-Write
C-изменить (написать)
F - полный контроль
например, предоставьте Rocky Full (F) control со следующей командой (введите в командной строке Windows):
C:> CACLS files /e / p rocky: f
Читать полную справку, введя следующую команду:
C:> cacls /?
Откройте командную строку и выполните следующую команду:
icacls "c:\somelocation\of\path" /q /c /t /grant Users:F
Fдает полный доступ.
/q /c /tприменяет разрешения к подпапкам.Примечание: иногда "Запуск от имени администратора" поможет.
Я стараюсь ниже способ, и это работает для меня:
1. откройcmd.exe
2.takeown /R /F *.*
3.icacls * /T /grant [username]:(D)
4.del *.* /S /Qтак что файлы могут стать моим собственным доступом и назначить "удалить", а затем я могу удалить файлы и папки.
Я боролся с этим некоторое время и только объединение ответов в этой теме работало для меня (на Windows 10):
1. Открыть cmd или PowerShell и перейдите в папку с файлами
2. takeown /R / F .
3. icacls * /T / grant dan: Fудачи!
с помощью скрипта Excel vba для подготовки и создания учетных записей. Мне нужно было предоставить полные права доступа к папке и подпапкам, которые были созданы инструментом с помощью нашей учетной записи администратора " x " для нашего нового пользователя.
cacls выглядел примерно так: команды cacls \файловый сервер\Пользователи\Имя пользователя /е /г "домен\Имя_пользователя": с
Мне нужно было перенести этот код в Windows 7 и выше. Мое решение оказалось следующим:
icacls \FileServer\Users\Username / grant:r Домен\имя пользователя:(OI) (CI) F /t
/ grant: r-предоставляет определенные права доступа пользователя. Разрешения заменяют ранее предоставленные явные разрешения. Без :r разрешения добавляются к любым ранее предоставленным явным разрешениям
(OI) (CI) - это папка, подпапки и файлы.
F - Полный Доступ
/t-пройдите все подпапки, чтобы соответствовать файлам / каталогам.
что это дало мне была папка на этом сервере, что пользователь мог только вижу, что папки и подпапки, чтобы они могли читать и записывать файлы. А также создавать новые папки.
на всякий случай есть кто-то еще, что натыкается на этой странице, если вы хотите, чтобы строка различных разрешений вместе в одной команде, я использовал это:
icacls "c:\TestFolder" /grant:r Test_User:(OI)(CI)(RC,RD,RX)обратите внимание на строку CSV для различных разрешений.
хотя большинство ответов, опубликованных в ответ на вопрос, имеют некоторые достоинства, ИМХО ни один из них не дает полного решения. Следующее является идеальным решением:
icacls "c:\folder" /remove:d /grant:r Everyone:(OI)(CI)F /TПримечания:
команда применяется к указанному каталогу.
указание пользователя " все " устанавливает максимально широкое разрешение, так как оно включает возможных пользователей.
опция " / remove:d" удаляет все явные параметры запрета, которые могут существовать, поскольку они переопределяют явные параметры разрешения: необходимое предварительное создание нового параметра разрешения.
параметр " / grant "создает новый параметр ALLOW, явное разрешение, которое заменяет (": r") любые и все явные параметры ALLOW, которые могут существовать.
параметр " F " (т. е. созданное разрешение) делает это предоставление полного контроля.
параметр " /T добавляет рекурсию, применяя эти изменения ко всем настоящее подобъекты в указанном каталоге (т. е. файлы и подпапки), а также сама папка.
параметры "(OI)" и "(CI)" также добавляют рекурсию, применяя эти изменения к подобъектам, созданным в будущем.
XCACLS.VBS-это очень мощный скрипт, который будет изменять / редактировать информацию ACL. c:\windows\system32\cscript.exe xcacls.справка vbs возвращает все переключатели и параметры.
вы можете получить официальный дистрибутив от Страница Поддержки Microsoft
массовое создание папок и предоставление разрешения работает со мной с помощью приведенного ниже сценария powershell.
"Импорт" -CSV-Файла "D:\Scripts\foldernames.КШМ" | по каждому объекту { $имя пользователя._$ = имя_папки
# 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. Я, наконец, создал сценарий ниже, который монтирует том в качестве временного диска, затем применяет сек. затем размонтирует его. Это единственный способ, которым я обнаружил, что вы можете обновить безопасность корневого монтирования.
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команда не работала, потому что, казалось, она не удаляла "запретить" прямо из моего имени из этого списка.единственное, что работал для меня-это сброс всех разрешений с
вот что сработало для меня:
вручную откройте папку, для которой отказано в доступе.
выберите исполняемый файл / приложение в этой папке.
щелкните правой кнопкой мыши на нем и перейдите к свойства ->совместимость
видим Уровень Привилегий и Запуск От Имени Администратор
нажать на кнопку изменить параметры для всех пользователей.
теперь проблема решена.
Comments