Eu tenho este código PHP:
<?php
$myfile = fopen("testfile.txt", "w")
?>
E as seguintes permissões no meu /usr/share/nginx/html
diretório
drwxrwxrwx. 3 root root 4096 Nov 20 08:51 .
drwxr-xr-x. 3 root root 17 Nov 18 23:48 ..
-rwxrwxrwx. 1 root root 537 Sep 16 14:56 50x.html
-rwxrwxrwx. 1 root root 1171 Nov 20 03:50 make.php
Mas quando executo o código PHP acima, que está no make.php
, não cria o testfile.txt
!
O que há de errado aqui? Eu também tentei mudar o usuário para nginx
com o chown
comando, mas ele não funciona.
linux
permissions
centos
php
ctrlz
fonte
fonte
Respostas:
Em relação ao seu problema e ao SELinux:
A web está repleta de posts de pessoas recomendando desativar o SELinux. É definitivamente a "solução" mais simples, mas não é ideal em um ambiente de produção, pois deixa o servidor mais vulnerável.
Ontem, mergulhei na aprendizagem do SELinux. Achei a seguinte palestra de Thomas Cameron muito útil:
SELinux para Meros Mortais (40min)
Não sei qual distribuição Linux você está usando (e não tenho certeza de quanto, se é que o SELinux varia entre os outros), mas o CentOS fornece um Guia do SELinux .
Introdução Rápida:
Os "contextos" do SELinux são mostrados no formato
user:role:type:range
. Por padrão, o SELinux é enviado notargeted
modo, o que limita o acesso aos recursos pelotype
atributo.Você pode acrescentar a
-Z
bandeira de comandos, comops
,ls
,cp
,mv
,mkdir
,netstat
, e mais para ver o contexto do SELinux de diferentes recursos.Para visualizar os contextos SELinux da sua pasta da web, execute:
Para visualizar o contexto do seu
nginx
processo, execute:Também existem "booleanos" do SELinux que podem ser ativados / desativados para casos de uso comuns. Para visualizar uma lista de booleanos relacionados a um servidor da Web (
nginx
neste caso), execute:Para atualizar um valor booleano, você pode configurá-lo usando o
setsebool
comando Exemplo:Eu quero consultar os documentos do SELinux para mais alguns comandos (porque é por isso que eles os colocam lá). Alguns outros comandos úteis:
audit2allow
É sobre onde estou com o meu know-how do SELinux no momento. Eu sei que este é um post antigo, mas espero que isso ajude outras pessoas.
fonte
Ok, então basicamente eu tive que mudar para isso:
no
/etc/selinux/config
arquivo Mais informações aqui: Como desativar o SELinux .Não sei se esta é a melhor solução.
fonte