

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# NFS(Network File System) 수준 사용자, 그룹 및 권한 사용
<a name="accessing-fs-nfs-permissions"></a>

파일 시스템을 만들면 기본적으로 루트 사용자(UID 0)에게만 읽기, 쓰기 및 실행 권한이 있습니다. 다른 사용자가 파일 시스템을 수정할 수 있게 하려면 루트 사용자가 다른 사용자에게 액세스 권한을 명시적으로 부여해야 합니다. 액세스 포인트를 사용하여 루트가 아닌 사용자가 쓰기 가능한 디렉터리를 자동으로 생성할 수 있습니다. 자세한 내용은 [액세스 포인트 작업](efs-access-points.md) 단원을 참조하십시오.

EFS 파일 시스템 객체에는 연결된 Unix 스타일 모드가 있습니다. 이 모드 값은 해당 객체에 대한 작업을 수행할 수 있는 권한을 정의합니다. Unix 스타일 시스템에 익숙한 사용자는 이러한 권한과 관련된 Amazon EFS 작동 방식을 쉽게 이해할 수 있습니다.

또한 Unix 스타일 시스템에서 사용자와 그룹은 Amazon EFS가 파일 소유권을 나타내는 데 사용하는 숫자 식별자에 매핑됩니다 Amazon EFS의 경우 파일 시스템 객체(파일, 디렉터리 등)는 단일 소유자 및 단일 그룹이 소유합니다. Amazon EFS는 사용자가 파일 시스템 객체에 액세스하려고 할 때 매핑된 숫자 ID를 사용하여 권한을 확인합니다.

