Definindo permissões de arquivos padrão usando setfacl

1

Eu preciso definir as ACLs padrão em novos arquivos criados por link por meio do usuário do serviço apache de forma que o arquivo seja criado com o GUID definido para o dev users account (que também chamam devs ), e permissões específicas.

Parece que o SGID está funcionando bem, já que qualquer arquivo criado por páginas da Web PHP tem o grupo apache e devs . Mas, em vez de ter as ACLs de rwxrwx--- , elas têm rw-rw---- .

[root@webserver ~]# cd /var/www/html
[root@webserver html]# setfacl -Rb .                  
[root@webserver html]# chmod -R g+s .                
[root@webserver html]# setfacl -Rdnm u:apache:rwx,g:devs:rwx .
[root@webserver html]# getfacl .
# file: .
# owner: apache
# group: devs
# flags: -s-
user::rwx
group::rwx
other::---
default:user::rwx
default:user:apache:rwx
default:group::rwx
default:group:devs:rwx
default:mask::rwx
default:other::---

[root@webserver html]# getfacl data.txt
# file: data.txt
# owner: apache
# group: devs
user::rw-
user:apache:rwx     #effective:rw-
group::rwx      #effective:rw-
group:devs:rwx    #effective:rw-
mask::rw-
other::---

O arquivo data.txt foi criado através de um script PHP executado pelo httpd / apache. A propriedade está configurada corretamente ( apache / devs ), mas não foi criada com as permissões executáveis para o usuário ou grupo.

Esse servidor está rodando a versão 6.9 (Final) do CentOS

Alguma idéia?

Obrigado!

    
por Justin 01.11.2017 / 00:34

1 resposta

1

As permissões de arquivo do Linux não são afetadas pelo setgid bit no diretório. Definir ID do grupo faz com que o arquivo seja criado com o ID do grupo do diretório, em vez do ID do grupo do criador.

As permissões nos arquivos recém-criados são especificadas pelo criador do arquivo e afetadas pela máscara de criação de arquivo (umask) no open ou outras chamadas do sistema. Para afetar a permissão de arquivo no PHP, você usaria fopen ou chmod , etc.

Isso pode ser feito sem o uso de ACLs. Esses comandos realizam a mesma coisa:

chmod g+s .
chgrp devs .

Parece incomum e inseguro para o PHP criar arquivos executáveis a partir do httpd. Espero que você saiba o que está fazendo.

    
por 01.11.2017 / 05:00