

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AppSpec の「許可」セクション (EC2/オンプレミスデプロイのみ)
<a name="reference-appspec-file-structure-permissions"></a>

`'permissions'` セクションでは、インスタンスへのコピー後に、特別なアクセス許可を `'files'` セクションのファイルおよびディレクトリ/フォルダに適用する方法を指定します。複数の `object` 指示を指定できます。このセクションはオプションです。Amazon Linux、Ubuntu Server、RHEL インスタンスにのみ適用されます。

**注記**  
EC2/オンプレミスデプロイにのみ、`'permissions'` セクションを使用します。Lambda または Amazon ECS AWS のデプロイには使用されません。

このセクションの構造は次のとおりです。

```
permissions:
  - object: object-specification
    pattern: pattern-specification
    except: exception-specification
    owner: owner-account-name
    group: group-name
    mode: mode-specification
    acls: 
      - acls-specification 
    context:
      user: user-specification
      type: type-specification
      range: range-specification
    type:
      - object-type
```

手順は次のとおりです。
+ `object` – 必須。これは、インスタンスへのファイルシステムオブジェクトのコピー後に、指定されたアクセス権限を適用する一連のファイルシステムオブジェクト (ファイルまたはディレクトリ/フォルダ) です。

  文字列で `object` を指定します。
+ `pattern` - オプション。アクセス権限を適用するパターンを指定します。指定しない場合、または特殊文字 **"\$1\$1"** で指定する場合、`type` に応じて一致するすべてのファイルまたはディレクトリに、指定されたアクセス権限が適用されます。

  引用符 ("") 付きの文字列で `pattern` を指定します。
+ `except` - オプション。`pattern` の例外とするファイルまたはディレクトリを指定します。

  角括弧で囲った文字列のカンマ区切りリストで `except` を指定します。
+ `owner` - オプション。`object` の所有者の名前。指定しない場合、既存のすべての所有者が元のファイルに適用されます。それ以外の場合、ディレクトリ/フォルダ構造は、コピーオペレーションによって変更されません。

  文字列で `owner` を指定します。
+ `group` - オプション。`object` のグループの名前。指定しない場合、既存のすべてのグループが元のファイルに適用されます。それ以外の場合、ディレクトリ/フォルダ構造は、コピーオペレーションによって変更されません。

  文字列で `group` を指定します。
+ `mode` - オプション。`object` に適用されるアクセス権限を指定する数値。モード設定は、Linux の chmod コマンド の構文に従います。
**重要**  
値の先頭にゼロが含まれる場合は、ダブルクォートで囲むか、先頭のゼロを削除して 3 桁だけにする必要があります。
**注記**  
**u\$1x** の設定では、`mode` のような記号表記はサポートされていません。

  例:
  + `mode: "0644"` は、オブジェクトの所有者に読み書きのアクセス権限 (6)、グループに対する読み取り専用アクセス許可 (4)、およびその他すべてのユーザーに読み取り専用アクセス権限 (4) を与えます。
  + `mode: 644` と同じ権限を付与する `mode: "0644"`。
  + `mode: 4755` は setuid 属性を設定し (4)、所有者にフルコントロール権限を与え (7)、グループに対する読み取りと実行の権限を付与し (5)、他のすべてのユーザーに読み取りと実行の権限を付与します (5)。

    その他の例については、Linux の chmod コマンドのドキュメントを参照してください。

    モードを指定しない場合、既存のすべてのモードが元のファイルに適用されます。それ以外の場合、フォルダ構造は、コピーオペレーションによって変更されません。
+ `acls` - オプション。1 つ以上のアクセスコントロールリスト (ACL) エントリを表す文字列のリストが、`object` に適用されます。たとえば、**u:bob:rw** は、ユーザー **bob** の読み取りおよび書き込みアクセス権限を表します （その他の例については、Linux の `setfacl` コマンドドキュメントの ACL 入力形式の例を参照してください）。複数の ACL エントリを指定できます。`acls` を指定しない場合、既存のすべての ACL が元のファイルに適用されます。それ以外の場合、ディレクトリ/フォルダ構造は、コピーオペレーションによって変更されません。既存の ACL は置き換えられます。

  `acls` を指定します。ダッシュ (-) の後にスペースを続け、その後に文字列を続けます（例: `- u:jane:rw`）。ACL が複数ある場合は、それぞれ個別の行で指定します。
**注記**  
名前のないユーザー、名前のないグループ、またはその他の同様の ACL エントリを設定すると、AppSpec ファイルは失敗します。これらのタイプのアクセス許可を指定するには、代わりに `mode` を使用します。
+ `context` - オプション。Security-Enhanced Linux (SELinux) 対応インスタンスの場合、コピーしたオブジェクトに適用されるセキュリティ関連コンテキストラベルのリスト。ラベルは、`user`, `type`、および `range` を含むキーとして指定されます。(詳細については、SELinux のドキュメントを参照してください)。各キーは文字列で入力します。指定しない場合、既存のすべてのラベルが元のファイルに適用されます。それ以外の場合、ディレクトリ/フォルダ構造は、コピーオペレーションによって変更されません。
  + `user` - オプション。SELinux ユーザー。
  + `type` - オプション。SELinux の型名。
  + `range` - オプション。SELinux の範囲指定子。マルチレベルセキュリティ (MLS) およびマルチカテゴリセキュリティ (MCS) がマシンで有効になっていない限り、この効果はありません。有効になっていない場合は、`range` はデフォルトで **s0** になります。

  文字列 で `context` を指定します（例: `user: unconfined_u`）。それぞれの `context` は個別の行で指定されます。
