# 관리 안내서

# 액세스 제어 목록 관리

디렉토리와 그 안에 있는 모든 파일에 대한 액세스를 제어하려면 AFS는 UNIX 파일 시스템(UFS)에서 개별적인 파일이나 디렉토리에 연관시키는 모드 비트 대신 액세스 제어 목록(ACL)을 연관시킵니다. AFS ACL은 UFS의 3가지 권한 대신 7가지 액세스 권한이 있고 3개의 UFS 항목(owner, group 그리고 other) 대신 ACL에 약 20명의 사용자나 항목을 위한 공간이 있으므로 더 세련되게 액세스를 제어할 수 있습니다.

## 명령 요약

이 장에서는 지정된 명령을 사용하여 다음 타스크를 수행하는 방법을 설명합니다.

액세스 제어 목록 조사 | fs listacl
ACL의 표준 권한 섹션 편집 | fs setacl
ACL의 부정적인 권한 섹션 편집 | -negative 플래그가 있는 fs setacl
ACL 대체 | -clear 플래그가 있는 fs setacl
ACL 복사 | fs copyacl
필요없는 AFS UID 제거 | fs cleanacl

## AFS에서의 데이터 보호

이 절에서는 AFS와 UFS 파일 보호 시스템간의 주요 차이점을 설명하며, 디렉토리 레벨의 보호를 논의하고 7가지 액세스 권한을 설명합니다.

### UFS와 AFS 데이터 보호간의 차이점

UFS 모드 비트 데이터 보호 시스템과 AFS ACL 시스템은 다음과 같이 다릅니다.

- 파일 레벨(UFS) 대 디렉토리 레벨(AFS)에서의 보호

  UFS는 9개의 모드 비트 집합을 각 파일 요소에 연관시키고 각 요소의 소유자, 소유 그룹 그리고 다른 모든 사용자에게 3개(rwx)를 연관시킵니다. 파일 디렉토리의 비슷한 모드 비트 집합은 간접적인 방법으로만 파일에 적용합니다.

  대신 AFS ACL은 같은 방법으로 디렉토리에 있는 모든 파일을 보호합니다. 특정 파일이 다른 파일보다 더 민감하면 더 제한적인 ACL를 가지고 디렉토리에 저장합니다.

  디렉토리 레벨에서 액세스를 정의하는 것은 중요한 결과를 가져옵니다.

  - 디렉토리의 ACL에서의 권한은 디렉토리에 있는 모든 파일에 적용됩니다. 파일을 다른 디렉토리로 옮기면 적용되는 액세스 권한을 효과적으로 그 새 디렉토리의 ACL로 변경합니다. 디렉토리의 ACL을 변경하면 그 디렉토리에 있는 모든 파일의 보호가 변경됩니다.
  - 하위 디렉토리를 작성할 때 그 초기 ACL은 상위 디렉토리의 ACL의 복사본으로 작성됩니다. 그런 다음 하위 디렉토리의 ACL을 따로 변경할 수 있습니다. 그러나, 상위 디렉토리의 ACL이 다음과 같은 방법으로 하위 디렉토리에 대한 액세스를 계속 제어합니다. 상위 디렉토리의 ACL은 l(lookup) 권한을 사용자(또는 사용자가 속하는 그룹)에게 부여하여 사용자가 하위 디렉토리를 조금이라도 액세스할 수 있게 합니다.

    일반적으로, 높은 레벨의 디렉토리(사용자 홈 디렉토리 포함)에 꽤 자유로운 액세스 권한을 지정하는 것이 최상의 방법입니다. 특히, 최소한 l 권한을 system:anyuser나 높은 레벨 디렉토리의 system:authuser 그룹에 부여하는 것이 좋습니다. 더 자세한 내용은 ACL에서 그룹 사용을 참조하십시오.

- 모드 비트 해석 방법

  모드 비트는 UFS에서 유일한 파일 보호 시스템입니다. AFS를 통해 사용자는 ACL 디렉토리의 ACL에 추가로 UNIX 모드 비트를 설정할 수 있지만 이를 다르게 해석합니다. AFS가 UNIX 모드 비트를 해석하는 방법을 참조하십시오.

- 3가지 액세스 권한(UFS) 대 7가지(AFS)

  UFS는 모드 비트의 양식으로 3가지 액세스 권한을 정의합니다. r(읽기), w(쓰기) 그리고 x(실행). AFS는 액세스를 더 정확하게 제어할 수 있게 해 주는 7가지 권한을 정의합니다. 자세한 설명은 AFS ACL 권한을 참조하십시오.

    a(관리)

    d(삭제)

    i(삽입)

    k(잠금)

    l(조회)

    r(읽기)

    w(쓰기)

- 3가지 정의된 사용자 및 그룹(UFS) 대 여러 가지(AFS)

  UFS는 하나의 사용자와 두 개의 그룹 각각에 모드 비트를 설정하여 액세스를 제어합니다. 사용자는 파일이나 디렉토리를 소유한 사람이고 그룹은 정의된 단일 그룹과 시스템에 대해 계정을 가지고 있는 모든 사람들입니다.

  이와 달리 AFS를 사용하면 많은 항목(개별적인 사용자 또는 그룹)을 ACL에 배치하여 각각에게 액세스 권한 집합을 부여할 수 있습니다. 가능한 항목의 수는 약 20개이고 ACL 자체에 할당된 메모리에서 각 항목이 차지하는 공간에 따라 달라집니다.

  AFS는 system:anyuser와 system:authuser의 두 시스템 그룹을 정의합니다. 이는 각각 모든 사용자와 인증된 모든 사용자를 나타냅니다. 더 자세한 내용은 ACL에서 그룹 사용을 참조하십시오. 이 외에도, 사용자는 개별 사용자나 기계 IP 주소로 구성된 보호 데이터베이스에서 자체 그룹을 정의할 수 있습니다. ACL에 a 권한을 가지고 있는 사용자는 시스템 그룹뿐만 아니라 자신이나 다른 사용자가 정의한 그룹에 대해서도 항목을 작성할 수 있습니다. 그룹 정의에 대한 내용은 보호 데이터베이스 관리를 참조하십시오.

  사용자가 파일이나 디렉토리에 대한 액세스를 요청하면 파일 서버는 관련 ACL이 사용자와 사용자가 속한 그룹으로 확장하는 모든 권한을 모읍니다. 그룹 항목을 ACL에 배치하면 ACL이 개별 항목으로 제공할 수 있는 사용자보다 더 많은 사용자에 대한 액세스를 제어할 수 있습니다.

