Maneira correta de provisionar o usuário para que qualquer arquivo / diretório associado ao seu grupo seja editável

0

Trabalhando no Ubuntu 16.04.2 LTS como uma pilha LAMP.

Eu configurei um projeto web (Magento) que tem permissões octal de fábrica predefinidas em toda a sua base de código. Eu preciso fornecer acesso a outros desenvolvedores. A localização do projeto é / var / www / webproject e pertence ao proprietário / grupo do Apache www-data.

Por isso, criei um usuário para o desenvolvedor que pertence ao grupo www-data (por exemplo, devuser) e forneceu o acesso SSH. Atualmente, sem usar o sudo, o usuário não pode criar ou editar arquivos contidos em / var / www / webproject porque as permissões octal não permitem isso.

Resumo:

/var/www/webproject permissions = 750
Files & directories within /var/www/webproject vary but...
user:group assignment for everything = www-data:www-data

Pergunta: Para que meu usuário devuser consiga modificar corretamente arquivos e diretórios contidos em / var / www / webproject, é simplesmente uma questão de recursividade? aplicando as permissões de grupo corretas para TODOS os arquivos e diretórios contidos nela? Ou existe uma abordagem melhor que potencialmente preserva as permissões de fábrica da plataforma Web (Magento), mas ainda permite que qualquer usuário dentro do grupo www-data modifique arquivos e diretórios?

    
por sparecycle 26.06.2017 / 22:29

2 respostas

0

Não há como permitir que um grupo edite sem problemas arquivos para os quais não tem permissão para gravar.

O usuário e o grupo chamado www-data não são iguais (cada usuário tem um grupo com o nome de usuário que contém apenas a si próprio, e é por isso que existe um grupo chamado www-data . Se você adicionar outras pessoas a esse grupo , eles terão as permissões do grupo, não as permissões do usuário).

Você deve aplicar chmod g+w aos arquivos para os quais o grupo www-data deve ter acesso de gravação. Geralmente é seguro ter seus arquivos em seu diretório web 770.

    
por 27.06.2017 / 07:26
0

Se você deseja preservar as mesmas permissões efetivas para a pasta, isso pode ser feito com as Listas de Controle de Acesso POSIX:

sudo su -
chown -R :web_developers /var/www/webproject
chmod -R 2770 /var/www/webproject

setfacl -R -m u:www-data:rwx /var/www/webproject
setfacl -R -m d:u:www-data:rwx /var/www/webproject

setfacl -R -m g:www-data:r-x /var/www/webproject
setfacl -R -m d:g:www-data:r-x /var/www/webproject

setfacl -R -m o:0 /var/www/webproject
setfacl -R -m d:o:0 /var/www/webproject

Remova seu desenvolvedor da web de www-data , ele não é um servidor da web. As pessoas devem sempre pertencer a grupos correspondentes ao (s) trabalho (s) que possuem e, em seguida, receber as permissões apropriadas aos grupos. Como tal, ele é um dos seus web_developers .

O resultado final:

  1. O www-data sempre terá permissões de usuário de rwx e permissões de grupo de r-x para arquivos existentes e criados no futuro, imitando o original 750
  2. Qualquer membro do grupo web_developers terá acesso total rwx a todos os arquivos atuais e criados no futuro
  3. Ninguém mais tem permissões (exceto root - e por grupo de ramal sudo )

O outro sapato:

  • Os arquivos criados pelos usuários no grupo web_developers pertencerão a eles (embora www-data ainda tenha usuário rwx e grupo r-x permissões )
por 27.06.2017 / 08:25