Como eu defino umask padrão no Apache no Debian?

13

Eu preciso de arquivos criados pelo apache2 para ter umask 002 , por exemplo, group rw, por padrão.

Eu tentei colocar umask 002 em / etc / apache2 / envvars e, embora esse script seja executado como parte da inicialização do apache ( apache2ctl graceful ), o umask não tem efeito. Presumivelmente, em algum lugar no processo de inicialização (por exemplo, quando o usuário é rebaixado de root para www-data ), é melhor colocar isso em algum lugar.

Eu li posts sobre o Fedora e um sugerindo colocar umask em /etc/init.d/apache2 , mas nenhum deles aplica / trabalha no Debian (Squeeze).

Você pode ajudar?

    
por artfulrobot 27.04.2012 / 10:36

2 respostas

11

Para ter certeza de que a configuração do umask entra em vigor, use um teste simples e não use nenhum outro aplicativo da web para isso. Pode ser o caso que esses aplicativos alterem os direitos independentemente da configuração de umask do Apache.

Script PHP de teste simples:

<?php
if ($fp = fopen(time() . '.txt', 'w')) {
  fwrite($fp, 'This is a simple test.');
  fclose($fp);
  echo "done";
} else {
  echo "error - cannot create file";
}
?>

Tome cuidado para que o usuário www-data tenha acesso de gravação à pasta onde você instalou este arquivo de teste simples.

Para que a nova umask seja executada, verifique se o arquivo / etc / apache2 / envvars será usado no arquivo inicial do Apache /etc/init.d/apache2:

...
PIDFILE=$(. /etc/apache2/envvars && echo $APACHE_PID_FILE)
...

Defina sua umask em / etc / apache2 / envvars:

...
# umask 002 to create files with 0664 and folders with 0775
umask 002

Reinicie seu Apache:

service apache2 restart

Verifique a diferença:

#> ls -l *.txt
-rw-rw-r-- 1 www-data www-data  14 2012-05-01 15:56 1335880583.txt
-rw-r--r-- 1 www-data www-data  14 2012-05-01 15:55 1335880540.txt
    
por 01.05.2012 / 16:07
2

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:

# 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:

# setfacl --default --modify group::rwx wordpress 

Confirme se a ACL é assim:

# 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:

# ll test
-rw-rw-r-- 1 root www-data 0 Feb 17 01:09 test
    
por 17.02.2016 / 07:13