### AFS ACL 권한

기능적으로 7가지 표준 ACL 권한을 두 그룹을 형성합니다. 하나는 디렉토리 자체에 적용되고 다른 하나는 가지고 있는 파일에 적용됩니다.

#### 4가지 디렉토리 권한

이 그룹에 있는 4가지 권한은 디렉토리 자체에 대해 의미가 있습니다. 예를 들어, i(삽입) 권한은 데이터를 파일에 추가하는 작업을 제어하지 않지만 새 파일이나 하위 디렉토리의 작성 작업을 제어합니다.

l(조회) 권한
  사용자는 다른 권한을 사용하려면 이 권한이 있어야 하므로 이는 디렉토리와 그 파일에 대한 액세스의 문지기와 같은 역할을 합니다. 특히, 사용자는 하위 디렉토리에서 ACL이 광범위한 권한을 부여해도 디렉토리의 하위 디렉토리에 있는 모든 것을 액세스할 수 있는 권한이 있어야 합니다.

  이 권한을 통해 사용자는 다음 명령을 실행할 수 있습니다.

  - ls 명령은 디렉토리에 있는 파일과 하위 디렉토리의 이름을 나열합니다
  - ls -ld 명령은 디렉토리 요소 자체에 대한 완전한 상태 정보를 확보합니다
  - fs listacl 명령은 디렉토리의 ACL을 조사합니다

  이 권한으로 사용자는 디렉토리에 있는 파일의 내용을 읽을 수 없고 디렉토리에 있는 파일에서 ls -l 명령을 실행하거나 파일 이름을 -path 인수로 사용하여 fs listacl 명령을 실행할 수 없습니다. 이런 조작은 3가지 파일 권한에 설명되어 있는 r(읽기) 권한이 필요합니다.

  이와 비슷하게, 이 권한을 통해 사용자는 디렉토리의 하위 디렉토리에 대해 ls, ls -l, ls -ld 또는 fs listacl 명령을 실행할 수 없습니다. 이런 조작은 하위 디렉토리 자체의 ACL에 대해 l 권한이 필요합니다.

i(삽입) 권한
  이 권한을 통해 사용자는 작성 또는 복사하여 새 파일을 디렉토리에 추가하고 새 하위 디렉토리를 작성할 수 있습니다. 이는 자체 ACL로 보호되는 하위 디렉토리로 확장되지 않습니다.

d(삭제) 권한
  이 권한을 통해 사용자는 디렉토리에서 파일과 하위 디렉토리를 제거하거나 이를 다른 디렉토리로 옮길 수 있습니다(사용자에게 다른 디렉토리의 ACL에 대한 i 권한이 있다고 간주).

a(관리) 권한
  이 권한을 통해 사용자는 디렉토리의 ACL을 변경할 수 있습니다. system:administrators 그룹의 구성원은 묵시적으로 모든 디렉토리에 이 권한이 있습니다(즉, 그 그룹이 ACL에 나타나지 않아도). 이와 비슷하게, 디렉토리의 소유자는 묵시적으로 그 ACL와 그 소유자가 소유한 것 밑에 있는 모든 디렉토리의 것에 대해 이 권한을 가지고 있습니다.

#### 3가지 파일 권한

이 그룹에 있는 3가지 권한은 디렉토리 자체나 그 하위 디렉토리 보다 디렉토리에 있는 파일에 대해 의미를 가지고 있습니다.

r(읽기) 권한
  이 권한을 통해 사용자는 디렉토리에 있는 파일의 내용을 읽고 ls -l 명령을 실행하여 파일 요소를 stat할 수 있습니다.

w(쓰기) 권한
  이 권한을 통해 사용자는 디렉토리에 있는 파일의 내용을 수정하고 chmod 명령을 실행하여 그 UNIX 모드 비트를 변경할 수 있습니다.

k(잠금) 권한
  이 권한을 통해 사용자는 시스템 호출을 실행하여 디렉토리에 있는 파일을 잠그는 프로그램을 실행할 수 있습니다.

#### 8가지 보조 권한

AFS는 대문자 A, B, C, D, E, F, G 그리고 H로 표시되며 정의된 의미가 있는 8가지 추가 권한을 제공합니다.

권한 중 두 개 이상에 의미를 지정하는 응용프로그램을 작성한 다음 이를 ACL에 배치하여 이에 의해 파일 액세스를 제어할 수 있습니다. 예를 들어, 인쇄 프로그램을 수정하여 권한을 인식하고 해석한 다음 프로그램이 액세스하는 파일을 보관하는 디렉토리에 이를 배치할 수 있습니다. fs listacl과 fs setacl 명령을 사용하여 표준 7가지 권한과 마찬가지로 보조 권한을 표시하고 설정합니다.

#### 권한 집합의 속기 표기법

ACL 항목에서 7가지 권한을 어느 방법으로나 결합할 수 있지만 특정 조합을 다른 조합보다 더 유용합니다. 좀 더 일반적인 4가지 조합에는 해당 속기 양식이 있습니다. fs setacl 명령을 사용하여 ACL 항목을 정의할 때 권한을 나타내는 각각의 글자 중 두 개 이상을 제공하거나 다음 속기 양식 중 하나를 제공할 수 있습니다.

