Definindo permissão padrão para arquivos de sessão

1

Como eu poderia definir permissões padrão para arquivos de sessão para que tanto o apache-php-process quanto o processo do php de algum outro usuário pudessem alterá-los? A sessão é criada pelo processo php de outros usuários e depois disso, o processo apache-php deve ser capaz de ler e gravar.

Agora, a permissão padrão para arquivos de sessão é 600. Deve ser 660 ou 666. Onde e como posso definir essa permissão (por exemplo, httpd.cond ou php.ini)? Para que não seja necessário usar chmod toda vez após session_start ().

O servidor é meu, portanto não é necessário evitar isso por motivos de segurança.

A versão do Apache é 2.2.15, php é 5.3.3, o servidor é Centos6 de 64 bits.

E porque a primeira pergunta é: por que você precisa disso, eu respondo a isto primeiro: Eu construí alguns sites com suphp no servidor e a lógica é construída sobre isso, então existem dezenas de chamadas para session_start () e Todos os processos php são de propriedade de algum usuário específico. Eu tenho um getimage.php, que carrega imagens, em algumas páginas pode haver dezenas ou centenas de miniaturas na mesma página (eu quero assim!). Embora eu tenha 100M internet, a página é carregada lentamente por causa de cada chamada para getimage.php, o novo processo php é iniciado. O getimage.php usa sessões para restringir o acesso do usuário a imagens específicas. Eu testei para criar um manipulador Apache para php e usar extensão de arquivo diferente para isso: getimage.apachephp. A aceleração foi enorme! Mas o problema é que eu tenho chmod manualmente o arquivo de sessão para permitir que o apache-php-process acesse o arquivo de sessão. E eu pensei que se chmod pudesse ser feito automaticamente em toda criação de arquivo de sessão, o processo se torna mais significativo.

EDITAR: Uma solução possível é usar

session_save_path("0;666;/path/to/sessfile");
umask(0);
session_start();

Ou se você quiser evitar o 666 e usar um pouco mais seguro 660, tanto o usuário do apache quanto o usuário do suphp devem pertencer ao mesmo grupo, por exemplo. web e depois da sessão é criada para alterar o grupo de arquivos da sessão criada para web . Eu selecionei 666 para simplicidade.

    
por Timo Kähkönen 10.03.2013 / 09:19

2 respostas

0

A solução mais fácil seria alterar o manipulador de sessão no PHP para usar um banco de dados em vez de arquivos. Existem alguns exemplos disso disponíveis na Internet .

    
por 10.03.2013 / 10:54
0

Eu sei que é uma pergunta antiga ...

Acredito que você ainda tenha que definir o umask para o usuário do apache. (por exemplo, o novo save_path está realmente tentando definir o arquivo como 660 , mas o umask não permite isso).

Você só precisa editar / adicionar:

echo "umask 0002" >> /etc/apache2/envvars  (Debian)
echo "umask 0002" >> /etc/sysconfig/httpd  (CentOS)

Em seguida, reinicie o serviço (um recarregamento elegante não funcionará).

service httpd restart

Com relação à variável save_path , não fiz isso em tempo de execução, mas alterei o php.ini , adicionando:

session.save_path = "0;660;/var/lib/php5"
    
por 05.06.2015 / 10:50