Вопрос, возможно не совсем по похапэ, но всё же =) Содержу сервак на генте с nginx + php-fpm на нём. При установке сайтов постоянно возникают проблемы с правами, причем какие-то загадочные. Скрипт установки создаёт пользователя, конфиг nginx, пул php-fpm и нужные папки, а также выдаёт на них дефолтные права(755 для папок, 644 для файлов) и делает пользователя владельцем(рекурсивно). В конфиге fpm особо прописано, чтобы он запускался от имени этого пользователя. Также, имеется общая группа www-data, которой принадлежит nginx и в которую добавляется пользователь. Хотя всё выглядит пристойно, php-процесс зачастую не может ни писать в папки, ни изменять их права. Также при работе с php-файлами возникают ошибки не только записи, но и чтения(!), что совсем непонятно, учитывая, что если зайти от этого пользователя в консоль, то все файлы редактируются и читаются без проблем. Поскольку chmod -R 777 * в папке сайта приводит к исчезновению ошибок, проблема таки с правами. Но в чём? Что я упускаю? UPD: Файлы редактируются нормально, если находятся в той же папке. При попытке отредактировать файл в другой папке отказывает в доступе конфиг nginx для сайта: Код (Text): server { server_name example.com www.example.com; root "/home/user/example.com/public_html"; index index.php; client_max_body_size 10m; access_log /var/log/nginx/example.com_access.log; error_log /var/log/nginx/example.com_error.log; # Support Clean (aka Search Engine Friendly) URLs location / { if (!-e $request_filename) { rewrite ^/(.*)$ /index.php?q=$1 last; } } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_pass unix:/var/run/user_fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_ignore_client_abort on; fastcgi_param SERVER_NAME $http_host; } # caching of files location ~* \.(ico|pdf|flv)$ { expires 1y; } location ~* \.(js|css|png|jpg|jpeg|gif|swf|xml|txt)$ { expires 14d; } location ~* /\.(ht|git|svn) { deny all; } } Конфиг пула php-fpm: Код (Text): [user] listen = /var/run/user_fpm.sock listen.owner = user listen.group = www-data listen.mode = 0660 user = user group = user pm = dynamic pm.max_children = 25 pm.start_servers = 10 pm.min_spare_servers = 10 pm.max_spare_servers = 15 pm.max_requests = 500 request_terminate_timeout = 30s chdir = / php_admin_value[session.save_path] = "/home/user/_sessions" php_admin_value[open_basedir] = "/home/user:/usr/share/pear:/usr/share/php:/tmp:/usr/local/lib/php"
Ак вот же: Кстати я нашёл, в чём была проблема. Я лошара Архив цмски я заливал от имени пользователя, но распаковал из консоли из-под рута. В результате весь контент стал с овнером рутом. Поэтому и не было разрешений.