all
  7가지 표준 권한을 전부 나타냅니다(rlidwka).

none
  ACL에서 항목을 제거하여 사용자나 그룹에게 권한이 없습니다.

read
  r(읽기)과 l(조회) 권한을 나타냅니다.

write
  a(관리)를 제외한 모든 권한을 나타냅니다. rlidwk.

### 표준 및 부정적인 권한 사용

ACL을 통해 사용자는 디렉토리와 그 안에 있는 파일에 액세스를 부여하고 거부할 수 있습니다. 액세스를 부여하려면 fs setacl 명령을 사용하여 ACL 항목 설정의 설명 대로 권한 집합을 사용자나 그룹과 연관시키는 ACL 항목을 작성합니다. fs listacl 명령을 사용하여 ACL을 표시할 때(ACL 표시의 설명 대로) 이런 항목은 권한의 의미로 rights라는 용어를 사용하는 다음 헤더 밑에 표시됩니다.

       Normal rights

다음과 같이 두 가지 방법으로 액세스를 거부할 수 있습니다.

1. 권장 방법을 ACL에서 사용자나 그룹에 대해 항목을 생략하거나 항목에서 적합한 권한을 생략하는 것입니다. 표준 ACL 권한을 제거 또는 편집하려면의 설명 대로 fs setacl 명령을 사용하여 기존 항목을 제거하거나 편집합니다. 대부분의 경우 이 방법은 특정 액세스 종류를 막거나 특정 사용자에 의한 액세스를 막을 수 있습니다. 그러나 원하지 않는 권한을 이런 사용자가 속한 그룹에 부여하지 않기 위해 주의해야 합니다.
2. 액세스를 거부하는 좀 더 확실한 방법은 fs setacl 명령에 -negative 플래그를 사용하여 부정적 권한을 사용자나 그룹에 연관시키는 항목을 작성하는 것입니다. 자세한 내용은 부정적 ACL 권한을 추가, 제거 또는 편집하려면을 참조하십시오. fs listacl 명령의 출력은 다음 헤더 밑에 부정적인 항목을 나열합니다.

          Negative rights

   사용자에게 부여할 액세스 유형을 결정할 때 파일 서버는 먼저 ACL의 `Normal right` 섹션에 있는 모든 항목을 조사하여 권한 집합을 컴파일합니다. 그런 다음 ACL의 `Negative right` 섹션의 사용자(또는 사용자가 속한 그룹)와 연관된 모든 권한을 삭제합니다. 그러므로, 부정적 권한은 항상 표준 권한을 없앱니다.

   부정적 권한을 사용하면 fs setacl 명령의 일반 의미를 반전시키면서 잠재적 혼란을 일으킵니다. 특히, none 속기와 -negative 플래그를 결합시키면 두 번 부정하게 됩니다. ACL의 `Negative right` 섹션에서 항목을 제거하면 사용자는 다시 한번 `표준 권한` 섹션의 항목을 통해 권한을 얻을 수 있습니다. all 속기를 -negative 플래그와 결합시키면 모든 권한을 확실하게 거부하게 됩니다.

   `Normal rights` 섹션에 있는 항목이 거부된 권한을 system:anyuser 그룹에 부여하는 경우 `Negative rights` 섹션에서 항목을 작성하는 것은 아무 의미가 없습니다. 이런 경우 사용자는 unlog 명령을 사용하여 토큰을 버림으로써 권한을 얻을 수 있습니다. 이렇게 하면, 파일 서버는 이를 system:anyuser 그룹에 속하지만 ACL의 `Negative rights` 섹션에 있는 항목과 일치하지 않는 anonymous 사용자로 인식합니다.

### ACL에서 그룹 사용

앞에서 언급했듯이 그룹 항목을 ACL에 배치하면 많은 사용자에 대한 액세스를 한번에 제어할 수 있습니다. 사용자를 관련 ACL에 나타나는 그룹에 추가하여 새 사용자 액세스 권한을 여러 파일과 디렉토리에 부여할 수 있습니다. 또한 기계 그룹을 작성할 수도 있는 데, 여기서 기계에 로그온된 사용자는 그룹에 부여된 액세스 권한을 얻게 됩니다. ACL에 대해 a 권한을 가지고 있는 디렉토리에서 사용자는 자체 그룹을 정의하고 작성하거나 스스로 소유하고 있는 그룹만이 아니라 모든 그룹에 대해 ACL 항목을 작성할 수 있습니다. 사용자나 기계 그룹을 작성하는 방법이나 여러 가지 그룹 유형을 사용할 수 있는 가장 효과적인 방법은 보호 데이터베이스 관리를 참조하십시오.

AFS는 또한 다음과 같은 두 시스템 그룹을 정의합니다. 이는 잠재적으로 규모가 큰 사람 그룹을 나타내므로 ACL에서 매우 유용할 수 있습니다. 이런 그룹에 대한 자세한 내용은 시스템 그룹을 참조하십시오.

system:anyuser
  로컬 수퍼유저 root로 로그인한 사용자, 셀 외부에서 로컬 기계에 연결한 사용자 그리고 외부 셀에 속하는 AFS 사용자를 포함하여 셀의 파일 트리를 액세스할 수 있는 사용자를 전부 포함합니다. 이 그룹에는 로컬 AFS 서버에 유효한 토큰이 없는 사용자가 포함됩니다. 서버는 이를 사용자 anonymous로 인식합니다.

  이 그룹에 대해 ACL 항목을 작성하는 것은 AFS 사용자를 위해 로컬 인증 계정을 작성하지 않는 이상 외부 셀에서 AFS 사용자에 대한 액세스를 확장하는 유일한 방법입니다.

system:authuser
  로컬 셀의 인증 서비스에서 유효한 AFS 토큰을 받은 모든 사용자를 포함합니다.