**참고**  
NFS 프로토콜은 사용자당 최대 16개의 그룹 ID(GID)를 지원하며 추가 GID는 NFS 클라이언트 요청에서 잘립니다. 자세한 내용은 [NFS 파일 시스템에서 허용된 파일에 대한 액세스가 거부되었습니다.](troubleshooting-efs-general.md#nfs-16-group-limit) 단원을 참조하십시오.

다음에서는 권한의 예제와 Amazon EFS에 대한 NFS 권한 고려 사항 관련 토론을 확인할 수 있습니다.

**Topics**
+ [파일 및 디렉터리 권한](user-and-group-permissions.md)
+ [예제: EFS 파일 시스템 사용 사례 및 권한](#accessing-fs-nfs-permissions-ex-scenarios)
+ [파일 시스템 내의 파일 및 디렉터리에 대한 사용자 및 그룹 ID 권한](#accessing-fs-nfs-permissions-uid-gid)
+ [루트 스쿼싱 사용 안 함](#accessing-fs-nfs-permissions-root-user)
+ [권한 캐싱](#accessing-fs-nfs-permissions-caching)
+ [파일 시스템 객체 소유권 변경](#accessing-fs-nfs-permissions-chown-restricted)
+ [EFS 액세스 포인트](#accessing-fs-nfs-permissions-access-points)

# 파일 및 디렉터리 권한
<a name="user-and-group-permissions"></a>

EFS 파일 시스템의 파일 및 디렉터리는 EFS 액세스 포인트에서 재정의하지 않는 한, 탑재 NFSv4.1 클라이언트에서 어설션하는 사용자 및 그룹 ID를 기반으로 표준 Unix 스타일의 읽기, 쓰기, 실행 권한을 지원합니다.  자세한 내용은 [NFS(Network File System) 수준 사용자, 그룹 및 권한 사용](accessing-fs-nfs-permissions.md) 단원을 참조하십시오.

**참고**  
기본적으로 이러한 액세스 제어 계층은 사용자 및 그룹 ID 어설션에서 NFSv4.1 클라이언트를 신뢰하는지에 따라 달라집니다. AWS Identity and Access Management (IAM) 리소스 기반 정책 및 자격 증명 정책을 사용하여 NFS 클라이언트에 권한을 부여하고 읽기 전용, 쓰기 및 루트 액세스 권한을 제공할 수 있습니다. EFS 액세스 포인트를 사용하여 NFS 클라이언트에서 제공하는 운영 체제 사용자 및 그룹 자격 증명 정보를 재정의할 수 있습니다. 자세한 내용은 [IAM을 사용하여 파일 시스템에 대한 액세스 제어](iam-access-control-nfs-efs.md) 및 [액세스 포인트 생성](create-access-point.md) 섹션을 참조하세요.

파일 및 디렉터리 읽기, 쓰기, 실행 권한에 대한 예를 들겠습니다. Alice는 파일 시스템의 개인 디렉터리인 `/alice`에서 원하는 모든 파일을 읽고 쓸 수 있는 권한을 갖고 있습니다. 그러나 동일한 파일 시스템에 위치한 Mark의 개인 디렉터리인 `/mark`의 파일을 읽거나 쓸 권한은 갖고 있지 않습니다. Alice와 Mark는 둘 다 공유 디렉터리 `/share`에서 파일을 읽을 수 있지만 쓸 수는 없습니다.

## 예제: EFS 파일 시스템 사용 사례 및 권한
<a name="accessing-fs-nfs-permissions-ex-scenarios"></a>

VPC에서 EFS 파일 시스템과 이 파일 시스템의 탑재 대상을 만들면 Amazon EC2 인스턴스에서 로컬로 원격 파일 시스템을 탑재할 수 있습니다. `mount` 명령은 파일 시스템에서 디렉터리를 얼마든지 탑재할 수 있습니다. 그러나 파일 시스템을 처음으로 만든 경우 `/`에는 루트 디렉터리가 하나뿐입니다. 루트 사용자 및 루트 그룹이 탑재된 디렉터리를 소유합니다.

다음 `mount` 명령은 `/efs-mount-point` 로컬 디렉터리에서 파일 시스템 DNS 이름으로 식별되는 Amazon EFS 파일 시스템의 루트 디렉터리를 탑재합니다.

```
sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-id.efs.aws-region.amazonaws.com:/ efs-mount-point
```

초기 권한 모드에서는 다음과 같이 허용됩니다.
+ 소유자 루트**에 대한 `read-write-execute` 권한
+ 그룹 루트**에 대한 `read-execute` 권한 
+ 다른 사용자에게 `read-execute` 권한이 허용됨

루트 사용자만 이 디렉터리를 수정할 수 있습니다. 또한 루트 사용자는 다른 사용자에게 이 디렉터리에 쓸 수 있는 권한을 부여할 수도 있습니다. 예:
+ 쓰기 가능한 사용자별 하위 디렉터리를 만듭니다. 단계별 지침은 [자습서: 쓰기 가능한 사용자별 하위 디렉터리 생성](accessing-fs-nfs-permissions-per-user-subdirs.md)섹션을 참조하세요.
+ 사용자가 EFS 파일 시스템 루트에 쓸 수 있도록 합니다. 루트 권한이 있는 사용자는 다른 사용자에게 파일 시스템에 대한 액세스 권한을 부여할 수 있습니다.
  + EFS 파일 시스템 소유권을 *루트*가 아닌 사용자 및 그룹에게로 변경하려면 다음 명령을 사용합니다.

    ```
    $ sudo chown user:group /EFSroot
    ```
  + 파일 시스템의 권한을 더욱 허용적으로 변경하려면 다음 명령을 사용합니다.

    ```
    $ sudo chmod 777 /EFSroot
    ```

    이 명령은 파일 시스템이 탑재된 모든 EC2 인스턴스에 대한 읽기-쓰기-실행 권한을 사용자 모두에게 부여합니다.

## 파일 시스템 내의 파일 및 디렉터리에 대한 사용자 및 그룹 ID 권한
<a name="accessing-fs-nfs-permissions-uid-gid"></a>

EFS 파일 시스템의 파일 및 디렉터리는 사용자 ID 및 그룹 ID를 기반으로 표준 Unix 스타일의 읽기, 쓰기 및 실행 권한을 지원합니다. NFS 클라이언트가 액세스 포인트를 사용하지 않고 EFS 파일 시스템을 탑재하면 클라이언트에서 제공한 사용자 ID와 그룹 ID를 신뢰할 수 있게 됩니다. EFS 액세스 포인트를 사용하여 NFS 클라이언트에서 사용하는 사용자 ID 및 그룹 ID를 재정의할 수 있습니다. 사용자가 파일 및 디렉터리에 액세스하려고 하면 Amazon EFS는 사용자 ID와 그룹 ID를 검사하여 각 사용자에게 객체에 액세스할 권한이 있는지 확인합니다. 또한 Amazon EFS는 이러한 ID를 사용하여 사용자가 생성한 새 파일 및 디렉터리의 소유자 및 그룹 소유자를 나타냅니다. Amazon EFS는 사용자 또는 그룹 이름을 검사하지 않고 숫자 식별자만 사용합니다.

**참고**  
EC2 인스턴스에서 사용자를 만드는 경우 만든 사용자에게 임의의 숫자 사용자 ID(UID) 및 그룹 ID(GID)를 할당할 수 있습니다. 숫자 사용자 ID는 Linux 시스템의 `/etc/passwd` 파일에서 설정합니다. 숫자 그룹 ID는 `/etc/group` 파일에 있습니다. 이러한 파일은 이름과 ID 간의 매핑을 정의합니다. EC2 인스턴스 외부에서 Amazon EFS는 루트 ID 0을 비롯하여 이러한 ID를 인증하지 않습니다.

사용자가 서로 다른 두 EC2 인스턴스에서 EFS 파일 시스템에 액세스하는 경우 이러한 인스턴스에서 사용자의 UID가 동일한지 혹은 다른지 여부에 따라 다음과 같이 다르게 동작할 수 있습니다.
+ 두 EC2 인스턴스에서 사용자 ID가 동일한 경우, Amazon EFS는 사용하는 EC2 인스턴스와 상관없이 해당 ID가 동일한 사용자를 나타내는 것으로 간주합니다. 따라서 어느 쪽 EC2 인스턴스에서 파일 시스템에 액세스하든 사용자 환경이 동일합니다.
+ 두 EC2 인스턴스에서 사용자 ID가 동일하지 않은 경우, Amazon EFS는 사용자를 서로 다른 사용자로 간주합니다. 서로 다른 두 EC2 인스턴스에서 EFS 파일 시스템에 액세스할 때는 사용자 환경이 동일하지 않습니다.
+ 다른 EC2 인스턴스에 있는 서로 다른 두 사용자가 ID를 공유하는 경우, Amazon EFS는 이들을 동일한 사용자로 간주합니다.

EC2 인스턴스에서 일관된 사용자 ID 매핑 관리를 고려할 수 있습니다. 사용자는 `id` 명령을 사용하여 자신의 숫자 ID를 확인할 수 있습니다.

```
$ id 

uid=502(joe) gid=502(joe) groups=502(joe)
```

### ID 매퍼 끄기
<a name="accessing-fs-nfs-permissions-id-mapper"></a>

운영 체제의 NFS 유틸리티에는 사용자 이름과 ID 간의 매핑을 관리하는 ID 매퍼라는 데몬이 포함되어 있습니다. Amazon Linux에서는 이 대몬(daemon)을 `rpc.idmapd`라고 하며, Ubuntu에서는 `idmapd`라고 합니다. ID 매퍼는 사용자 및 그룹 ID를 이름으로 전환하고 그 반대로도 전환합니다. 그러나 Amazon EFS에서는 숫자 ID만 처리합니다. EC2 인스턴스에서는 이 프로세스를 끄는 것이 좋습니다. Amazon Linux에서는 일반적으로 ID 매퍼가 비활성화되어 있으므로 이러한 경우에는 ID 매퍼를 활성화하지 마세요. ID 매퍼를 끄려면 다음과 같은 명령을 사용합니다.

```
$  service rpcidmapd status
$  sudo service rpcidmapd stop
```

## 루트 스쿼싱 사용 안 함
<a name="accessing-fs-nfs-permissions-root-user"></a>

기본적으로 EFS 파일 시스템에서는 루트 스쿼시가 비활성화됩니다. Amazon EFS는 `no_root_squash`를 사용하여 Linux NFS 서버처럼 동작합니다. 사용자 또는 그룹 ID가 0이면 에서는 해당 사용자를 `root` 사용자로 취급하고 권한 검사를 우회하여 모든 파일 시스템 객체에 대한 액세스 및 수정을 허용합니다. AWS Identity and Access Management (AWS IAM) 자격 증명 또는 리소스 정책이 `ClientRootAccess` 작업에 대한 액세스를 허용하지 않는 경우 클라이언트 연결에서 루트 스쿼싱을 활성화할 수 있습니다. 루트 스쿼싱이 활성화되어 있으면 루트 사용자가 NFS 서버에 대한 권한이 제한되는 사용자로 전환됩니다.

자세한 내용은 [IAM을 사용하여 파일 시스템에 대한 액세스 제어](iam-access-control-nfs-efs.md) 단원을 참조하십시오.

### NFS 클라이언트에 대한 IAM 권한 부여를 사용하여 루트 스쿼싱 활성화
<a name="enable-root-squashing"></a>

단일 관리 워크스테이션을 제외한 모든 AWS 보안 주체의 EFS 파일 시스템에 대한 루트 액세스를 방지하도록 Amazon EFS를 구성할 수 있습니다. 이를 위해 NFS(Network File System) 클라이언트에 대한 AWS Identity and Access Management (IAM) 권한 부여를 구성합니다.

이렇게 하려면 다음과 같이 두 가지 IAM 권한 정책을 구성해야 합니다.
+ 파일 시스템에 대한 읽기 및 쓰기 액세스를 명시적으로 허용하고 루트 액세스를 암시적으로 거부하는 EFS 파일 시스템 정책을 생성합니다.
+ EC2 인스턴스 프로파일을 사용하여 파일 시스템에 대한 루트 액세스가 필요한 Amazon EC2 관리 워크스테이션에 IAM 자격 증명을 할당합니다. Amazon EC2 인스턴스 프로파일에 대한 자세한 내용은 *AWS Identity and Access Management 사용 설명서*의 [인스턴스 프로파일 사용](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)을 참조하세요.
+ `AmazonElasticFileSystemClientFullAccess` AWS 관리 워크스테이션의 IAM 역할에 관리형 정책을 할당합니다. Amazon EFS의 AWS 관리형 정책에 대한 자세한 내용은 섹션을 참조하세요[Amazon EFS의 자격 증명 및 액세스 관리](security-iam.md).

NFS 클라이언트에 대한 IAM 권한 부여를 사용하여 루트 스쿼싱을 활성화하려면 다음 절차를 따르세요.

**파일 시스템에 대한 루트 액세스를 차단하려면**

1. Amazon Elastic File System 콘솔([https://console.aws.amazon.com/efs/](https://console.aws.amazon.com/efs/))을 엽니다.

1. **파일 시스템**을 선택합니다.

1. 루트 스쿼싱을 활성화할 파일 시스템을 선택합니다.

1. 파일 시스템 세부 정보 페이지에서 **파일 시스템 정책**을 선택한 다음 **편집**을 선택합니다. **파일 시스템 정책** 페이지가 나타납니다.

1. **정책 옵션**에서 **기본적으로 루트 액세스 차단\$1**을 선택합니다. 정책 JSON 객체가 **정책 편집기**에 나타납니다.

1. **저장**을 선택하여 파일 시스템 정책을 저장합니다.

익명이 아닌 클라이언트는 자격 증명 기반 정책을 통해 파일 시스템에 대한 루트 액세스를 얻을 수 있습니다. `AmazonElasticFileSystemClientFullAccess` 관리형 정책을 워크스테이션의 역할에 연결하면 IAM은 자격 증명 정책에 따라 워크스테이션에 루트 액세스 권한을 부여합니다.

**관리 워크스테이션에서 루트 액세스를 활성화하려면**

1. IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 엽니다.

1. `EFS-client-root-access`라는 Amazon EC2의 역할을 생성합니다. IAM은 생성한 EC2 역할과 같은 이름의 인스턴스 프로파일을 생성합니다.

1. 생성한 EC2 역할에 AWS 관리`AmazonElasticFileSystemClientFullAccess`형 정책을 할당합니다. 이 정책의 내용은 다음과 같습니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "elasticfilesystem:ClientMount",
                   "elasticfilesystem:ClientRootAccess",
                   "elasticfilesystem:ClientWrite",
                   "elasticfilesystem:DescribeMountTargets"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. 다음 설명에 따라 관리 워크스테이션으로 사용 중인 EC2 인스턴스에 인스턴스 프로파일을 연결합니다. 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서**의 [인스턴스에 IAM 역할 연결](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#attach-iam-role)을 참조하세요.

   1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

   1. 탐색 창에서 **인스턴스**를 선택합니다.

   1. 인스턴스를 선택합니다. **작업**에서 **인스턴스 설정**, **IAM 역할 연결/바꾸기**을 차례로 선택합니다.

   1. 첫 번째 단계에서 생성한 IAM 역할인 `EFS-client-root-access`를 선택하고 **적용**을 선택합니다.

1. 관리 워크스테이션에 EFS 탑재 도우미를 설치합니다. EFS 탑재 도우미 및 amazon-efs-utils 패키지에 대한 자세한 내용은 [Amazon EFS 클라이언트 수동 설치](using-amazon-efs-utils.md) 섹션을 참조하세요.

1. 다음 명령을 `iam` 탑재 옵션과 함께 사용하여 관리 워크스테이션에 EFS 파일 시스템을 탑재합니다.

   ```
   $ sudo mount -t efs -o tls,iam file-system-id:/ efs-mount-point
   ```

   IAM 권한 부여를 사용하여 파일 시스템을 자동으로 탑재하도록 Amazon EC2 인스턴스를 구성할 수 있습니다. IAM 권한 부여를 사용하여 EFS 파일 시스템을 탑재하는 방법에 대한 자세한 내용은 [IAM 권한 부여를 통한 탑재](mounting-IAM-option.md) 섹션을 참조하세요.

## 권한 캐싱
<a name="accessing-fs-nfs-permissions-caching"></a>

Amazon EFS에서는 짧은 기간 동안 파일 권한을 캐싱합니다. 따라서 최근에 액세스 권한이 취소된 사용자가 짧은 기간 동안 해당 객체에 계속해서 액세스하게 될 수 있습니다.

## 파일 시스템 객체 소유권 변경
<a name="accessing-fs-nfs-permissions-chown-restricted"></a>

Amazon EFS에서는 POSIX `chown_restricted` 속성을 강제합니다. 즉, 루트 사용자만 파일 시스템 객체의 소유자를 변경할 수 있습니다. 루트 사용자 또는 소유자는 파일 시스템 객체의 소유자 그룹을 변경할 수 있습니다. 그러나 사용자가 루트 사용자가 아닌 경우 그룹은 소유자가 멤버인 그룹으로만 변경할 수 있습니다.

## EFS 액세스 포인트
<a name="accessing-fs-nfs-permissions-access-points"></a>

액세스 포인트**는 운영 체제 사용자, 그룹 및 파일 시스템 경로를 액세스 포인트를 사용하여 수행된 모든 파일 시스템 요청에 적용합니다. 액세스 포인트의 운영 체제 사용자 및 그룹은 NFS 클라이언트에서 제공하는 모든 자격 증명 정보를 재정의합니다. 파일 시스템 경로는 액세스 포인트의 루트 디렉터리로 클라이언트에 노출됩니다. 이렇게 하면 공유 파일 기반 데이터 세트에 액세스할 때 각 애플리케이션이 항상 올바른 운영 체제 자격 증명과 올바른 디렉터리를 사용할 수 있습니다. 액세스 포인트를 사용하는 애플리케이션은 자체 디렉터리 및 해당 하위 디렉터리의 데이터에만 액세스할 수 있습니다. 액세스 포인트에 대한 자세한 내용은 [액세스 포인트 작업](efs-access-points.md) 섹션을 참조하십시오.