Установка владельца каталога и разрешения с помощью appspec.yml через Amazon Web Service CodeDeploy

Я развертываю приложение Node.js через Codeship, используя CodeDeploy Система развертывания AWS.

Я использую файл appspec.yml, чтобы установить владельца и разрешения для одного из развернутых каталогов.

Я хочу разрешить чтение/запись для любых файлов, которые будут созданы в указанной папке развертывания. Файлы будут созданы веб-приложением после его запуска.

В настоящее время мой appspec.yml содержит следующее:

version: 0.0
os: linux
files:
  - source: /
    destination: /var/www/APPLICATION_NAME
permissions:
  - object: /var/www/APPLICATION_NAME/tmpfiles
    mode: 644
    owner: ec2-user
    type:
      - directory

person Peter Bridger    schedule 04.02.2015    source источник


Ответы (2)


Если в вашей файловой системе включены списки управления доступом (ACL), вы можете использовать ACL по умолчанию в своем каталоге, чтобы предоставить права на чтение/запись для владельца/группы/других для вновь созданных файлов в этом каталоге.

AWS CodeDeploy позволяет указывать списки управления доступом для файлов в файле appspec.yml. Он может принимать любые действительные записи ACL, которые можно передать в setfacl [1]

Например, в вашем случае, чтобы установить разрешение на чтение, запись и выполнение для всех во всех вновь созданных файлах, вы можете сделать что-то вроде

version: 0.0 os: linux files:
  - source: /
    destination: /var/www/APPLICATION_NAME permissions:
  - object: /var/www/APPLICATION_NAME/tmpfiles
    mode: 644
    acls:
      - "d:u::rwx"
      - "d:g::rwx"
      - "d:o::rwx"
    owner: ec2-user
    type:
      - directory

Разрешения могут быть ограничены приложением, которое создает новые файлы. Вы также можете установить маску ACL по умолчанию, чтобы установить биты маски для принудительного выполнения определенных разрешений. Например, "d:m::rw" будет маскировать разрешение на выполнение. Подробнее о ACL и маскировании можно узнать здесь http://www.vanemery.com/Linux/ACL/POSIX_ACL_on_Linux.html

[1] http://linux.die.net/man/1/setfacl

person Surya Bala    schedule 06.02.2015

Я обнаружил, что с файлом appspec.yml очень сложно работать.

У меня очень большая и сложная структура папок, и мне сложно установить разрешения с помощью файла appspec.yml. По этой причине я использую «хуки» для вызова небольшого скрипта bash для установки моих разрешений.

Вот пример файла appspec.yml, который у меня есть:

version: 0.0
os: linux
files:
  - source: /
    destination: /var/www
hooks:
  AfterInstall:
    - location: scripts/set-permissions.sh

Вот пример файла set-permissions.sh:

#!/bin/bash
# Set ownership for all folders
chown -R www-data:www-data /var/www/
chown -R root:root /var/www/protected

# set files to 644 [except *.pl *.cgi *.sh]
find /var/www/ -type f -not -name ".pl" -not -name ".cgi" -not -name "*.sh" -print0 | xargs -0 chmod 0644

# set folders to 755
find /var/www/ -type d -print0 | xargs -0 chmod 0755
person Neutralizer    schedule 27.08.2016