+ `type` - オプション。指定された権限を適用するオブジェクトのタイプ。`type` は、**file** あるいは **directory** に設定できる文字列です。**file** を指定した場合、アクセス許可は、コピーオペレーションの後に（`object` 自体ではなく） `object` 内に直接含まれるファイルのみに適用されます。**directory** を指定した場合、アクセス権限は、コピーオペレーションの後に（`object` 自体ではなく）、`object` 内のいずれかの場所にあるすべてのディレクトリ/フォルダに再帰的に適用されます。

  `type` を指定します。ダッシュ (-) の後にスペースを続け、その後に文字列を続けます（例: `- file`）。

## 「permissions」セクションの例
<a name="reference-appspec-file-structure-permissions-example"></a>

次の例は、`object`、`pattern`、`except`、`owner`、`mode`、および `type` の手順を使用して `'permissions'` セクションを指定する方法を示しています。この例は、Amazon Linux、Ubuntu Server、RHEL インスタンスにのみ適用されます。この例では、次のファイルとフォルダが、この階層のインスタンスにコピーされることを前提としています。

```
/tmp
  `-- my-app
       |-- my-file-1.txt
       |-- my-file-2.txt
       |-- my-file-3.txt
       |-- my-folder-1
       |     |-- my-file-4.txt
       |     |-- my-file-5.txt
       |     `-- my-file-6.txt
       `-- my-folder-2
             |-- my-file-7.txt
             |-- my-file-8.txt
             |-- my-file-9.txt
	           `-- my-folder-3
```

次の AppSpec ファイルは、コピー後にこれらのファイルとフォルダでアクセス権限を設定する方法を示しています。

```
version: 0.0
os: linux
# Copy over all of the folders and files with the permissions they
#  were originally assigned.
files:
  - source: ./my-file-1.txt
    destination: /tmp/my-app
  - source: ./my-file-2.txt
    destination: /tmp/my-app
  - source: ./my-file-3.txt
    destination: /tmp/my-app
  - source: ./my-folder-1
    destination: /tmp/my-app/my-folder-1
  - source: ./my-folder-2
    destination: /tmp/my-app/my-folder-2
# 1) For all of the files in the /tmp/my-app folder ending in -3.txt
#  (for example, just my-file-3.txt), owner = adm, group = wheel, and
#  mode = 464 (-r--rw-r--).
permissions:
  - object: /tmp/my-app
    pattern: "*-3.txt"
    owner: adm
    group: wheel
    mode: 464
    type:
      - file
# 2) For all of the files ending in .txt in the /tmp/my-app
#  folder, but not for the file my-file-3.txt (for example,
#  just my-file-1.txt and my-file-2.txt),
#  owner = ec2-user and mode = 444 (-r--r--r--).
  - object: /tmp/my-app
    pattern: "*.txt"
    except: [my-file-3.txt]
    owner: ec2-user
    mode: 444
    type:
      - file
# 3) For all the files in the /tmp/my-app/my-folder-1 folder except
#  for my-file-4.txt and my-file-5.txt, (for example,
#  just my-file-6.txt), owner = operator and mode = 646 (-rw-r--rw-).
  - object: /tmp/my-app/my-folder-1
    pattern: "**"
    except: [my-file-4.txt, my-file-5.txt]
    owner: operator
    mode: 646
    type:
      - file
# 4) For all of the files that are immediately under
#  the /tmp/my-app/my-folder-2 folder except for my-file-8.txt,
#  (for example, just my-file-7.txt and
#  my-file-9.txt), owner = ec2-user and mode = 777 (-rwxrwxrwx).
  - object: /tmp/my-app/my-folder-2
    pattern: "**"
    except: [my-file-8.txt]
    owner: ec2-user
    mode: 777
    type:
      - file
# 5) For all folders at any level under /tmp/my-app that contain
#  the name my-folder but not
#  /tmp/my-app/my-folder-2/my-folder-3 (for example, just
#  /tmp/my-app/my-folder-1 and /tmp/my-app/my-folder-2),
#  owner = ec2-user and mode = 555 (dr-xr-xr-x).
  - object: /tmp/my-app
    pattern: "*my-folder*"
    except: [tmp/my-app/my-folder-2/my-folder-3]
    owner: ec2-user
    mode: 555
    type:
      - directory
# 6) For the folder /tmp/my-app/my-folder-2/my-folder-3,
#  group = wheel and mode = 564 (dr-xrw-r--).
  - object: /tmp/my-app/my-folder-2/my-folder-3
    group: wheel
    mode: 564
    type:
      - directory
```

作成されるアクセス権限は次のとおりです。

```
-r--r--r-- ec2-user root  my-file-1.txt
-r--r--r-- ec2-user root  my-file-2.txt
-r--rw-r-- adm      wheel my-file-3.txt

dr-xr-xr-x ec2-user root  my-folder-1
-rw-r--r-- root     root  my-file-4.txt
-rw-r--r-- root     root  my-file-5.txt
-rw-r--rw- operator root  my-file-6.txt

dr-xr-xr-x ec2-user root  my-folder-2
-rwxrwxrwx ec2-user root  my-file-7.txt
-rw-r--r-- root     root  my-file-8.txt
-rwxrwxrwx ec2-user root  my-file-9.txt

dr-xrw-r-- root     wheel my-folder-3
```

次の例では、「`acls`」および「`context`」の手順を追加して、`'permissions'` セクションを指定する方法を示します。この例は、Amazon Linux、Ubuntu Server、RHEL インスタンスにのみ適用されます。

```
permissions:
  - object: /var/www/html/WordPress
    pattern: "**"
    except: [/var/www/html/WordPress/ReadMe.txt]
    owner: bob
    group: writers
    mode: 644
    acls: 
      - u:mary:rw
      - u:sam:rw
      - m::rw
    context:
      user: unconfined_u
      type: httpd_sys_content_t
      range: s0
    type:
      - file
```