AppSpec '권한' 섹션 (EC2/온프레미스 배포만 해당) - AWS CodeDeploy

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

AppSpec '권한' 섹션 (EC2/온프레미스 배포만 해당)

'permissions' 섹션은 'files' 섹션의 파일 및 디렉터리/폴더가 인스턴스에 복사된 후 이러한 파일 및 디렉터리/폴더에 특수 권한(있는 경우)이 어떻게 적용되어야 하는지를 지정합니다. 여러 개의 object 명령을 지정할 수 있습니다. 이 섹션은 선택 사항입니다. Amazon Linux, Ubuntu Server 및 RHEL 인스턴스에만 적용됩니다.

참고

EC2/온프레미스 배포용으로만 'permissions' 섹션을 사용합니다. AWS Lambda 또는 Amazon ECS 배포에는 사용되지 않습니다.

이 섹션의 구조는 다음과 같습니다.

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 – 선택 사항. 권한을 적용할 패턴을 지정합니다. 지정하지 않거나 특수 문자 "**"를 사용하여 지정하면 권한이 type에 따라 일치하는 모든 파일 또는 디렉터리에 적용됩니다.

    따옴표("")가 있는 문자열을 사용하여 pattern을 지정합니다.

  • except – 선택 사항. pattern에 대한 예외인 파일 또는 디렉터리를 지정합니다.

    대괄호 안에 있는 쉼표로 구분된 문자열 목록을 사용하여 except를 지정합니다.

  • owner – 선택 사항. object의 소유자 이름입니다. 지정하지 않으면 원본 파일 또는 디렉터리/폴더 구조에 적용된 기존의 모든 소유자가 복사 작업 후에도 아무 것도 변경되지 않습니다.

    문자열을 사용하여 owner를 지정합니다.

  • group – 선택 사항. object의 그룹 이름입니다. 지정하지 않으면 원본 파일 또는 디렉터리/폴더 구조에 적용된 기존의 모든 그룹이 복사 작업 후에도 아무 것도 변경되지 않습니다.

    문자열을 사용하여 group를 지정합니다.

  • mode – 선택 사항. object에 적용할 권한을 지정하는 숫자 값. 모드 설정은 Linux chmod 명령 구문을 따릅니다.

    중요

    값이 0으로 시작하는 경우 큰 따옴표로 묶거나 세 자리 숫자만 남도록 선행하는 0을 제거해야 합니다.

    참고

    u+x와(과) 같은 기호 표기법은 mode 설정에 대해 지원되지 않습니다.

    예:

    • mode: "0644"은(는) 개체 소유자에게 읽기 및 쓰기 권한(6), 그룹에 읽기 전용 권한(4) 및 다른 모든 사용자에게 읽기 전용 권한(4)을 부여합니다

    • mode: 644은(는) mode: "0644"와(과) 동일한 권한을 부여합니다.

    • mode: 4755은(는) setuid 특성(4)을 설정하고 소유자에게 모든 제어 권한(7)을 부여하며 그룹에 읽기 및 실행 권한(5), 다른 모든 사용자에게 읽기 및 실행 권한(5)을 부여합니다.

      더 많은 예제를 보려면 Linux chmod 명령 설명서를 참조하세요.

      모드를 지정하지 않으면 원본 파일 또는 폴더 구조에 적용된 기존의 모든 모드가 복사 작업 후에도 아무 것도 변경되지 않습니다.

  • acls – 선택 사항. object에 적용된 하나 이상의 ACL(액세스 제어 목록) 항목을 나타내는 문자열 목록. 예를 들어, u:bob:rw는 사용자 bob에 대해 읽기 및 쓰기 권한을 나타냅니다. (더 많은 예제를 보려면 Linux setfacl 명령 설명서에서 ACL 항목 형식의 예를 참조하세요.) ACL 항목은 여러 개 지정할 수 있습니다. acls를 지정하지 않으면 원본 파일 또는 디렉터리/폴더 구조에 적용된 모든 기존 ACL이 복사 작업 후에 변경되지 않고 그대로 유지됩니다. 기존 ACL을 대체합니다.

    대시(-), 그 다음에 공백, 그 다음에 문자열을 사용하여 acls를 지정합니다(예: - u:jane:rw). 2개 이상의 ACL이 있는 경우 각각 별도의 줄에서 지정됩니다.

    참고

    이름이 지정되지 않은 사용자, 이름이 지정되지 않은 그룹 또는 기타 유사한 ACL 항목을 설정하면 파일이 실패합니다. AppSpec 이러한 유형의 권한을 지정하려면 mode를 대신 사용하세요.

  • context – 선택 사항. 보안 강화 Linux(SELinux) 기반 인스턴스의 경우 복사된 객체에 적용되는 보안 관련 컨텍스트 레이블 목록. 레이블은 user, typerange가 포함된 키로 지정됩니다. 자세한 내용은 SELinux 설명서를 참조하세요. 각 키는 문자열로 입력됩니다. 지정하지 않으면 원본 파일 또는 디렉터리/폴더 구조에 적용된 기존의 모든 레이블이 복사 작업 후에도 아무 것도 변경되지 않습니다.

    • user – 선택 사항. SELinux 사용자

    • type – 선택 사항. SELinux 유형 이름.

    • range – 선택 사항. SELinux 범위 지정자. 머신에서 MLS(다중 수준 보안) 및 MCS(다중 범주 보안)를 활성화하지 않으면 아무 영향이 없습니다. 활성화하지 않으면 range는 기본적으로 s0으로 지정됩니다.

    문자열을 사용하여 context를 지정합니다(예: user: unconfined_u). 각 context는 별도의 줄에서 지정됩니다.

  • type – 선택 사항. 지정한 권한을 적용할 객체 유형입니다. typefile 또는 directory로 설정될 수 있는 문자열입니다. file을 지정하면 복사 작업 후 object에 즉시 포함되는 파일에만 권한이 적용됩니다(object 자체에는 적용되지 않음). directory를 지정하면 복사 작업 후 object 안의 어떤 위치에든 있는 모든 디렉터리/폴더에 권한이 반복적으로 적용됩니다(object 자체에는 적용되지 않음).

    대시(-), 그 다음에 공백, 그 다음에 문자열을 사용하여 type을 지정합니다(예: - file).

'permissions' 섹션의 예

다음 예제에서는 object, pattern, except, owner, modetype 명령을 사용하여 '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

다음 예제에서는 aclscontext 명령을 추가로 사용하여 '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