LINUX.ORG.RU

Настройка Nginx, 403 в поддиректориях. (проблема с правами)

 , ,


0

1

Настроил связку Nginx + php-fpm. Все вроде бы работает хорошо, но все, что находится в директориях, находящихся в www, не выполняется и недоступно. Даже инклюд из пхп в поддиректорию выдает ошибку доступа.

Конфиг хоста. Хотел чтоб для каждого пользователя создавался хост. Ниже конфиги.

domain.ru.conf - конфиг виртуального хоста

server {
  listen	80;
  server_name   domain.ru;
  charset       utf-8;

  root 		/home/domainru/www;
  index		index.html index.htm index.php;

  access_log    /home/domainru/logs/access.log;
  error_log     /home/domainru/logs/error.log;
  include       /etc/nginx/templates/php-fpm.conf;
}

server {
  listen 	80;
  server_name   www.domain.ru;
  

nginx.conf

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
	worker_connections 768;
	use epoll;
	# multi_accept on;
}

http {
	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 30;
	types_hash_max_size 2048;

	include /etc/nginx/mime.types;
	default_type application/octet-stream;

	ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
	ssl_prefer_server_ciphers on;

	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;

	client_header_timeout 30;
	client_body_timeout 30;
	reset_timedout_connection on;

	client_max_body_size 512m;
	client_body_buffer_size 128k;

	gzip on;
	gzip_disable "msie6";

	gzip_proxied any;
	gzip_min_length 1024;
	gzip_comp_level 4;
	gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript application/atom+xml application/rdf+xml;

	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}

И наконец

/etc/nginx/templates/php-fpm.conf

location ~ \.php$ {
   try_files $uri =404;
   fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
   fastcgi_index index.php;
   include fastcgi_params;
   fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
}
location ~ /\.ht {
   deny all;
}
location ~* \.(gif|jpeg|jpg|txt|png|tif|tiff|ico|jng|bmp|doc|pdf|rtf|xls|ppt|rar|rpm|swf|zip|bin|exe|dll|deb|cur)$ {
  expires 168h;
}
location ~* \.(css|js)$ {
  expires 180m;
}

Только что сделал chmod -r 755 на директорию хоста, как и ожидал - все стало работать. Все директории и файлы, созданные пользователем, недоступны для выполнения. Хотя директории, кажется, доступны. Если в поддиректории нет вызываемого файла, кидает 404, если есть - 403.

Вопрос: как сделать так, чтоб к создаваемым пользователем файлам был доступ и чтоб не нужно было делать chmod каждый раз? Что я забыл?

P.S. Как сделать так, чтоб у пользователя был доступ по фтп только к своей папке и выше он подняться не мог? chroot_local_user=YES не помогает, фтп-клиент ругается и вообще не подключается. Гугл как-то нифига не помог.

Ответ на: комментарий от warrangie

Под каким пользователем пускаются nginx и php-fpm? В каких группах состоит пользователь? Кому и с какими правами принадлежит каталог?
Сделай хотя бы всем участникам одинаковую группу и разреши этой группе чтение из каталога.

imul ★★★★★ ()
Ответ на: комментарий от imul

nginx.conf

user www-data;

php-fpm установил и он сразу запустился как демон, наверное от рута. Дитектории в /home принадлежат одноименным пользователям, которые были добавлены обычным adduser, позже ничего не менялось. В каких группах состоят я просто не знаю. В дефолтных.

warrangie ()
Ответ на: комментарий от imul

Сделай хотя бы всем участникам одинаковую группу и разреши этой группе чтение из каталога.

Мне это нужно будет проворачивать каждый раз при добавлении нового пользователя.

warrangie ()
Ответ на: комментарий от imul

Если я сделаю всем одну группу, то они все будут иметь доступ ко всем каталогам. Даже тем, которые им не принадлежат. А мне нужно вообще закрыть пользователей в своей директории в /home/

warrangie ()