

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 實作邏輯目錄
<a name="implement-log-dirs"></a>

**重要**  
**根目錄需求**
如果您未使用 Amazon S3 效能最佳化設定，您的根目錄必須在啟動時存在。
對於 Amazon S3，這表示建立以正斜線 () 結尾的零位元組物件`/`。
若要避免此需求，請考慮在建立或更新伺服器時啟用 Amazon S3 效能最佳化。
使用 LOGICAL HomeDirectory HomeDirectoryType 時，該值必須映射至其中一個邏輯目錄映射。服務會在使用者建立和更新期間驗證這一點，以防止組態無法運作。
**邏輯主目錄組態**
使用 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>

對於虛擬目錄結構，您可以與 S3 儲存貯體或 EFS 檔案系統中任何位置的目標建立多個`Entry``Target`配對，包括跨多個儲存貯體或檔案系統，只要使用者的 IAM 角色映射具有存取它們的許可。

在下列虛擬結構範例中，當使用者登入 AWS SFTP 時，他們位於具有 `/pics`、`/reporting`、 `/doc`和 子目錄的根目錄中`/anotherpath/subpath/financials`。

**注意**  
除非您選擇最佳化 Amazon S3 目錄的效能 （當您建立或更新伺服器時），否則如果 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`。

如需**chroot**為使用者設定邏輯目錄和 的詳細資訊，包括您可以下載和使用的 AWS CloudFormation 範本，請參閱 AWS 儲存部落格中的[使用 chroot 和邏輯目錄簡化 AWS SFTP 結構](https://aws.amazon.com/blogs/storage/simplify-your-aws-sftp-structure-with-chroot-and-logical-directories/)。