umask para usuário de www-data executando PHP no Ubuntu

2

Configurando um novo servidor web no Ubuntu 14.04 e tentando obter permissões de arquivo para arquivos gerados pelo PHP.

Por padrão, todos os diretórios e arquivos em /var/www são de propriedade / agrupados em www-admin. As permissões de diretório são rwxrwsr-x e as permissões de arquivo são rw-rw-r-- .

Em seguida, configuramos o grupo em um número limitado de diretórios para www-data - isso é para que o PHP (via Apache) possa gravar arquivos de log e cache neste local.

No entanto, não consigo fazer com que o PHP obedeça a umask de 0002 , e assim os arquivos gerados pelo PHP são graváveis apenas para o usuário www-data. Isso é um problema, já que usamos integração contínua e alguns outros processos de limpeza.

Até agora eu tenho:

  • Defina a umask como 0002 em /etc/pam.d/common-session
  • Defina a umask como 0002 em /etc/pam.d/common-session-noninteractive
  • Defina a umask como 0002 em /etc/profile
  • Defina a umask como 0002 em /etc/apache2/envvars
  • Defina a umask como 0002 em /etc/login.defs
  • Defina a umask como 0002 para www-data em /etc/passwd usando sudo chfn -o "umask=002" daemon_username

E eu ainda estou presa.

Eu parei / iniciei o serviço e até reiniciei o computador - sem alegria.

    
por HorusKol 29.08.2014 / 05:28

4 respostas

3

"umask 002" em / etc / apache2 / envvars deve funcionar.

Observe que o Apache deve ser reiniciado por "service apache2 stop; service apache2 start" para entrar em vigor, não por "service apache2 restart"!

Veja aqui se você precisa de uma amostra mais detalhada: link

    
por 29.08.2014 / 08:23
1

O problema é que os arquivos estão sendo criados pelo PHP-FPM. É o processo pai - não o apache2. A única maneira que eu poderia consertar isso é adicionando o umask ao /etc/init/php7.1-fpm.conf. Então reinicie o PHP-FPM.

Tópico relacionado: configuração Nginx / php-fpm umask .

    
por 03.04.2018 / 23:00
0

Isso não funcionou para mim até que percebi o seguinte: O plug-in de driver PDO SQLite para o Wordpress criará o arquivo de banco de dados somente com permissão de leitura de grupo.

Teste sua sanidade usando o script de criação aqui: Como defino umask padrão no Apache no Debian? .

    
por 17.02.2016 / 07:04
0

Se você executar vários sites, poderá definir a permissão de grupo padrão usando as listas de controle de acesso (ACL) por diretório, da seguinte forma:

Defina setid flag para forçar todos os novos arquivos a herdarem o grupo do diretório:

root@sh1:/srv/www/php/fastwarren.ca# chmod g+s wordpress

Fazer novos arquivos têm rw para as permissões do grupo, ex. para que www-data possa gravar em arquivos SFTPed pelo usuário de upload:

root@sh1:/srv/www/php/fastwarren.ca# setfacl --default --modify group:rwx wordpress 

Confirme se a ACL é assim:

root@sh1:/srv/www/php/fastwarren.ca# getfacl wordpress
# file: wordpress
# owner: carissacosgrove
# group: www-data
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x

Crie um arquivo para confirmar se funcionou:

root@sh1:/srv/www/php/fastwarren.ca# ll test
-rw-rw-r-- 1 root www-data 0 Feb 17 01:09 test
    
por 17.02.2016 / 07:11