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