Estou usando o centos 7 com nginx 1.12 para hospedar um repositório yum localmente. Quando tento navegar pelos arquivos pelo navegador, consigo ver as pastas, mas nenhum arquivo dentro delas. Estou me perguntando se talvez não tenha definido as permissões ou propriedade corretas.
Esta é a minha configuração: Sincronizei todos os pacotes para extras, atualizações, etc. no caminho
/var/www/html/repos/centos/7/os/x86_64
As permissões são assim:
ls -l /var/www
drwxrwx--x. 3 root nginx 19 Aug 30 09:12 html
ls -l /var/www/html
drwxr-xr-x. 4 root nginx 32 Aug 30 09:12 repos
ls -l /var/www/html/repos
drwxr-xr-x. 3 root nginx 15 Aug 30 09:12 centos
ls -l /var/www/html/repos/centos
drwxr-xr-x. 3 root nginx 45 Aug 30 09:12 7
ls -l /var/www/html/repos/centos/7
drwxr-xr-x. 3 root nginx 20 Aug 30 09:12 os
drwxr-xr-x. 3 root nginx 20 Aug 30 09:12 updates
drwxr-xr-x. 3 root nginx 20 Aug 30 09:12 extras
ls -l /var/www/html/repos/centos/7/os
drwxr-xr-x. 8 alexl alexl 237 Aug 30 09:12 x86_64
Estou tentando acessar a pasta de pacotes pelo navegador e não vejo nenhum arquivo. As permissões são:
ls -l /var/www/html/repos/centos/7/os/x86_64 | grep Packages
drwxr-x-r-x. 2 alexl alexl 565248 Aug 1 18:02 Packages
Permissões de um arquivo dentro da pasta:
ls -l /var/www/html/repos/centos/7/os/x86_64/Packages | tail -1
-rw-r--r--. 1 alexl alexl 35380 Jul 4 2014 zziplib-utils-0.13.62-5.el7.x86_64.rpm
Este é o meu arquivo nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] $status '
'"$request" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
}
Esta é a configuração do site:
server { # simple load balancing
listen 80;
server_name mysecretdomain.com;
root /var/www/html/repos;
location / {
autoindex on;
}
}
Responder1
Além das permissões regulares do sistema de arquivos, RHEL e CentOS têm controles de acesso obrigatórios do SELinux habilitados por padrão. Provavelmente seus arquivos não estão rotulados corretamente.
Como você está usando o local padrão do sistema de arquivos para conteúdo da web, você pode restaurar os contextos de segurança padrão do SELinux comrestorecon
restorecon -R /var/www/html/repos
Moiré informações detalhadas sobre como solucionar problemas do SELinux: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/selinux_users_and_administrators_guide/chap-security-enhanced_linux-troubleshooting