Permissões de arquivo do servidor CentOS

0

Estou começando a aprender o gerenciamento de servidores com uma máquina virtual do CentOS. Eu estou tentando fazer um site simples.

Como o arquivo padrão do Apache está em /var/www , é difícil gravar / criar / alterar arquivos. Dito isto, gostaria de fazer a home page na pasta /var/www e todas as outras páginas estarão na pasta /home/$USER/Documents/Website .

O código na página inicial é apenas href das outras páginas. Quando eu executo o código na máquina, funciona, mas se eu for a página inicial (digite o IP em um navegador) o link não funciona, mas a home page ainda está lá.

O erro que recebo quando clico no link é 404 file not found .

Se eu copiar o local do arquivo daquele código de erro e, no servidor, digitar

cat {file_location}

Imprime o arquivo sem problemas. Eu mudei o grupo Apache para o dono do arquivo. Como posso permitir que o servidor Apache encontre os arquivos aqui? Eu precisaria editar o http.conf ?

EDITAR: Como eu faria isso para que o servidor pudesse ler e escrever em uma pasta chamada /Website ?

EDIT 2: Eu não sei qual versão do Apache estou executando. Eu usei o instalador do CentOS para instalar o Apache. O /var/www/html/index.html é a página da Web quando eu digito o endereço IP, como deveria. Ele pode muito bem ser um problema do SELinux, pois depois que eu instalei o Server com pacotes GUI, um pop-up do SELinux me contou sobre um problema de 'segurança'. Eu corri os scripts que ele disse e eu poderia escrever a pasta /var/www/html . Agora estou querendo adicionar pastas em um local diferente e não sei como fazer isso. Diferente do SELinux estar na maneira de escrever para a pasta /var/www/html , eu também alterei o dono e executei chmod 755 se bem me lembro.

    
por Take That 101 21.09.2018 / 21:21

1 resposta

2

Se você quiser que o Apache sirva apenas arquivos em /Website , edite sua configuração do Apache /etc/httpd/conf/httpd.conf e altere DocumentRoot para /Website . Em seguida, recarregue o servidor systemctl reload httpd.service .

Você também precisa alterar o contexto do arquivo SELinux de /Website e arquivos dentro. Você provavelmente deseja usar os mesmos contextos de arquivo que em /var/www ( httpd_sys_content_t ou httpd_sys_rw_content_t ). Adicione uma nova regra de rotulagem de arquivo com semanage e use restorecon para aplicá-la:

semanage fcontext -a -t httpd_sys_rw_content_t "/Website(/.*)?"
restorecon -R -v /Website

Se você quiser configurar o Apache para servir o conteúdo do usuário em diretórios base, por exemplo. http://server/~user , você pode usar mod_userdir . Ative-o em /etc/httpd/conf.d/userdir.conf e recarregue o servidor.

Ativar booleano httpd_read_user_content SELinux para permitir acesso:

semanage boolean -m --on httpd_read_user_content 

Os arquivos no diretório public_html já devem estar configurados no tipo httpd_user_content_t correto. Caso contrário, você pode executar restorecon -R -v /home/user/public_html para aplicar contextos de arquivos corretos.

    
por 24.09.2018 / 08:56