Как известно чтобы через php создать файл в каталоге нужно чтобы на каталоге стояли права записи не только владельца но и как минимум группы или всех остальных. то бишь 777 вроде. или чтобы пересохранить файл другого владельца нужно чтобы у него такие же права стояли. дело в том что мне нужно чтобы php скрипт смог перезаписывать любые файлы с правами не меньше 644 на сайте. все эти файлы имеют пользователя X а php под пользователем Y. И при любых попытках изменить на такие файлы права или переписать его появлется ошибка мол нет прав. вопрос, можно ли php интерпритатору назначить такого же пользователя что и например пользователь FTP доступа (пользователь X) чтобы на php можно было бы творить с файлами сайта что угодно — то же что и вручную зайдя по FTP?
Тебе надо хотя бы кратко разобраться в системе разграничения прав UNIX, поскольку вопрос ставишь не правильно. PHP работает от имени пользователя, под которым запущен Apache (Если у тебя конечно Apache). Если тебе надо, чтобы пользователь из под которого запущен Apache имел доступ на запись к таким-то файлам, это надо просто сделать настройками. Если тебе надо чтобы пользователь из под которого запущен Apache имел привилегированный доступ и мог нарушать права доступа UNIX то (не делай этого!) надо запускать Apache из под root. Но скорее всего, тебе надо слегка ознакомиться с теорией по правам доступа в UNIX и понять что ты хочешь более точно, поскольку никогда пользователь Y не будет иметь право писать в файл с 644 пользователя X. Успехов!
так вопрос не в том, как пользователю X изменить файл пользователя Y с правами 644 (ясно что это не выйдет), вопрос в том, то есть мне нужно просто поменять пользователя с Y на X, как это сделать?
Дело в том, что сервер FTP является привилегированным (работает от имени root, или имеет средства для временного повышения полномочий до root). Так вот именно эта особенность позволяет FTP работать с файлами любого залогинившегося пользователя: FTP-сервер сам себе выставляет права нужного пользователя и соответственно имеет возможность работать с его файлами. Такая архитектура предусмотрена изначально при написании сервера FTP. В случае с PHP если тебе действительно надо сделать то же самое, то выход только один - реализовать подобную архитектуру. Но эта задача явно потребует хороших знаний дискреционной модели UNIX и методов работы с ней. Может у тебя задача попроще? Напиши по подробнее, попробую помочь.
спасибо) мне нужно написать скрипт на php который бы искал в файлах на сервере определенный текст и найдя его должен его оттуда удалить - то есть пересохранить файл по-новому. но так как на всех файлах обычно не стоят 777 права, то естественно перезаписать файл не получается, потому что владелец файлов - фтп-шный, а пользователь под которым выполняется php - другой, и ему разрешено только читать файл. и изменить соответственно права я тоже не могу на тот файл. ничего не могу с ним сделать. вот такой косяк.
В техподдержке хостинга мне сказали собрать свой php интерпритатор для сайта и использовать скрипт как cgi приложение, тогда скрипт будет выполняться от пользователя такого же, как и ftp. буду пробовать..
Если ты работаешь у провайдера и следовательно сам не можешь настраивать работу системы и писать программы с suid-битом, то CGI - единственный выход, если по утверждению техподдержки скрипты исполняются от имени нужного тебе пользователя. Только вот насчет: я не понял. Наверное они просто имели в виду, что у них есть возможность запускать PHP-скрипты в CGI режиме, и в этом режиме они исполняются от имени выделенной тебе учетной записи пользователя (через который и осуществляется FTP доступ). Если это так, то задача решена - остается только разобраться как у них запускать скрипты PHP в CGI режиме. Тут я не силен Успехов!