Permissões do diretório do Apache para uma intranet da empresa

5

Eu tenho uma intranet da empresa que migrei recentemente da Novell para o Linux. Estou tentando configurar permissões de usuário e estou perdendo a cabeça.

Há dúzias de departamentos, cada um com um diretório dedicado na raiz da web. Existem também diretórios compartilhados para css, templates, imagens, etc.

Eu quero que todos os usuários tenham acesso somente leitura a todo o site e acesso somente leitura e gravação ao diretório de seu departamento.

O que eu já tentei:

  • Configure um grupo de usuários para cada diretório e atribua usuários aos grupos conforme necessário. Correndo em permissões e problemas de herança de propriedade.

  • Criado um usuário de teste e criado uma pasta htdocs no diretório inicial do usuário de teste. Em seguida, criou um link, renomeou para o departamento. nome e soltei o link no diretório principal do htdocs. O acesso de leitura é perfeito, mas não consigo listar o conteúdo desse diretório ao usar o Dreamweaver ou um cliente de FTP da raiz do htdocs.

Eu sinto que existe uma informação simples, mas crucial, que estou perdendo. A configuração seletiva do acesso de leitura / gravação aos subdiretórios do htdocs não pode ser tão difícil.

Algum conselho para um usuário não experiente, usado para Novell e IIS?

    
por Greg Smith 09.05.2011 / 17:18

4 respostas

1

Digamos que você tenha Sue & Sam em vendas e Harry e Hermione em RH.

  • Crie usuários sue, sam, harry, hermione
  • Crie grupos e vendas.
  • Adicionar sue & sam para agrupar as vendas.
  • Adicione harry e hermione ao grupo hr.
  • crie pastas hr e vendas em /var/www/htdocs
  • altere o grupo da pasta hr para o grupo hr
  • ditto sales
  • defina o bit do grupo para que os arquivos sejam criados em vendas & hr herdar grupo
  • definir permissões para que o grupo possa escrever, outras só podem ler
  • por conveniência, crie um link para hr dos diretórios iniciais da hermione e harry
  • ditto sales people.
  • edite a configuração do Apache conforme necessário (por exemplo, servidor virtual baseado em nome para sales.example.com)

Comandos úteis (veja man pages)

  • mkdir
  • chown
  • chgrp
  • groupadd
  • useradd
  • groupmod
  • ln

† ou onde quer que o docroot do Apache seja

    
por 09.05.2011 / 21:44
0

As permissões de arquivo no Linux dão atenção às antigas raízes do Unix das quais o Linux cresceu. Talvez um guia como este no TuxFiles.org ou este material do TLDP pode ajudar você a entender a estrutura básica de permissões.

As ferramentas com que você mais precisa se familiarizar são chown e chmod . Ou GUI alterna, se você tem uma interface gráfica instalada no seu servidor.

    
por 09.05.2011 / 18:38
0

Suas necessidades podem ser melhor atendidas por ACLs do que pelo modelo clássico de permissões do UNIX.

Crie um grupo para acesso somente leitura em todos os lugares e crie um grupo para cada departamento. Em seguida, use setfacl ("set file ACL") para permitir que o grupo de leitura tenha acesso de leitura a todas as pastas e conceda a cada grupo acesso de gravação à sua pasta de departamento.

Infelizmente, você precisará procurar a sintaxe para setfacl . Eu não estou muito familiarizado com isso. Para começar, aqui está meu cronjob que dá ao usuário do apache no meu servidor acesso completo ao diretório public_html na casa de cada usuário:

#!/bin/sh
HOME_DIR="/home"
WWW_DIRNAME="public_html"
WWW_USER="www-data"
setfacl -Rm "u:${WWW_USER}:rwX,d:u:${WWW_USER}:rwX" "$HOME_DIR/*/$WWW_DIRNAME"

Eu coloco isso em um cron job para que qualquer arquivo que eu coloque no meu diretório public_html seja disponibilizado em breve para o apache.

    
por 09.05.2011 / 23:22
0

Mantendo a ideia de grupos, crie todos os diretórios necessários para todos os seus grupos.

Faça tudo sob a raiz da Web de propriedade de www-data ou apache ou de qualquer usuário que seu servidor da Web execute para que tenha acesso. Isso fará com que tudo pertencesse ao servidor da web e seja separado do grupo do servidor da web:

EX: chown -R www-data:www-data /var/www

Em seguida, altere o grupo para cada uma dessas pastas de grupo:

EX: chown -R www-data:group1 /var/www/group1

Quando todas as pastas tiverem os grupos certos, você poderá adicionar acesso de leitura / gravação em grupo a eles:

EX: chmod -R g+rw /var/www/*

    
por 09.05.2011 / 23:57