CentOS 7, SELinux, PHP, Apache: como definir permissões padrão para arquivos novos ou atualizados em um diretório?

1

Informação do servidor:

CentOS Linux release 7.0.1406 (Core)  
PHP 5.4.16 (cli) (built: Sep 30 2014 09:44:39)  
SELinux enforcing  
Apache/2.4.6 (CentOS)

Meu PHP-Script precisa ler a partir de um arquivo de texto do diretório inicial. Esses arquivos são atualizados a cada 30 minutos. (de um usuário confiável).

Normalmente, as permissões desses arquivos são definidas como -rw----r--. . O proprietário e o grupo são do usuário que faz o upload dos arquivos.

Existe agora um caso em que as permissões de leitura para outras pessoas estão ausentes. (eu não sei porque ..) e o script PHP não pode ler o conteúdo:

file_get_contents(/home/someuser/some_dir/subdir1/subdir2/file.txt): failed to open stream: Permission denied (2)

Como o grupo read-rights também está faltando, não posso simplesmente adicionar o apache -user ao someuser -group.

Eu só preciso garantir que as permissões de leitura para o processo do apache sejam dadas a qualquer momento.

Qual seria a melhor e mais segura maneira de fazer isso?
Talvez configurando umask 173 para o diretório ou arquivos?

    
por baam 10.10.2014 / 19:02

1 resposta

1

Você pode usar ACLs (listas de controle de acesso) para definir permissões de grupo adicionais, que podem ser definidas com o comando setfacl . Por exemplo:

setfacl -dm g:apache:r /home/someuser/some_dir/subdir1/subdir2

Quando você executar um ls nesse diretório, ele mostrará um sinal + ao lado das permissões para indicar que uma ACL está definida:

$ ls -ld /home/someuser/some_dir/subdir1/subdir2
drwxrwxr-x+ 2 someuser somegroup 26 Oct 10 10:17 /home/someuser/some_dir/subdir1/subdir2

Você pode ver a ACL com o comando getfacl .

$ getfacl home/someuser/some_dir/subdir1/subdir2
# file: home/someuser/some_dir/subdir1/subdir2
# owner: someuser
# group: somegroup
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:group:apache:r-x
default:mask::rwx
default:other::r-x

E quando arquivos e diretórios são criados, eles herdarão essas permissões:

$ cd /home/someuser/some_dir/subdir1/subdir2
$ touch moo
$ getfacl moo
# file: moo
# owner: someuser
# group: somegroup
user::rw-
group::rwx          #effective:rw-
group:apache:r-x        #effective:r--
mask::rw-
other::r--

As ACLs são incríveis! Eu recomendo altamente aprender mais sobre o assunto:

por 10.10.2014 / 19:24