Windows 언어에 관계없이 ICACLS 명령이 모든 사람에게 모든 권한을 갖도록 폴더를 설정하려면 어떻게해야합니까?


9

배경

이 명령이 있다고 해

icacls C:\FullyAccessibleFolder /grant Users:(OI)(CI)F

이것은 영어 버전의 Windows에서는 잘 작동하지만 프랑스어 버전에서는 작동하지 않는 것 같습니다 Users. 프랑스어와 다르기 때문에 다음 오류가 발생했을 수 있습니다. Windows에서 Everyone와 같이 번역 Tout le monde되므로 솔루션도 아닙니다.

Users: Le mappage entre les noms de compte et les ID de sécurité n'a pas été effectué.

어떤 Google이로 번역

Users: The mapping between account names and security IDs was not performed.

질문

다른 언어 버전의 Windows에서 작동하는 방식으로 모든 사용자에게 모든 권한을 갖도록 폴더 및 모든 내용을 재귀 적으로 설정하는 데 사용할 수있는 명령이 있습니까?

웹상의 콘텐츠

독일어와 프랑스어 Everyone가 어떻게되는지에 대해 비슷한 문제가있는 이 페이지Jeder 에서 설명합니다 Tout le monde.


2
SID를 사용하십시오 : icacls C:\FullyAccessibleFolder /grant S-1-5-32-545:(OI)(CI)F 모든 곳에서 작동합니다.
Ben

2
@Ben, icacls C:\folder /grant *S-1-5-32-545:(OI)(CI)F그럴 것입니다. 별표를 생략했습니다.
Harry Johnston

답변:


10

아마도 Users다른 버전으로 인해 프랑스어 버전에서는 작동하지 않습니다.

아래에 자세히 설명 된 세 가지 옵션이 있습니다.

  1. 언어 포털 을 사용 하여 번역 된 이름을 얻으십시오.

  2. UsersSID 에서 현지화 된 이름 검색

  3. 사용 Users에 SID를icacls


옵션 1 : 언어 포털 사용 (Microsoft 용어에 대한 표준 자원)

사용자를 검색하면 다음이 반환됩니다.

현지화 된 Microsoft 제품의 번역

    English Translation         Product
    Users   Utilisateurs        Windows 7
    Users   des utilisateurs    Windows 7
    Users   Utilisateurs        Windows 8 Modern Voice
    Users   Utilisateurs        Windows 8
    Users   Utilisateurs        Windows 8.1
    USERS   UTILISATEURS        Windows 8.1
    Users   Utilisateurs        Windows 10
    Users   des utilisateurs    Windows 10
    Users   Utilisateurs        Windows 10 Anniversary Update
    users   utilisateurs        Windows 10 Anniversary Update

이것은 다음 명령이 작동 할 수 있음을 나타냅니다.

icacls C:\FullyAccessibleFolder /grant Utilisateurs:(OI)(CI)F

옵션 2 : UsersSID 에서 현지화 된 이름 검색 ( S-1-5-32-545)

SID : S-1-5-32-545

이름 : 사용자

설명 : 내장 그룹. 운영 체제를 처음 설치 한 후 유일한 멤버는 인증 된 사용자 그룹입니다. 컴퓨터가 도메인에 가입하면 도메인 사용자 그룹이 컴퓨터의 사용자 그룹에 추가됩니다.

Windows 운영 체제의 소스 잘 알려진 보안 식별자

현지화 된 Users그룹 이름 을 검색하려면 다음을 수행하십시오.

이 간단한 스크립트는 (S-1-5-32-545)주어진 PC에서 'Users' 그룹 의 실제 이름을 제공합니다 .

    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
    Set objAccount = objWMIService.Get ("Win32_SID.SID='S-1-5-32-545'")
    Wscript.Echo objAccount.AccountName

확장자가 vbs 인 파일에 넣으십시오 (가정이라고 가정 usersName.vbs).

이제 다음을 실행하십시오.

echo Y|for /f "delims=" %i in ('cscript -Nologo usersName.vbs') do cacls foldername /G "%i":F

Source Cacls, Windows 7, 전체 권한, 로컬 이름 ( wmz)


옵션 3 : UsersSID와 함께 사용icacls

다음 명령을 사용하십시오.

icacls C:\FullyAccessibleFolder /grant *S-1-5-32-545:(OI)(CI)F

Harry Johnston의 출처 댓글


DavidPostill의 대답은 실제 명령 줄 방식과 동일하므로 배치 또는 PS 스크립트를 사용할 때 좋습니다. 결국 나는 실제로 C #에서 작은 실행 파일을 만들었습니다. 여기 답변만큼 사용자 정의 할 수 없으며 .NET Framework가 필요하지만 특정 목적에 매우 적합합니다. 누군가 관심이 있다면, 내가 끝낸 C # 코드의 기초입니다. stackoverflow.com/a/35461832/1639615
Geesh_SO

