1.10. smbcacls를 사용하여 SMB 공유에서 ACL 관리
smbcacls
유틸리티는 SMB 공유에 저장된 파일 및 디렉터리의 ACL을 나열, 설정 및 삭제할 수 있습니다. smbcacls
를 사용하여 파일 시스템 ACL을 관리할 수 있습니다.
- 고급 Windows ACL 또는 POSIX ACL을 사용하는 로컬 또는 원격 Samba 서버에서
- Windows에서 호스팅되는 공유에 대한 ACL을 원격으로 관리하려면 Red Hat Enterprise Linux에서
1.10.1. 액세스 제어 항목
파일 시스템 오브젝트의 각 ACL 항목에는 다음 형식으로 ACE(Access Control Entries)가 포함되어 있습니다.
security_principal:access_right/inheritance_information/permissions
예 1.3. 액세스 제어 항목
AD\Domain Users
그룹에 이 폴더, 하위 폴더 및 Windows의 파일에
적용되는 수정
권한이 있는 경우 ACL에 다음 ACE가 포함됩니다.
AD\Domain Users:ALLOWED/OI|CI/CHANGE
ACE에는 다음 부분이 포함되어 있습니다.
- 보안 주체
- 보안 주체는 ACL의 권한이 적용되는 사용자, 그룹 또는 SID입니다.
- 액세스 권한
-
오브젝트에 대한 액세스 허용 또는 거부 여부를 정의합니다. 값은
ALLOWED
또는DENIED
일 수 있습니다. - 상속 정보
다음 값이 있습니다.
표 1.1. 상속 설정
값 설명 매핑 OI
Object Inherit
이 폴더 및 파일
CI
Container Inherit
이 폴더 및 하위 폴더
IO
상속만
현재 파일 또는 디렉터리에는 ACE가 적용되지 않습니다.
ID
inherited
상위 디렉토리에서 ACE를 상속했습니다.
또한 값은 다음과 같이 결합할 수 있습니다.
표 1.2. 상속 설정 조합
값 조합 Windows에 매핑하여 설정할 수
있습니다.OI|CI
이 폴더, 하위 폴더 및 파일
OI|CI|IO
하위 폴더 및 파일만
CI|IO
하위 폴더만 해당
OI|IO
파일만
- 권한
이 값은 하나 이상의 Windows 권한 또는 rootfs
cacls
별칭을 나타내는 16진수 값일 수 있습니다.하나 이상의 Windows 권한을 나타내는 16진수 값입니다.A hex value that represents one or more Windows permissions.
다음 표에서는 고급 Windows 권한 및 해당 값을 16진수 형식으로 표시합니다.
표 1.3. Windows 권한 및 해당 rootfscacls 값 16진수 형식
Windows 권한 Hex 값 완전 제어
0x001F01FF
트래버스 폴더/실행 파일
0x00100020
목록 / 읽기 데이터
0x00100001
읽기 속성
0x00100080
확장 속성 읽기
0x00100008
파일 생성 / 쓰기
0x00100002
폴더 생성 / 데이터 추가
0x00100004
쓰기 속성
0x00100100
확장 속성 작성
0x00100010
하위 폴더 및 파일 삭제
0x00100040
delete
0x00110000
읽기 권한
0x00120000
권한 변경
0x00140000
소유권 가져오기
0x00180000
비트 단위
OR
작업을 사용하여 여러 권한을 단일 16진수 값으로 결합할 수 있습니다.
자세한 내용은 ACE 마스크 계산을 참조하십시오.
Net
Namespacecacls
별칭. 다음 표에서 사용 가능한 별칭을 표시합니다.표 1.4. 기존 pvccacls 별칭 및 해당 Windows 권한
pvccacls
별칭Windows 권한에 매핑 R
읽기
READ
읽기 & 실행
W
특별함:
- 파일 생성 / 쓰기
- 폴더 생성 / 데이터 추가
- 쓰기 속성
- 확장 속성 작성
- 읽기 권한
D
delete
P
권한 변경
O
소유권 가져오기
X
트래버스 / 실행
변경
수정
FULL
완전 제어
참고권한을 설정할 때 단일 문자 별칭을 결합할 수 있습니다. 예를 들어
RD
를 설정하여 Windows 권한읽기
및삭제
를 적용할 수 있습니다. 그러나 여러 개의 단일 문자 별칭을 결합하거나 별칭과 hex 값을 결합할 수 없습니다.
1.10.2. rootfscacls를 사용하여 ACL 표시
SMB 공유의 ACL을 표시하려면 rootfs cacls 유틸리티를
사용합니다. --add
와 같은 operation 매개변수 없이 NetNamespace cacls
를 실행하면 유틸리티에서 파일 시스템 오브젝트의 ACL을 표시합니다.
절차
예를 들어 //server/example
공유의 루트 디렉터리의 ACL을 나열하려면 다음을 수행합니다.
# smbcacls //server/example / -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
REVISION:1
CONTROL:SR|PD|DI|DP
OWNER:AD\Administrators
GROUP:AD\Domain Users
ACL:AD\Administrator:ALLOWED/OI|CI/FULL
ACL:AD\Domain Users:ALLOWED/OI|CI/CHANGE
ACL:AD\Domain Guests:ALLOWED/OI|CI/0x00100021
명령 출력이 표시됩니다.
-
REVISION
: 보안 설명자의 내부 Windows NT ACL 개정 -
CONTROL
: 보안 설명자 제어 -
보안 설명자 소유자의 이름 또는 SID
-
GROUP
: 보안 설명자 그룹의 이름 또는 SID -
ACL
항목. 자세한 내용은 액세스 제어 항목을 참조하십시오.
1.10.3. ACE 마스크 계산
대부분의 경우 ACE를 추가하거나 업데이트할 때 Existingtekton cacls
별칭과 해당 Windows 권한에 나열된 rootfscacls 별칭을 사용합니다.
그러나 Windows 권한에 나열된 고급 Windows 권한을 설정하고 16진수 형식의 해당 rootfscacls 값을 설정하려는 경우, 비트 단위 OR
작업을 사용하여 올바른 값을 계산해야 합니다. 다음 shell 명령을 사용하여 값을 계산할 수 있습니다.
# echo $(printf '0x%X' $(( hex_value_1 | hex_value_2 | ... )))
예 1.4. ACE mask 계산
다음 권한을 설정하려고 합니다.
- 트래버스 폴더/실행 파일(0x00100020)
- 목록 / 읽기 데이터(0x00100001)
- 읽기 속성(0x00100080)
이전 권한에 대한 16진수 값을 계산하려면 다음을 입력합니다.
# echo $(printf '0x%X' $(( 0x00100020 | 0x00100001 | 0x00100080 )))
0x1000A1
ACE를 설정하거나 업데이트할 때 반환된 값을 사용합니다.
1.10.4. rootfscacls를 사용하여 ACL 추가, 업데이트 및 제거
qcow cacls 유틸리티에 전달하는 매개변수에 따라
파일 또는 디렉터리에서 ACL을 추가, 업데이트 및 제거할 수 있습니다.
ACL 추가
이 폴더에 대한
추가합니다.
CHANGE
권한을 부여하는 //server/example
공유의 루트에 ACL을 추가하려면 AD\Domain Users
그룹에 파일을
# smbcacls //server/example / -U "DOMAIN\administrator --add ACL:"AD\Domain Users":ALLOWED/OI|CI/CHANGE
ACL 업데이트
ACL을 업데이트하는 것은 새 ACL을 추가하는 것과 유사합니다. 기존 보안 주체와 함께 --modify
매개 변수를 사용하여 ACL을 재정의하여 ACL을 업데이트합니다. pvc cacls
가 ACL 목록에서 보안 주체를 발견하면 유틸리티가 권한을 업데이트합니다. 그렇지 않으면 명령이 오류와 함께 실패합니다.
ACL for SID principal_name not found
예를 들어 AD\Domain Users
그룹의 권한을 업데이트하고 이 폴더, 하위 폴더 및 파일에
대해 READ
로 설정하려면 다음을 수행합니다.
# smbcacls //server/example / -U "DOMAIN\administrator --modify ACL:"AD\Domain Users":ALLOWED/OI|CI/READ
ACL 삭제
ACL을 삭제하려면 정확한 ACL을 사용하는 --delete
매개 변수를 smbcacls
유틸리티에 전달합니다. 예를 들어 다음과 같습니다.
# smbcacls //server/example / -U "DOMAIN\administrator --delete ACL:"AD\Domain Users":ALLOWED/OI|CI/READ