Melhores permissões / propriedade para a raiz do documento apache

14

Preciso de ajuda para definir as permissões ou propriedade corretas da raiz do documento apache. Aqui está o que eu preciso:

  • sites diferentes armazenados em /var/www/html/<site>
  • dois usuários devem atualizar / gerenciar os sites através do ssh
  • propriedade deve ser diferente do usuário apache (por segurança)

Como posso fazer isso? No momento, todos os arquivos são graváveis ​​no mundo, o que não é bom. O servidor executa o CentOS 5.5

obrigado

Marco
fonte
Para uma resposta mais detalhada com outras opções para garantir um docroot, consulte serverfault.com/questions/357108/...
Quinn Comendant
Eu acho que é melhor armazenar cada site em um local separado (não coloque os dois no DocumentRoot, use dois hosts virtuais), então cada usuário sysadmin possui apenas seu próprio site e define o proprietário do grupo dos diretórios de ambos os sites como o grupo Apache
o contador

Respostas:

22

Crie um novo grupo

groupadd webadmin

Adicione seus usuários ao grupo

usermod -a -G webadmin user1
usermod -a -G webadmin user2

Alterar a propriedade do diretório de sites

chown root:webadmin /var/www/html/

Alterar permissões do diretório de sites

chmod 2775 /var/www/html/ -R

Agora qualquer um pode ler os arquivos (incluindo o usuário apache), mas apenas o root e o webadmin podem modificar seu conteúdo.

Andy
fonte
Isso parece bom. Mas o que acontece se um usuário cria novos arquivos ou copia arquivos atualizados. Essas permissões são aplicadas automaticamente? Ou ele precisa chown e chmod toda vez?
Marco
Os arquivos copiados mantêm permissões / propriedade. As permissões de arquivo padrão para novos arquivos são tratadas pelo umaskcomando. Mais informações aqui osr507doc.sco.com/en/OSUserG/_default_perms_new_file.html
Andy
3
você poderia fazer o webadmin setgid dir para ajudar com novos arquivos
covener
1
^ +1. A maneira mais rápida seria: >> chmod 2775 -R / var / www / html /
James Broadhead
@James ta, atualizado
Andy
2

Eu prefiro montar a partição com -o acl. Isso permite que você use o comando setfacl para conceder permissões refinadas a arquivos e pastas, em vez de especificar apenas permissões de outros grupos de usuários.

Então coloque acl na sua linha de partição em / etc / fstab ou remonte com mount -o remount, acl / mnt / xy, e então dê a propriedade do seu diretório da web a ninguém: ninguém. Chmod para 770, e use setfacl para conceder permissões de gravação apenas nas pastas que precisam, por exemplo. conceda a www-data (ou ao usuário em que o servidor da web executa) permissões de gravação para a pasta de upload e conceda permissões de gravação ao seu próprio usuário em todo o diretório.

mkdir dir
chown nobody:nobody dir
setfacl -m u:www-data:r-x,d:u:www-data:r-x dir
setfacl -m u:www-data:rwx,d:u:www-data:rwx dir/upload
setfacl -m u:youruser:rwx,d:u:youruser:rwx dir

Agora ninguém pode ler seus arquivos, além de seu servidor da web e de seu próprio usuário. Você pode gravar em todos os arquivos da pasta, e o servidor da Web pode gravar apenas na pasta de upload.

K. Norbert
fonte