За последние 24 часа нас посетили 17829 программистов и 1719 роботов. Сейчас ищут 853 программиста ...

пользователи FTP и PHP....???

Тема в разделе "PHP для новичков", создана пользователем kerranswell, 19 май 2008.

  1. kerranswell

    kerranswell Активный пользователь

    С нами с:
    19 май 2008
    Сообщения:
    16
    Симпатии:
    0
    Как известно чтобы через php создать файл в каталоге нужно чтобы на каталоге стояли права записи не только владельца но и как минимум группы или всех остальных. то бишь 777 вроде. или чтобы пересохранить файл другого владельца нужно чтобы у него такие же права стояли.
    дело в том что мне нужно чтобы php скрипт смог перезаписывать любые файлы с правами не меньше 644 на сайте. все эти файлы имеют пользователя X а php под пользователем Y. И при любых попытках изменить на такие файлы права или переписать его появлется ошибка мол нет прав.

    вопрос, можно ли php интерпритатору назначить такого же пользователя что и например пользователь FTP доступа (пользователь X) чтобы на php можно было бы творить с файлами сайта что угодно — то же что и вручную зайдя по FTP?
     
  2. vlad-net

    vlad-net Активный пользователь

    С нами с:
    28 июл 2006
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    Москва
    Тебе надо хотя бы кратко разобраться в системе разграничения прав UNIX, поскольку вопрос ставишь не правильно.

    PHP работает от имени пользователя, под которым запущен Apache (Если у тебя конечно Apache).

    Если тебе надо, чтобы пользователь из под которого запущен Apache имел доступ на запись к таким-то файлам, это надо просто сделать настройками.

    Если тебе надо чтобы пользователь из под которого запущен Apache имел привилегированный доступ и мог нарушать права доступа UNIX то (не делай этого!) надо запускать Apache из под root.

    Но скорее всего, тебе надо слегка ознакомиться с теорией по правам доступа в UNIX и понять что ты хочешь более точно, поскольку никогда пользователь Y не будет иметь право писать в файл с 644 пользователя X.

    Успехов!
     
  3. kerranswell

    kerranswell Активный пользователь

    С нами с:
    19 май 2008
    Сообщения:
    16
    Симпатии:
    0
    так вопрос не в том, как пользователю X изменить файл пользователя Y с правами 644 (ясно что это не выйдет),
    вопрос в том,
    то есть мне нужно просто поменять пользователя с Y на X,
    как это сделать?
     
  4. vlad-net

    vlad-net Активный пользователь

    С нами с:
    28 июл 2006
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    Москва
    Дело в том, что сервер FTP является привилегированным (работает от имени root, или имеет средства для временного повышения полномочий до root).

    Так вот именно эта особенность позволяет FTP работать с файлами любого залогинившегося пользователя: FTP-сервер сам себе выставляет права нужного пользователя и соответственно имеет возможность работать с его файлами.

    Такая архитектура предусмотрена изначально при написании сервера FTP.

    В случае с PHP если тебе действительно надо сделать то же самое, то выход только один - реализовать подобную архитектуру. Но эта задача явно потребует хороших знаний дискреционной модели UNIX и методов работы с ней.

    Может у тебя задача попроще? Напиши по подробнее, попробую помочь.
     
  5. kerranswell

    kerranswell Активный пользователь

    С нами с:
    19 май 2008
    Сообщения:
    16
    Симпатии:
    0
    спасибо) мне нужно написать скрипт на php который бы искал в файлах на сервере определенный текст и найдя его должен его оттуда удалить - то есть пересохранить файл по-новому. но так как на всех файлах обычно не стоят 777 права, то естественно перезаписать файл не получается, потому что владелец файлов - фтп-шный, а пользователь под которым выполняется php - другой, и ему разрешено только читать файл. и изменить соответственно права я тоже не могу на тот файл. ничего не могу с ним сделать.

    вот такой косяк.
     
  6. Anonymous

    Anonymous Guest

    То что тебе надо, называется suExec - погугли.
     
  7. kerranswell

    kerranswell Активный пользователь

    С нами с:
    19 май 2008
    Сообщения:
    16
    Симпатии:
    0
    В техподдержке хостинга мне сказали собрать свой php интерпритатор для сайта и использовать скрипт как cgi приложение, тогда скрипт будет выполняться от пользователя такого же, как и ftp.

    буду пробовать..
     
  8. vlad-net

    vlad-net Активный пользователь

    С нами с:
    28 июл 2006
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    Москва
    Если ты работаешь у провайдера и следовательно сам не можешь настраивать работу системы и писать программы с suid-битом, то CGI - единственный выход, если по утверждению техподдержки скрипты исполняются от имени нужного тебе пользователя.

    Только вот насчет:
    я не понял.

    Наверное они просто имели в виду, что у них есть возможность запускать PHP-скрипты в CGI режиме, и в этом режиме они исполняются от имени выделенной тебе учетной записи пользователя (через который и осуществляется FTP доступ). Если это так, то задача решена - остается только разобраться как у них запускать скрипты PHP в CGI режиме. Тут я не силен :)

    Успехов!