특히, 상위 레벨에서 파일 시스템에 있는 대부분의 디렉토리의 ACL에 대한 system:anyuser 그룹에 l(조회) 권한을 부여할 때 유용합니다. 이 권한을 통해 사용자는 디렉토리에 있는 파일과 하위 디렉토리의 이름만 배울 수 있지만 이 권한이 없으면 경로의 디렉토리를 통해 목표 파일로 이동할 수 없습니다.

약간 더 제한적인 대체 방법은 l 권한을 system:authuser 그룹에 부여하는 것입니다. 이것만으로도 부족하면 l을 주어진 ACL에서 20을 넘길 수 없는 특정 사용자나 그룹에 부여할 수 있습니다.

특정 권한을 system:anyuser 그룹에 부여하는 또 다른 이유는 인쇄 및 메일 배달과 같은 서비스를 제공하는 프로세스를 올바로 수행하기 위해서입니다. 예를 들어, l 권한 외에 인쇄 프로세스는 아마도 파일의 내용을 액세스하기 위해 r(읽기) 권한이 필요하고 메일 배달 프로세스는 아마도 새 메일을 배달하기 위해 i(삽입) 권한이 필요할 것입니다.

새로 작성된 모든 볼륨의 루트 디렉토리의 ACL은 system:administrators 그룹에 모든 권한을 부여합니다. 원하는 경우 이 항목을 제거할 수 있지만 system:administrators 그룹의 구성원은 항상 모든 디렉토리의 ACL에 묵시적으로 a(관리) 권한을 가지고 있고 기본적으로 l 권한을 가지고 있습니다. a 권한을 통해 필요한 경우 스스로 기타 권한을 명시적으로 부여할 수 있습니다. 이 권한 기본 집합 변경에 대한 내용은 system:administrators 그룹 관리를 참조하십시오.

## ACL 표시

파일, 디렉토리 또는 심볼릭 링크와 연관된 ACL을 표시하려면 fs listacl 실행합니다. 심볼릭 링크의 출력은 심볼릭 링크가 있는 디렉토리의 ACL 대신 목표 파일이나 디렉토리에 적용하는 ACL을 표시합니다.

AFS/DFS 이주 툴킷 사용자 주: fs listacl 명령을 실행한 기계가 AFS/DFS 이주 툴킷을 통해 DCE 셀의 DFS 파일 공간을 액세스할 수 있도록 구성된 경우 명령을 사용하여 DFS 파일과 디렉토리의 ACL을 표시할 수 있습니다. 일반적인 것 대신 DFS 디렉토리의 초기 컨테이너와 초기 오브젝트 ACL을 표시하려면 fs listacl 명령의 -id나 -if 플래그를 포함하십시오. 자세한 정보는 AFS/DFS Migration Toolkit Administration Guide and Reference를 참조하십시오. fs 명령 인터프리터는 AFS ACL을 표시할 때 이를 포함하면 -id와 -if 플래그를 무시합니다.

### ACL 표시하려면

1. fs listacl 명령을 실행합니다.

          % fs listacl [<dir/file path>+]

   여기서,

   la
     listacl의 사용 가능한 별명입니다(그리고 lista는 사용할 수 있는 가장 짧은 축약형임).

   dir/file path
     ACL을 표시할 파일이나 디렉토리를 두 개 이상 명명합니다. 파일에서 출력은 그 디렉토리에 대해 ACL을 표시합니다. 이 인수를 생략하면 출력은 현재 작업 디렉토리에 대한 것이 됩니다. 부분적 경로 이름은 현재 작업 디렉토리와의 관계에 따라 해석됩니다. 다음 표기법을 자체 경로 이름이나 경로 이름의 일부에 사용할 수도 있습니다.

     .
       (점 하나). 현재 작업 디렉토리를 지정합니다.

     ..
       (점 두 개). 현재 작업 디렉토리의 상위 디렉토리를 지정합니다.

     *
       (별표). 현재 작업 디렉토리에 있는 각 파일과 하위 디렉토리를 지정합니다. 파일에 대해 표시된 ACL은 그 디렉토리에 대해 항상 같지만 각 하위 디렉토리에 대한 ACL은 다를 수 있습니다.

다음 오류 메시지는 ACL을 표시하는 데 필요한 권한이 없음을 나타냅니다. 디렉토리 이름을 dir/file path 인수로 지정하려면 ACL에서 l(조회) 권한이 있어야 합니다. 파일 이름을 지정하려면 그 디렉토리의 ACL에 r(읽기) 권한도 있어야 합니다.

       fs: You don't have the required access permissions on 'dir/file path'

system:administrators 그룹의 구성원과 디렉토리의 소유자(ls -ld 명령에 의해 보고된 대로)는 모든 디렉토리의 ACL에 묵시적으로 a(관리) 권한을 가지고 있고 fs setacl 명령을 사용하여 필요한 권한을 스스로 부여할 수 있습니다. 자세한 내용은 ACL 항목 설정을 참조하십시오.

dir/file path로 지정된 각 파일이나 디렉토리의 출력은 다음 헤더로 시작하여 이를 식별합니다.

       Access list for  dir/file path is

`Normal rights` 헤더는 다음 행에 나타나며 그 다음에 사용자나 그룹 이름과 권한 집합을 짝지어 주는 행이 옵니다. 권한은 AFS ACL 권한에서 정의된 대로 문자 하나로 표시되고 항상 rlidwka 순서로 나타납니다. 부정적 권한이 있는 `Negative rights` 헤더가 그 다음에 나타나고 부정적 권한 쌍이 따라옵니다.

다음 예는 Example Corporation 셀에 있는 사용자 terry의 홈 디렉토리를 표시합니다.

       % fs la /afs/example.com/usr/terry
       Access list for /afs/example.com/usr/terry is
       Normal permissions:
          system:authuser rl
          pat rlw
          terry rlidwka
       Negative permissions:
          terry:other-dept rl
          jones rl