xcacls다운로드 할 수있는 스크립트 인 것 같습니다. 필요가 없습니다. icaclsWindows에 내장되어 있으며 동일한 작업을 수행 할 수 있습니다.
Harry Johnston

@HarryJohnston 맞지만, 내 대답은 지역화 된 버전을 검색하는 방법을 보여줍니다 Users... xacls인용 된 솔루션 의 일부가 필요하지 않으므로 답변을 명확히했습니다 .
DavidPostill

@HarryJohnston 나는 또한 icacls당신에게 직접 신용을 사용하여 추가했습니다 .
DavidPostill

7

AD 그룹은 이름이 아니라 SID 번호로 지정해야합니다.
"EveryOne", "도메인 사용자"등과 같은 표준 그룹의 경우 표준화 된 SID 번호가 있으며 MSDN 페이지 SID (잘 알려진 보안 식별자) 에서 찾을 수 있습니다 .

다음은 가장 일반적인 상대 식별자입니다.

여기에 이미지 설명을 입력하십시오

SID의 구조는 다음과 같이 설명됩니다.

표준 표기법을 사용하여 SID를 이진에서 문자열 형식으로 변환하면 SID의 구성 요소를보다 쉽게 ​​시각화 할 수 있습니다.

SRX-Y1-Y2-Yn-1-Yn

    Component                   Definition

    S                         Indicates that the string is a SID
    R                         Revision level
    X                         Identifier authority value
    Y            A series of subauthority values, where n is the number of values

예를 들어 기본 제공 Administrators 그룹의 SID는 표준화 된 SID 표기법으로 다음 문자열로 표시됩니다.

S-1-5-32-544

이 SID에는 네 가지 구성 요소가 있습니다.

  • 개정 레벨 (1)

  • 식별자 권한 값 (5, NT 권한)

  • 도메인 식별자 (32, 내장)

  • 상대 식별자 (544, 관리자)

보안 식별자 작동 방식


모든 사용자가 기본적으로 사용자 그룹의 일부임을 지적하는 것이 좋습니다. 그래서 당신은 "전체 액세스 권한을 부여 할 경우 모든 사용자가 계정에, 단지 SID를 사용하여 S-1-5-32-544해당 파일이나 폴더의 그룹에 모든 권한을 부여하기 위해 ACL을 한 다음 수정
Ramhound

@Ramhound 544는 관리자이고 545사용자입니다.
DavidPostill

@DavidPostill-예; 복사하여 붙여 넣기 오류가 발생했습니다.
Ramhound

@Ramhound 훨씬 낫다. 전화를받는 동안 최선을 다했습니다. 편집 해 주셔서 감사합니다.
Tonny

3

PowerShell 스크립트를 좋아하지만 SID의 숫자를 기억하는 데 문제가있는 경우 :

$acl = Get-Acl .\myfolder
$sid = New-Object System.Security.Principal.SecurityIdentifier ([System.Security.Principal.WellKnownSidType]::BuiltinUsersSid, $null)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule ($sid, 'FullControl', 'ObjectInherit,ContainerInherit', 'None', 'Allow')
$acl.AddAccessRule($rule)
Set-Acl .\myfolder $acl

나는 타이핑하는 것처럼 보이지만 긴 식별자는 탭으로 완성됩니다.

  • System.Security.Principal.SecurityIdentifier ...에서 securityi
  • System.Security.Principal.WellKnownSidType ...에서 wellknownsi
  • System.Security.AccessControl.FileSystemAccessRule ...에서 filesystem

이 모든 문자열은 .NET 식별자이므로 현지화되지 않습니다.

당신이 원하는 경우 Everyone대신 SID를 사용하는 WorldSid대신에 BuiltinUsersSid. 모든 WellKnownSidType옵션 목록을 보려면 MSDN을 참조 하거나 다음 명령을 실행하십시오.

[System.Security.Principal.WellKnownSidType].DeclaredFields | select Name

FileSystemAccessRule 없이 시드 및 사용 group names?
Kiquenet

@Kiquenet 나는 당신이 요구하는 것을 완전히 확신하지 못하지만, 사람이 읽을 수있는 그룹 이름을 지정하고 싶다면 더 이상 언어 독립적이지 않습니다. 그 나왔습니다 확인 당신이 경우 제거 할 수 있습니다 $sid =라인 및 교체 $sid에서 $rule =그룹을 식별하는 문자열과 일치.
벤 N
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.