Como garantir que o usuário tenha permissão recursiva para criar pastas e arquivos

1

Eu tenho o usuário gitlab-runner que está executando o CI e, basicamente, sempre que eu enviar algo para o repositório do gitlab, ele irá construir o projeto e copiá-lo para /var/www/stanislavromanov.com .

O problema é que não tem permissão para isso.

Erro

$ cp -R ./build/* /var/www/stanislavromanov.com/
cp: cannot create regular file '/var/www/stanislavromanov.com/404.html': Permission denied
cp: cannot create directory '/var/www/stanislavromanov.com/blog': Permission denied
cp: cannot create regular file '/var/www/stanislavromanov.com/ci.log': Permission denied
cp: cannot create regular file '/var/www/stanislavromanov.com/favicon.ico': Permission denied
cp: cannot create directory '/var/www/stanislavromanov.com/fonts': Permission denied
cp: cannot create directory '/var/www/stanislavromanov.com/img': Permission denied
cp: cannot create regular file '/var/www/stanislavromanov.com/index.html': Permission denied
cp: cannot create regular file '/var/www/stanislavromanov.com/index.xml': Permission denied
cp: cannot create directory '/var/www/stanislavromanov.com/privacy': Permission denied
cp: cannot create regular file '/var/www/stanislavromanov.com/scripts.js': Permission denied
cp: cannot create regular file '/var/www/stanislavromanov.com/sitemap.xml': Permission denied
cp: cannot create regular file '/var/www/stanislavromanov.com/styles.css': Permission denied
ERROR: Build failed: exit status 1

Eu tentei isto: sudo chown -R gitlab-runner /var/www e este sudo chown -R gitlab-runner:gitlab-runner /var/www .

Ainda tem o mesmo erro. Tenho 100% de certeza de que o usuário é gitlab-runner porque quando eu faço whoami ele mostra gitlab-runner .

O que estou fazendo de errado?

Eu consertei definindo o chmod 777 como stanislavromanov.com , mas acredito que isso esteja longe da solução ideal.

    
por stan 04.11.2016 / 21:31

1 resposta

0

Em primeiro lugar, eu não mudaria o proprietário POSIX ou o grupo recursivamente para o diretório www inteiro, você pode usar o acls estendido para isso. Para fazer isso você precisaria fazer sudo setfacl -R -m u:gitlab-runner:rwx /var/www .

Você pode então adicionar o usuário gitlab-runner ao arquivo sudoers e alterar seus scripts, prefixando sudo aos comandos relevantes. Caso contrário, você precisaria ver a saída de um getfacl no diretório de destino.

    
por 04.11.2016 / 22:35