umask não funciona como esperado em outro que não seja o diretório home

2

Eu tento configurar um usuário do implantador para CI com o Teamcity. Segui as instruções dessa pergunta no ServerFault: Qual é a melhor maneira de lidar com permissões para o usuário www-data do apache2 em / var / www?

O problema é que o aplicativo Teamcity está criando diretórios com 755 de permissões e o apache (2.4) não pode gravar em alguns deles. Se eu alterar as permissões para 775 manualmente, o apache poderá escrevê-las.

Veja o que fiz para definir as permissões:

  1. Eu criei um usuário teamcity .
  2. Adicionado www-data group ao usuário como grupo secundário
  3. Alterou a propriedade de /var/www para root:www-data
  4. Permissões alteradas para diretórios com:

    find /var/www -type d -exec chmod 2775 {} +

    e para arquivos com:

    find /var/www -type f -exec chmod 0664 {} +

  5. Adicionada umask 0002 a /etc/profile

Testado:

su teamcity
umask 
>0002
touch testfile
ls -l
>-rw-rw-r-- 1 teamcity teamcity        0 May 25 10:38 testfile
cd /var/www
touch testfile
ls -l
>-rw-rw-r--  1 teamcity www-data      0 Mai 25 10:42 testfile

Para diretórios, é o mesmo. Eles são rw para usuário e grupo.

Após uma implantação, as permissões de diretórios e arquivos são 755 e não 775 conforme o esperado.

O aplicativo Teamcity é iniciado como um serviço:

start-stop-daemon --start -c teamcity --exec /opt/TeamCity/bin/runAll.sh start

Parece que perdi alguns detalhes, mas não consigo encontrá-lo.

Sistema:

  • Debian jessie
  • Apache 2.4
  • Teamcity 9

Solução:

Eu alterei o script de inicialização para o serviço Teamcity adicionando umask 002 antes do comando de inicialização.

    
por twenty7 25.05.2016 / 10:59

1 resposta

0

A partir da descrição, parece que o TeamCity está ignorando o umask. Talvez ele defina o umask em seu script de serviço (que não foi mencionado na pergunta). Se assim for, você poderia modificar o script. Se não, já que aparentemente é um aplicativo de código fechado e em Java, sua capacidade de impedir isso é limitada. Você poderia fazer uma tarefa do cron (executando uma vez por minuto), o que corrige as permissões do diretório.

Leitura adicional:

por 25.05.2016 / 11:30