

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

# 논리적 디렉터리 구현
<a name="implement-log-dirs"></a>

**중요**  
**루트 디렉터리 요구 사항**
Amazon S3 성능 최적화 설정을 사용하지 않는 경우 시작 시 루트 디렉터리가 있어야 합니다.
Amazon S3의 경우 이는 슬래시()로 끝나는 0바이트 객체를 생성하는 것을 의미합니다`/`.
이 요구 사항을 방지하려면 서버를 생성하거나 업데이트할 때 Amazon S3 성능 최적화를 활성화하는 것이 좋습니다.
LOGICAL HomeDirectoryType을 사용하여 HomeDirectory를 지정할 때 값은 논리적 디렉터리 매핑 중 하나에 매핑되어야 합니다. 이 서비스는 사용자 생성 및 업데이트 중에 이를 검증하여 작동하지 않는 구성을 방지합니다.
**논리적 홈 디렉터리 구성**
LOGICAL을 HomeDirectoryType으로 사용하는 경우 다음 사항에 유의하세요.  
HomeDirectory 값은 기존 논리적 디렉터리 매핑 중 하나와 일치해야 합니다.
시스템은 사용자 생성 및 업데이트 중에 이를 자동으로 검증합니다.
이 검증은 액세스 문제를 일으키는 구성을 방지합니다.

## 논리적 디렉터리 활성화
<a name="enable-log-dirs-small"></a>

사용자의 논리적 디렉터리를 사용하려면 `HomeDirectoryType` 파라미터를 로 설정합니다`LOGICAL`. 새 사용자를 생성하거나 기존 사용자를 업데이트할 때이 작업을 수행합니다.

```
"HomeDirectoryType": "LOGICAL"
```

## 사용자`chroot`에 대해 활성화
<a name="chroot"></a>

**chroot**의 경우, 각 사용자에 대한 단일 `Entry` 및 `Target` 쌍으로 구성된 디렉터리 구조를 만드세요. 항목 **/**는 루트 폴더를 나타내는 반면, **대상**은 버킷 또는 파일 시스템의 실제 위치를 지정합니다.

------
#### [ Example for Amazon S3 ]

```
[{"Entry": "/", "Target": "/amzn-s3-demo-bucket/jane"}]
```

------
#### [ Example for Amazon EFS ]

```
[{"Entry": "/", "Target": "/fs-faa1a123/jane"}]
```

------

이전 예와 같이 절대 경로를 사용하거나, 다음 예와 같이 사용자 이름을 동적으로 `${transfer:UserName}`로 대체할 수 있습니다.

```
[{"Entry": "/", "Target":
"/amzn-s3-demo-bucket/${transfer:UserName}"}]
```

위 예에서 사용자는 루트 디렉터리에 잠겨 있어 계층 구조에서 상위 위치로 이동할 수 없습니다.

## 가상 디렉터리 구조
<a name="virtual-dirs"></a>

가상 디렉터리 구조의 경우, 사용자의 IAM 역할 매핑에 액세스 권한이 있는 한, 여러 버킷 또는 파일 시스템을 포함하여 S3 버킷 또는 EFS 파일 시스템 어디에나 대상을 사용하여 여러 `Entry` `Target` 쌍을 생성할 수 있습니다.

다음 가상 구조 예제에서는 사용자가 AWS SFTP에 로그인할 때 , `/pics`, `/doc` `/reporting`및 하위 디렉터리가 있는 루트 디렉터리에 있습니다`/anotherpath/subpath/financials`.

**참고**  
Amazon S3 디렉터리의 성능을 최적화하도록 선택하지 않는 한(서버를 생성하거나 업데이트할 때) 사용자 또는 관리자는 디렉터리가 아직 없는 경우 디렉터리를 생성해야 합니다. 이 문제를 피하는 것은 Amazon S3 성능 최적화를 고려해야 하는 이유입니다.  
Amazon EFS의 경우 관리자가 논리적 매핑 또는 `/` 디렉터리를 생성해야 합니다.

```
[
{"Entry": "/pics", "Target": "/amzn-s3-demo-bucket1/pics"}, 
{"Entry": "/doc", "Target": "/amzn-s3-demo-bucket1/anotherpath/docs"},
{"Entry": "/reporting", "Target": "/amzn-s3-demo-bucket2/Q1"},
{"Entry": "/anotherpath/subpath/financials", "Target": "/amzn-s3-demo-bucket2/financials"}]
```



**참고**  
 매핑한 특정 폴더에만 파일을 업로드할 수 있습니다. 즉, 이전 예에서는 `/anotherpath` 또는 `anotherpath/subpath` 디렉터리에는 업로드할 수 없고; `anotherpath/subpath/financials`에만 업로드할 수 있습니다. 또한 경로가 겹칠 수 없으므로 이러한 경로에 직접 매핑할 수 없습니다.  
 예를 들어, 다음 매핑을 형성한다고 가정하겠습니다:   

```
{
   "Entry": "/pics", 
   "Target": "/amzn-s3-demo-bucket/pics"
}, 
{
   "Entry": "/doc", 
   "Target": "/amzn-s3-demo-bucket/mydocs"
}, 
{
   "Entry": "/temp", 
   "Target": "/amzn-s3-demo-bucket2/temporary"
}
```
 해당 버킷에만 파일을 업로드할 수 있습니다. `sftp`를 통해 처음 연결하면 루트 디렉터리인 `/`(으)로 이동됩니다. 해당 디렉터리에 파일을 업로드하려고 하면 업로드가 실패합니다. 다음 명령은 예 순서를 나타냅니다:   

```
sftp> pwd
Remote working directory: /
sftp> put file
Uploading file to /file
remote open("/file"): No such file or directory
```
임의의 `directory/sub-directory` 위치에 업로드하려면 경로를 `sub-directory`에 명시적으로 매핑해야 합니다. 

다운로드하여 사용할 수 있는 AWS CloudFormation 템플릿을 포함하여 논리적 디렉터리 구성 및 사용자에 **chroot** 대한 자세한 내용은 AWS 스토리지 블로그의 [ chroot 및 논리적 디렉터리를 사용하여 AWS SFTP 구조 간소화](https://aws.amazon.com/blogs/storage/simplify-your-aws-sftp-structure-with-chroot-and-logical-directories/)를 참조하세요.