Pergunta

Desculpe pela pergunta básica - sou desenvolvedor .NET e não tenho muita experiência com configurações LAMP.

Tenho um site PHP que permitirá uploads para uma pasta específica.Disseram-me que esta pasta precisa pertencer ao usuário do servidor web para que o processo de upload funcione, então criei a pasta e defini as permissões como tal:

chown apache:apache -R uploads/
chmod 755 -R uploads/

O único problema agora é que o usuário do FTP não consegue modificar os arquivos enviados.

Existe uma configuração de permissão que me permitirá ainda fazer upload de arquivos e modificá-los posteriormente como um usuário diferente do usuário do servidor da web?

Foi útil?

Solução

Você pode criar um novo grupo com o usuário Apache e o usuário FTP como membros e então dar permissão na pasta de upload 775.Isso deve dar aos usuários do Apache e do FTP a capacidade de gravar nos arquivos da pasta, mas evitar que todos os outros os modifiquem.

Outras dicas

Eu aceitaria a resposta de Ryan se você realmente quiser fazer isso.

Em geral, em um ambiente *nix, você sempre deseja errar ao conceder o mínimo de permissões possível.

9 em cada 10 vezes, 755 é a permissão ideal para isso - já que o único usuário com capacidade de modificar os arquivos será o servidor web.Mude para 775 com seu usuário FTP em um grupo se você REALMENTE precisar mudar isso.

Como você mesmo admite que é novo no php, aqui está um link útil para melhorar a segurança do seu serviço de upload:move_uploaded_file

Ou pelo menos 766.

  • ler = 4
  • escrever = 2
  • executar = 1

7 = ler + escrever + executar

6 = ler + escrever

  • primeiro número:proprietário
  • segundo número:grupo
  • terceiro número:outros usuários

Acrescentarei que se você estiver usando o SELinux, você precisa ter certeza de que o tipo de contexto é tmp_t Você pode fazer isso usando o utilitário chcon

chcon -t tmp_t carrega

O que é importante é que o apache usuário e grupo devem ter mínimo read acesso e em alguns casos execute acesso.Para o resto você pode dar 0 acesso.

Esta é a configuração mais segura.

Eu apoiaria a ideia de criar um grupo FTP que tenha direitos de upload.No entanto, não acho que seja necessário dar permissão ao 775.7 significa ler, escrever, executar.Normalmente você deseja permitir que determinados grupos leiam e escrevam, mas dependendo do caso, a execução pode não ser necessária.

Lembre-se também CHOWN ou chgrp pasta do seu site.Tentar myusername# chown -R myusername:_www uploads

Com base na resposta de @Ryan Ahearn, a seguir está o que eu fiz em Ubuntu 16.04 para criar um usuário front que só tem permissão para o diretório web do nginx /var/www/html.

Passos:

* pre-steps:
    * basic prepare of server,
    * create user 'dev'
        which will be the owner of "/var/www/html",
    * 
    * install nginx,
    * 
* 
* create user 'front'
    sudo useradd -d /home/front -s /bin/bash front
    sudo passwd front

    # create home folder, if not exists yet,
    sudo mkdir /home/front
    # set owner of new home folder,
    sudo chown -R front:front /home/front

    # switch to user,
    su - front

    # copy .bashrc, if not exists yet,
    cp /etc/skel/.bashrc ~front/
    cp /etc/skel/.profile ~front/

    # enable color,
    vi ~front/.bashrc
    # uncomment the line start with "force_color_prompt",

    # exit user
    exit
* 
* add to group 'dev',
    sudo usermod -a -G dev front
* change owner of web dir,
    sudo chown -R dev:dev /var/www
* change permission of web dir,
    chmod 775 $(find /var/www/html -type d)
    chmod 664 $(find /var/www/html -type f)
* 
* re-login as 'front'
    to make group take effect,
* 
* test
* 
* ok
* 

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top