Como configurar usuários, propriedade e permissões em servidores locais e remotos?

2

Eu tenho aprendido o sistema operacional Linux no último ano e ainda estou muito confuso sobre como as permissões variam de diferentes configurações. Eu estou tentando configurar o meu ambiente de desenvolvimento local e ao fazê-lo, percebo que na produção VPS (CentOS), minhas permissões de arquivo / diretório se comportam de maneira diferente do que a minha configuração local (Mint).

A estrutura do arquivo do servidor remoto foi configurada onde o proprietário e o grupo são myuser:myuser e as permissões do rwx estão definidas como 755 para diretórios e 644 para arquivos que funcionam bem com os requisitos do site. No entanto, tenho que alterar a propriedade para www-data:www-data e as permissões em algumas pastas para 777 para que funcionem da mesma forma localmente. Eu adicionei myuser ao grupo Apache, mas o problema persiste.

Isso me leva a acreditar que meu usuário de shell local difere do meu usuário local do Apache e que, no sistema remoto, os usuários do shell e do Apache são os mesmos. Está certo?

Estou preocupado com as implicações de segurança de alterar essas configurações. Eu li que você não deve dar acesso ao servidor web. No entanto, o drupal o requer no diretório do repositório de arquivos chamado "files" e, embora os arquivos do sistema remoto pertençam a myuser:myuser (e se esse usuário é o Apache), isso significa que o servidor web ainda possui acesso de gravação?

Então, o que determina como esses usuários devem ser configurados? Eu suponho que eu vou estar mudando o usuário e / ou grupo de execução do Apache, mas alguém poderia explicar o método e as melhores práticas para fazer isso? As mesmas regras devem ser aplicadas para local vs remoto?

    
por dimmech 23.02.2015 / 23:13

1 resposta

1

Você está basicamente fazendo duas perguntas separadas.

  1. Como definir permissões no seu sistema local para espelhar a produção?

    Você precisa conhecer a configuração do servidor - neste caso, inclui a configuração do daemon http ( httpd aka Apache, neste caso) - geralmente encontrado em /etc/httpd ou /etc/apache ). Você também precisa saber com qual daemon de credenciais é executado. Então você deve ser capaz de definir suas permissões locais exatamente da mesma maneira ou efetivamente da mesma maneira (isto é, diferentes nomes de usuários / grupos mas mesmos direitos de acesso quando o daemon solicita um arquivo),

  2. As permissões de gravação para um deamon HTTP estão ok?

    Depende. Geralmente, quanto menos escrever um daemon pode fazer melhor. Por outro lado, na maioria dos casos (a menos que esteja servindo conteúdo estático / somente leitura), não é viável. Se for esse o caso, várias formas de endurecer o sistema estão à mão:

    1. execute o daemon sob um usuário especial que terá acesso somente à raiz do documento e acesso de gravação somente quando necessário (os utilitários de ACL estendidos getfacl / setfacl são seus amigos). No Linux, você também pode empregar modelos de segurança adicionais (GRSecurity / SELinux / AppArmor /...).

    2. tratamento de dados escrito corretamente - tratamento sane de entrada falsa. Neste caso, "sane" significa "não escreva nada" .

    3. escreva o acesso por meio de um "proxy" - tenha a parte executiva (o modelo no frequentemente usado Modelo MVC em um processo separado não prejudicará a segurança (mas tem que ser implementado adequadamente para ter algum benefício).

por 24.02.2015 / 01:17