여기서 pat, terry 그리고 jones는 개별적인 사용자이고 system:authuser는 시스템 그룹이며 terry:other-dept는 terry가 소유하는 그룹입니다. 표준 권한의 목록은 모든 권한을 terry에게 부여하고 r(읽기), l(조회) 그리고 w(쓰기) 권한을 pat에게 부여하며 r과 l 권한을 system:authuser 그룹의 구성원에게 부여합니다.

부정적 권한의 목록은 r과 l 권한을 jones와 terry:other-dept 그룹의 구성원에게 부여하지 못하도록 거부합니다. 이런 항목은 이들이 어떤 방법으로든 terry의 홈 디렉토리를 액세스하지 못하게 효과적으로 막습니다. 이들이 액세스하면 ACL의 `Normal rights` 섹션에서 system:authuser 그룹에 적용될 수 있는 유일한 권한인 r과 l을 취소하기 때문입니다.

## ACL 항목 설정

ACL 항목을 추가, 제거 또는 편집하려면 fs setacl 명령을 사용하십시오. 기본적으로, 명령은 ACL의 표준 권한 섹션의 항목을 처리합니다. 부정적 권한 섹션의 항목을 처리하려면 -negative 플래그를 포함시키십시오.

ACL에 a(관리) 권한이 있어야 이를 편집할 수 있습니다. 디렉토리 명령 소유자(ls -ld에서 보고한 대로)와 system:administrators 그룹의 구성원은 항상 묵시적으로 모든 ACL에서 이를 가지고 있습니다. 기본적으로, system:administrators 그룹의 구성원 또한 묵시적으로 l(조회) 권한을 가지고 있습니다.

AFS/DFS 이주 툴킷 사용자 주: fs setacl 명령을 실행한 기계가 AFS/DFS 이주 툴킷을 통해 DCE 셀의 DFS 파일 공간을 액세스할 수 있도록 구성된 경우 명령을 사용하여 DFS 파일과 디렉토리의 ACL을 표시할 수 있습니다. 일반적인 것 대신 DFS 디렉토리의 초기 컨테이너와 초기 오브젝트 ACL을 설정하려면 fs setacl 명령의 -id나 -if 플래그를 포함하십시오. 자세한 정보는 AFS/DFS Migration Toolkit Administration Guide and Reference를 참조하십시오. fs 명령 인터프리터는 AFS ACL을 설정할 때 이를 포함하면 -id와 -if 플래그를 무시합니다.

### 표준 ACL 권한을 제거 또는 편집하려면

1. ACL을 편집중인 각 디렉토리에 a(관리) 권한이 있는지 확인하십시오. 필요하면 ACL 표시에서 자세히 설명되어 있는 fs listacl 명령을 실행하십시오.

          % fs listacl [<dir/file path>]

2. fs setacl 명령을 실행하여 ACL의 표준 권한 섹션에 있는 항목을 편집하십시오. 항목을 제거하려면 없음 속기를 권한으로 지정합니다. 이미 ACL 항목이 있으면 지정한 권한이 기존 항목에 있는 권한을 완전히 대체합니다.

          % fs setacl  -dir
       <directory>+ -acl <access list entries>+

   여기서,

   sa
     setacl의 사용 가능한 별명입니다(그리고 seta는 사용할 수 있는 가장 짧은 축약형임).

   -dir
     -acl 인수에 의해 정의된 ACL 항목을 적용할 디렉토리를 두 개 이상 명명합니다. 부분적 경로 이름은 현재 작업 디렉토리와의 관계에 따라 해석됩니다.

     각 디렉토리에 읽기/쓰기 경로를 지정하여 읽기 전용 볼륨을 변경하려고 할 때 실패하지 않도록 합니다. 일반적으로, 경로 이름의 두 번째 레벨에서 셀 이름 앞에 점을 찍어 읽기/쓰기 경로를 표시합니다(예를 들어, /afs/.example.com). 파일 공간을 통한 읽기/쓰기와 읽기 전용 경로의 개념에 대한 내용은 마운트 포인트 통과 규칙을 참조하십시오.

     다음 표기법을 자체 경로 이름이나 경로 이름의 일부에 사용할 수도 있습니다.

     .
       (점 하나). 이것만 사용하면 현재 작업 디렉토리에서 ACL을 설정합니다.

     ..
       (점 두 개). 이것만 사용하면 현재 작업 디렉토리의 상위 디렉토리에서 ACL을 설정합니다.

     *
       (별표). 현재 작업 디렉토리의 각 하위 디렉토리에서 ACL을 설정합니다. 이는 잠재적으로 여러 디렉토리를 지정하므로 앞에 -dir 스위치를 표시해야 합니다. fs 명령 인터프리터는 디렉토리의 각 파일에 대해 다음 오류 메시지를 생성합니다.

              fs: 'filename': Not a directory

     디렉토리나 파일 이름을 하나만 지정하면 -dir와 -acl 스위치를 생략할 수 있습니다.

   -acl
     ACL 항목을 두 개 이상 지정하는 데 각각은 사용자나 그룹 이름을 권한 집합과 짝지어 놓습니다. 쌍을 두 개 이상의 공백을 사이에 두고 두 부분으로 나눕니다.

     권한을 정의하려면 다음을 입력하십시오.

     - 임의의 순서로 표준 또는 보조 권한(rlidwka와 ABCDEFGH)을 나타내는 두 개 이상의 문자
     - 4가지 속기 표기법 중 하나:
       - all(rlidwka와 같습니다)
       - none(항목을 제거합니다)
       - read(rl과 같습니다)
       - write(rlidwk와 같습니다)

     권한과 속기 표기법에 대한 자세한 내용은 AFS ACL 권한을 참조하십시오.

     하나의 명령행에서 사용자와 그룹 항목을 결합할 수 있습니다. 일부 쌍과 다른 쌍에 있는 속기 표기법에서 개별적인 문자를 사용할 수도 있지만 하나의 쌍에서 문자와 속기 표기법을 결합할 수는 없습니다.

