За последние 24 часа нас посетили 23620 программистов и 1524 робота. Сейчас ищет 791 программист ...

Php и права доступа

Тема в разделе "Прочие вопросы по PHP", создана пользователем unrecovered, 23 окт 2014.

  1. unrecovered

    unrecovered Новичок

    С нами с:
    24 янв 2014
    Сообщения:
    45
    Симпатии:
    0
    Вопрос, возможно не совсем по похапэ, но всё же =)

    Содержу сервак на генте с nginx + php-fpm на нём. При установке сайтов постоянно возникают проблемы с правами, причем какие-то загадочные.

    Скрипт установки создаёт пользователя, конфиг nginx, пул php-fpm и нужные папки, а также выдаёт на них дефолтные права(755 для папок, 644 для файлов) и делает пользователя владельцем(рекурсивно). В конфиге fpm особо прописано, чтобы он запускался от имени этого пользователя. Также, имеется общая группа www-data, которой принадлежит nginx и в которую добавляется пользователь.

    Хотя всё выглядит пристойно, php-процесс зачастую не может ни писать в папки, ни изменять их права. Также при работе с php-файлами возникают ошибки не только записи, но и чтения(!), что совсем непонятно, учитывая, что если зайти от этого пользователя в консоль, то все файлы редактируются и читаются без проблем.

    Поскольку chmod -R 777 * в папке сайта приводит к исчезновению ошибок, проблема таки с правами. Но в чём?

    Что я упускаю?

    UPD: Файлы редактируются нормально, если находятся в той же папке. При попытке отредактировать файл в другой папке отказывает в доступе

    конфиг nginx для сайта:
    Код (Text):
    1.  
    2. server {
    3.   server_name example.com www.example.com;
    4.   root "/home/user/example.com/public_html";
    5.  
    6.   index index.php;
    7.   client_max_body_size 10m;
    8.  
    9.     access_log /var/log/nginx/example.com_access.log;
    10.     error_log /var/log/nginx/example.com_error.log;
    11.  
    12.         # Support Clean (aka Search Engine Friendly) URLs
    13.         location / {
    14.                 if (!-e $request_filename) {
    15.                         rewrite ^/(.*)$ /index.php?q=$1 last;
    16.                 }
    17.         }
    18.  
    19.         location ~ \.php$ {
    20.                 try_files $uri =404;
    21.                 fastcgi_split_path_info ^(.+\.php)(.*)$;
    22.                 fastcgi_pass   unix:/var/run/user_fpm.sock;
    23.                 fastcgi_index  index.php;
    24.                 fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    25.                 include fastcgi_params;
    26.                 fastcgi_ignore_client_abort on;
    27.                 fastcgi_param  SERVER_NAME $http_host;
    28.         }
    29.  
    30.         # caching of files
    31.         location ~* \.(ico|pdf|flv)$ {
    32.                 expires 1y;
    33.         }
    34.  
    35.         location ~* \.(js|css|png|jpg|jpeg|gif|swf|xml|txt)$ {
    36.                 expires 14d;
    37.         }
    38.  
    39.     location ~* /\.(ht|git|svn) {
    40.         deny  all;
    41.     }
    42. }
    Конфиг пула php-fpm:
    Код (Text):
    1.  
    2. [user]
    3. listen = /var/run/user_fpm.sock
    4. listen.owner = user
    5. listen.group = www-data
    6. listen.mode = 0660
    7. user = user
    8. group = user
    9. pm = dynamic
    10. pm.max_children = 25
    11. pm.start_servers = 10
    12. pm.min_spare_servers = 10
    13. pm.max_spare_servers = 15
    14. pm.max_requests = 500
    15. request_terminate_timeout = 30s
    16. chdir = /
    17. php_admin_value[session.save_path] = "/home/user/_sessions"
    18. php_admin_value[open_basedir] = "/home/user:/usr/share/pear:/usr/share/php:/tmp:/usr/local/lib/php"
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    дык пхп запускается не от имени владельца может. ты уверен?
     
  3. unrecovered

    unrecovered Новичок

    С нами с:
    24 янв 2014
    Сообщения:
    45
    Симпатии:
    0
    Ак вот же:
    Кстати я нашёл, в чём была проблема. Я лошара :(
    Архив цмски я заливал от имени пользователя, но распаковал из консоли из-под рута. В результате весь контент стал с овнером рутом. Поэтому и не было разрешений.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    так с чего ты взял всё то, что ты написал про права и файлы? из своих фантазий? =)
     
  5. unrecovered

    unrecovered Новичок

    С нами с:
    24 янв 2014
    Сообщения:
    45
    Симпатии:
    0
    Недопроверил просто :) И сразу же паника-паника
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    когда паника-паника chmod -R 777 и проверить =)