Как предоставить пользователям разрешения для каталога с помощью командной строки в Windows?



Как я могу предоставить разрешения пользователю на каталог (чтение, запись, изменение) с помощью командной строки Windows?

893   15  

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

Примечания:

  1. команда применяется к указанному каталогу.

  2. указание пользователя " все " устанавливает максимально широкое разрешение, так как оно включает возможных пользователей.

  3. опция " / remove:d" удаляет все явные параметры запрета, которые могут существовать, поскольку они переопределяют явные параметры разрешения: необходимое предварительное создание нового параметра разрешения.

  4. параметр " / grant "создает новый параметр ALLOW, явное разрешение, которое заменяет (": r") любые и все явные параметры ALLOW, которые могут существовать.

  5. параметр " F " (т. е. созданное разрешение) делает это предоставление полного контроля.

  6. параметр " /T добавляет рекурсию, применяя эти изменения ко всем настоящее подобъекты в указанном каталоге (т. е. файлы и подпапки), а также сама папка.

  7. параметры "(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 команда не работала, потому что, казалось, она не удаляла "запретить" прямо из моего имени из этого списка.

единственное, что работал для меня-это сброс всех разрешений с

вот что сработало для меня:

  1. вручную откройте папку, для которой отказано в доступе.

  2. выберите исполняемый файл / приложение в этой папке.

  3. щелкните правой кнопкой мыши на нем и перейдите к свойства ->совместимость

  4. видим Уровень Привилегий и Запуск От Имени Администратор

  5. нажать на кнопку изменить параметры для всех пользователей.

теперь проблема решена.

Comments

    Ничего не найдено.