다음 예는 둘다 실행자의 홈 디렉토리에 있는 notes 하위 디렉토리의 ACL에서 사용자 pat에게 r(읽기)와 l(조회) 권한을 부여합니다. 이는 디렉토리를 하나만 명명할 때 -dir과 -acl 스위치를 생략할 수 있는 방법을 보여줍니다.

       % fs sa ~/notes pat rl

       % fs sa ~/notes pat read

다음 예는 현재 작업 디렉토리에 대해 ACL을 편집합니다. 이는 system:anyuser 그룹에 대한 항목을 제거하고 두 항목을 추가합니다. 하나는 a(관리)를 제외한 모든 권한을 terry:colleagues 그룹의 구성원에게 부여하고 다른 하나는 r(읽기)과 l(조회) 권한을 system:authuser 그룹에게 부여합니다. 명령은 읽기 쉽게 두 행에 걸쳐 표시됩니다.

       % fs  sa  -dir . -acl  system:anyuser  none  terry:colleagues  write  \
               system:authuser  rl

### 부정적 ACL 권한을 추가, 제거 또는 편집하려면

1. ACL을 편집중인 각 디렉토리에 a(관리) 권한이 있는지 확인하십시오. 필요하면 ACL 표시에서 자세히 설명되어 있는 fs listacl 명령을 실행하십시오.

          % fs listacl [<dir/file path>]

2. fs setacl 명령을 -negative 플래그와 함께 실행하여 ACL의 부정적 권한 섹션에 있는 항목을 편집합니다. 항목을 제거하려면 없음 속기를 권한으로 지정합니다. 이미 ACL 항목이 사용자나 그룹에 대해 있으면 지정한 권한이 기존 항목에 있는 것을 완전히 대체합니다.

          % fs setacl -dir <directory>+ -acl
       <access list entries>+  -negative

   여기서,

   sa
     setacl의 사용 가능한 별명입니다(그리고 seta는 사용할 수 있는 가장 짧은 축약형임).

   -dir
     -acl 인수에 의해 정의된 부정적 ACL 항목을 적용할 디렉토리를 두 개 이상 명명합니다. 각 디렉토리에 읽기/쓰기 경로를 지정하여 읽기 전용 볼륨을 변경하려고 할 때 실패하지 않도록 합니다. 사용할 수 있는 값에 대한 자세한 내용은 표준 ACL 권한을 제거 또는 편집하려면을 참조하십시오.

   -acl
     ACL 항목을 두 개 이상 지정하는 데 각각은 사용자나 그룹 이름을 권한 집합과 짝지어 놓습니다. 쌍을 두 개 이상의 공백을 사이에 두고 두 부분으로 나눕니다. 사용할 수 있는 값에 대한 자세한 내용은 표준 ACL 권한을 제거 또는 편집하려면을 참조하십시오. 각 권한의 일반적인 의미가 반전되었음을 염두에 두십시오.

   -negative
     -dir 인수에 의해 명명된 각 디렉토리에 대한 ACL의 부정적 권한 섹션에서 -acl 인수에 의해 정의된 항목을 배치합니다.

다음 예는 현재 작업 디렉토리의 project 하위 디렉토리에 대해 w(쓰기)와 d(삭제) 권한을 사용자 pat에서 거부합니다.

       % fs sa project pat wd -neg

## ACL 완전히 바꾸기

예를 들어, 표준과 부정적 권한이 섞여 있어 그 상호작용으로 디렉토리에 대한 사용자 액세스가 어떤 영향을 받는지 이해하기 어려울 경우 때때로 ACL에 새 권한을 정의하기 전에 ACL을 완전히 지우는 것이 가장 간단한 방법입니다. 새 항목을 정의하는 중에 ACL을 완전히 지우려면 fs setacl 명령에 -clear 플래그를 포함하십시오. 이 플래그를 포함하면 ACL의 표준 권한이나 부정적 권한 섹션에 항목을 작성할 수 있지만 한번에 양쪽에 다 작성할 수는 없습니다.

디렉토리 소유자에게 적합한 권한을 부여하는 항목을 작성하도록 하십시오. 소유자는 묵시적으로 삭제된 항목을 대체하는 데 필요한 a(관리) 권한을 가지고 있지만 ACL 항목(특히, 조회 권한의 부족)이 누락되면 소유자가 항목이 누락되어 문제가 일어나고 있다는 것을 인식하기 어렵게 만들 수 있습니다.

### ACL을 완전히 바꾸려면

1. ACL을 편집중인 각 디렉토리에 a(관리) 권한이 있는지 확인하십시오. 필요하면 ACL 표시에서 자세히 설명되어 있는 fs listacl 명령을 실행하십시오.

          % fs listacl [<dir/file path>]

2. fs setacl 명령을 -clear 플래그와 함께 실행하여 표준 또는 부정적 권한을 설정하기 전에 ACL을 완전히 지우십시오. 디렉토리의 소유자에게 모든 권한을 부여해야 하므로 대부분의 경우 이 시점에서 표준 권한을 설정하는 것이 좋습니다.

          % fs setacl  -dir
       <directory>+ -acl <access list entries>+ -clear  \
                      [-negative]

   여기서,

   sa
     setacl의 사용 가능한 별명입니다(그리고 seta는 사용할 수 있는 가장 짧은 축약형임).

   -dir
     -acl 인수에 의해 정의된 부정적 ACL 항목을 적용할 디렉토리를 두 개 이상 명명합니다. 각 디렉토리에 읽기/쓰기 경로를 지정하여 읽기 전용 볼륨을 변경하려고 할 때 실패하지 않도록 합니다. 사용할 수 있는 값에 대한 자세한 내용은 표준 ACL 권한을 제거 또는 편집하려면을 참조하십시오.

   -acl
     ACL 항목을 두 개 이상 지정하는 데 각각은 사용자나 그룹 이름을 권한 집합과 짝지어 놓습니다. 쌍을 두 개 이상의 공백을 사이에 두고 두 부분으로 나눕니다. 디렉토리의 소유자에게 모든 권한을 부여하도록 하십시오. 사용할 수 있는 값에 대한 자세한 내용은 표준 ACL 권한을 제거 또는 편집하려면을 참조하십시오.

   -clear
     -acl 인수에 의해 지정된 항목을 작성하기 전에 각 ACL에서 모든 항목을 제거합니다.

   -negative
     -acl 인수에 의해 정의된 항목을 각 ACL의 부정적 권한 섹션에 배치합니다.

