답변:
Vista에서는 cacls
더 이상 사용되지 않습니다. 첫 번째 도움말 라인은 다음과 같습니다.
C:\>cacls
NOTE: Cacls is now deprecated, please use Icacls.
Displays or modifies access control lists (ACLs) of files
icacls
대신 사용해야 합니다. John에게 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 설명서를 참조 하십시오.
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
다른 것 또는 NO 로 교체해야 합니까? 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} : 사용자 이름
{PERMISSION} : 권한은 다음과 같습니다.
R-읽기
W-쓰기
C-변경 (쓰기)
F-모든 권한
예를 들어 다음 명령을 사용하여 Rocky Full (F) 제어 권한을 부여하십시오 (Windows 명령 프롬프트에서 입력).
C :> CACLS 파일 / e / p rocky : f
다음 명령을 입력하여 전체 도움말을 읽으십시오.
C :> cacls /?
cmd.exe
더 이상 사용되지 않으며 가능성이 높지 않으므로 전혀 반대되는 점이 아닙니다 icacls
.
손상된 권한 : 폴더 및 해당 하위 개체에 대한 액세스 권한 얻기
질문에 대한 답변으로 게시 된 대부분의 답변에는 장점이 있지만 IMHO는 완벽한 솔루션을 제공하지 않습니다. 다음 은 권한 설정이 손상되어 폴더가 잠겨있는 경우 Windows 7을 위한 완벽한 솔루션입니다 .
icacls "c:\folder" /remove:d /grant:r Everyone:(OI)(CI)F /T
들어 윈도우 10 사용자 / SID는 이후에 지정해야합니다 /remove:d
옵션 :
icacls "c:\folder" /remove:d Everyone /grant:r Everyone:(OI)(CI)F /T
.
참고 사항 :
명령이 지정된 디렉토리에 적용됩니다.
사용자 "모두"를 지정하면 가능한 모든 사용자가 포함되므로 가장 넓은 권한을 설정합니다 .
"/ remove : d"옵션은 명시 적 ALLOW 설정을 덮어 쓰기 때문에 존재할 수있는 명시 적 DENY 설정을 삭제합니다. 새 ALLOW 설정을 작성하는 데 필요한 예비입니다. DENY 설정이없는 경우가 많지만, 미안보다 안전하기 때문에 이것은 예방책 일뿐입니다.
"/ grant"옵션은 존재할 수있는 모든 명시 적 ALLOW 설정을 대체하는 명시 적 권한 인 새 ALLOW 설정을 작성합니다.
"F"매개 변수 (즉, 작성된 권한)는이를 FULL 제어 권한을 부여합니다.
"/ T"매개 변수는 폴더 자체뿐만 아니라 지정된 디렉토리 (예 : 파일 및 하위 폴더)의 모든 현재 하위 오브젝트에 이러한 변경 사항을 적용하여 재귀를 추가 합니다.
"(OI)"및 "(CI)"매개 변수는 재귀를 추가하여이 변경 사항을 이후에 작성된 하위 오브젝트에 적용합니다.
.
부록 (2019/02/10) -
윈도우 10 명령 행 위의 친절 오늘 나에게 제안했다, 그래서 여기있다. 나는 그것을 테스트 할 Windows 10을 가지고 있지 않지만, 가지고 있다면 그것을 사용해보십시오 (그리고 아래 에 의견을 게시 하십시오 ).
첫 단계로 거부 설정을 제거하는 것만 변경됩니다. DENY 설정이 없을 수 있으므로 옵션에 차이가 없을 수 있습니다. Windows 7에서는 / remove : d 다음에 사용자를 지정할 필요가 없지만 이해가 잘못되었습니다.
.
부록 (2019/11/21) -
사용자 astark 는 명령이 언어 독립적이되도록 Everyone 을 * S-1-1-0이라는 용어로 바꾸는 것이 좋습니다 . 영어로만 Windows를 설치 했으므로이 제안을 테스트 할 수 없지만 합리적으로 보입니다.
Invalid parameter "/remove:d"
Excel vba 스크립트를 사용하여 계정을 프로비저닝하고 작성하십시오. 새 사용자에게 관리자 'x'계정을 사용하여 도구로 만든 폴더 및 하위 폴더에 대한 모든 권한을 부여해야했습니다.
cacls는 다음과 같습니다 : cacls \ FileServer \ Users \ Username / e / g Domain \ Username : C
이 코드를 Windows 7 이상으로 마이그레이션해야했습니다. 내 솔루션은 다음과 같습니다.
icacls \ FileServer \ Users \ Username / grant : 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
찾을 수 있는지 참조 할 수 있습니까?
대량 폴더 생성 및 권한 부여 권한은 아래 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
}
참고 : 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.
이제 문제가 해결되었습니다.