## 디렉토리간 ACL 복사

fs copyacl 명령은 원본 디렉토리의 ACL을 두 개 이상의 목적지 디렉토리에 복사합니다. 이는 원본 ACL에 전혀 영향을 주지 않지만 다음과 같이 각 목적지 ACL을 변경합니다.

- 원본 ACL의 항목이 목적지 ACL에 없으면 명령은 이를 목적지 ACL에 복사합니다.
- 목적지 ACL의 항목이 원본 ACL에 없으면 -clear 플래그를 포함하여 목적지 ACL을 완전히 겹쳐쓰지 않는 이상 명령은 이를 제거하지 않습니다.
- 양쪽 ACL에 항목이 있으면 명령은 목적지 ACL의 권한이 원본 ACL 항목과 일치하도록 변경합니다.

AFS/DFS 이주 툴킷 사용자 주: fs setacl 기계가 AFS 사용자가 AFS/DFS 이주 툴킷을 통해 DCE 셀의 DFS 파일 공간을 액세스할 수 있도록 구성된 경우 fs copyacl 명령을 사용하여 DFS 파일과 디렉토리간에 ACL을 복사할 수 있습니다. 명령은 DFS 디렉토리의 초기 컨테이너와 초기 오브젝트 ACL뿐만 아니라 그 일반 ACL을 변경하기 위해 -id와 -if 플래그를 포함합니다. AFS/DFS Migration Toolkit Administration Guide and Reference를 참조하십시오. AFS와 DFS 디렉토리는 서로 다른 ACL 형식을 사용하므로 이 사이에서 ACL을 복사할 수 없습니다. fs 명령 인터프리터는 AFS ACL을 복사할 때 -id와 -if 플래그를 포함하면 이를 무시합니다.

### 디렉토리간에 ACL을 복사하려면

1. 원본 ACL에 l(조회) 권한이 있고 각 목적지 ACL에 a(관리) 권한이 있는지 확인합니다. 원본 디렉토리에 있는 파일을 명명하여 이를 식별하려면 원본 ACL에 r(읽기) 권한이 있어야 합니다. 필요하면 ACL 표시에서 자세히 설명되어 있는 fs listacl 명령을 실행하십시오.

          % fs listacl [<dir/file path>]

2. fs copyacl 명령을 실행하여 원본 ACL을 두 개 이상의 목적지 디렉토리에 있는 ACL로 복사합니다(명령은 읽기 쉽게 두 행에 걸쳐 표시됩니다).

          % fs copyacl -fromdir <source directory> -todir <destination directory>+  \
                       [-clear]

   여기서,

   co
     사용할 수 있는 copyacl의 가장 짧은 축약형입니다.

   -fromdir
     ACL을 복사할 원본 디렉토리를 명명합니다. 부분적 경로 이름은 현재 작업 디렉토리와의 관계에 따라 해석됩니다. 이 인수가 파일을 명명하면 ACL은 그 디렉토리에서 복사됩니다.

   -todir
     원본 ACL을 복사할 각 목적지 디렉토리를 명명합니다. 부분적 경로 이름은 현재 작업 디렉토리와의 관계에 따라 해석됩니다. 파일 이름은 사용할 수 없습니다.

     각 디렉토리에 읽기/쓰기 경로를 지정하여 읽기 전용 볼륨을 변경하려고 할 때 실패하지 않도록 합니다. 일반적으로, 경로 이름의 두 번째 레벨에서 셀 이름 앞에 점을 찍어 읽기/쓰기 경로를 표시합니다(예를 들어, /afs/.example.com). 파일 공간을 통한 읽기/쓰기와 읽기 전용 경로의 개념에 대한 내용은 마운트 포인트 통과 규칙을 참조하십시오.

   -clear
     원본 ACL로 각 목적지 디렉토리의 ACL을 완전히 겹쳐씁니다.

다음 예는 현재 작업 디렉토리의 notes 하위 디렉토리에서 ACL을 plans 하위 디렉토리로 복사합니다. 실행자는 -clear 플래그를 포함하지 않으므로 사용자 pat에 대한 항목은 notes 디렉토리의 ACL에 해당 항목이 없어도 plans 디렉토리의 ACL에 남습니다.

       % fs la notes plans
       Access list for notes is
       Normal permissions:
          terry rlidwka
          smith rl
          jones rl
       Access list for plans is
       Normal permissions:
          terry rlidwk
          pat rlidwk
       % fs copyacl notes plans
       % fs la notes plans
       Access list for notes is
       Normal permissions:
          terry rlidwka
          smith rl
          jones rl
       Access list for plans is
       Normal permissions:
          terry rlidwka
          pat rlidwk
          smith rl
          jones rl

## ACL에서 쓸모없는 AFS ID 제거

보호 데이터베이스에서 사용자나 그룹 항목을 제거할 때 fs listacl 명령은 이름 대신 ACL 항목에 있는 사용자의 AFS UID(또는 그룹의 AFS GID)를 표시합니다. 다음 예에서 사용자 terry는 ABC사 셀에 있는 자신의 홈 디렉토리에 terry:friends 그룹(AFS GID -567)에 대한 ACL 항목이 있으므로 보호 데이터베이스에서 그룹을 제거합니다.

       % fs listacl /afs/example.com/usr/terry
       Access list for /afs/example.com/usr/terry is
       Normal permissions:
         terry:friends rlik
         system:anyuser l
          terry rlidwka
       % pts delete terry:friends
       % fs listacl /afs/example.com/usr/terry
       Access list for /afs/example.com/usr/terry is
       Normal permissions:
         -567 rlik
         system:anyuser l
          terry rlidwka

AFS ID를 ACL에 남겨 놓으면 ID가 더 이상 활성화된 사용자나 그룹에 해당하지 않으므로 아무런 기능도 제공하지 못합니다. 더군다나, ID가 새 사용자나 그룹에 지정되면 ID의 새 소유자는 디렉토리의 소유자가 실제로 이전 소유자에 부여하려고 했던 액세스 권한을 받게 됩니다(AFS ID 재사용은 이런 이유로 권장하지 않습니다).

ACL에서 쓸모없는 AFS UID를 제거하려면 fs cleanacl 명령을 사용하십시오.

### ACL에서 쓸모없는 AFS ID를 지우려면

1. ACL을 지우는 각 디렉토리에 a(관리) 권한이 있는지 확인합니다. 필요하면 ACL 표시에서 자세히 설명되어 있는 fs listacl 명령을 실행하십시오.

          % fs listacl [<dir/file path>]

2. fs cleanacl 명령을 실행하여 쓸모없는 AFS ID에서 항목을 제거합니다.

          % fs cleanacl [<dir/file path>+]

   여기서,

   cl
     사용할 수 있는 cleanacl의 가장 짧은 축약형입니다.

   dir/file path
     ACL을 지울 각 디렉토리를 명명합니다. 이 인수가 파일을 명명하면 그 디렉토리의 ACL이 지워집니다. 이 인수를 생략하여 현재 작업 디렉토리의 ACL을 지웁니다.

     각 디렉토리에 읽기/쓰기 경로를 지정하여 읽기 전용 볼륨을 변경하려고 할 때 실패하지 않도록 합니다. 일반적으로, 경로 이름의 두 번째 레벨에서 셀 이름 앞에 점을 찍어 읽기/쓰기 경로를 표시합니다(예를 들어, /afs/.example.com). 파일 공간을 통한 읽기/쓰기와 읽기 전용 경로의 개념에 대한 내용은 마운트 포인트 통과 규칙을 참조하십시오.

     다음 표기법을 자체 경로 이름이나 경로 이름의 일부에 사용할 수도 있습니다.

     .
       (점 하나). 이것만 사용하면 현재 작업 디렉토리의 ACL을 지웁니다.

     ..
       (점 두 개). 이것만 사용하면 현재 작업 디렉토리의 상위 디렉토리에서 ACL을 지웁니다.

     *
       (별표). 현재 작업 디렉토리의 각 하위 디렉토리에서 ACL을 지웁니다. 그러나, 별표를 사용하고 디렉토리의 ACL에 쓸모없는 AFS ID가 있으면 다음 오류 메시지는 디렉토리의 모든 파일에 나타납니다.

              fs: 'filename': Not a directory

디렉토리에 쓸모없는 AFS ID가 있으면 명령 인터프리터는 다음 헤더 밑에 지워진 ACL을 표시합니다.

       Access list for directory is now

디렉토리의 ACL에 쓸모없는 AFS ID가 없으면 다음 메시지가 각각에 대해 나타납니다.

       Access list for directory is fine.

## AFS가 UNIX 모드 비트를 해석하는 방법

비록 AFS에서 UFS가 사용하는 모드 비트 대신 ACL을 사용하여 파일 데이터를 보호해도 이는 모드 비트를 전적으로 무시합니다. AFS 파일이나 디렉토리에서 chmod 명령을 실행하면 AFS는 비트를 적절히 변경합니다. 파일의 모드 비트를 변경하려면 파일 디렉토리의 ACL에 w(쓰기) 권한이 있어야 합니다. 디렉토리의 모드 비트를 변경하려면 그 ACL에 d(삭제), i(삽입) 그리고 l(조회) 권한이 있어야 합니다.

AFS는 다음과 같이 UNIX 모드 비트를 사용하기도 합니다.

- 이는 초기 비트를 사용하여 요소 유형을 결정합니다. 이는 ls -l 명령의 출력에 처음으로 나타나는 비트이며 파일이나 문자에 대해 하이픈(-)을 표시하고 디렉토리에 대해 d를 표시합니다.
- 이는 디렉토리의 모드 비트를 사용하지 않습니다.
- 파일에 대해 비트의 첫 집합(소유자)은 다음과 같은 방법으로 파일에 적용되는 ACL 항목과 상호작용합니다.
  - 첫 r 모드 비트가 설정되지 않으면 아무도(소유자 포함) ACL에 대해 가지고 있는 권한에 관계없이 파일을 읽을 수 없습니다. 비트가 설정되면 사용자는 파일을 읽기 위해 파일 디렉토리의 ACL에 r(읽기)과 l 권한을 가지고 있어야 합니다.
  - 첫 w 모드 비트가 설정되지 않으면 아무도(소유자 포함) 파일을 수정할 수 없습니다. w 비트가 설정되면 사용자는 파일을 수정하기 위해 파일 디렉토리의 ACL에 w와 l 권한을 가지고 있어야 합니다.
  - x 모드 비트에 직접 해당하는 ACL 권한이 없지만 AFS에 저장된 파일을 실행하려면 사용자는 파일 디렉토리의 ACL에 r과 l 권한이 있어야 합니다.

[ 페이지의 맨 위 | 이전 페이지 | 다음 페이지 | 목차 | 색인 ]

© IBM Corporation 2000. All Rights Reserved