Jump to content
  • 0

Изменение CHMOD и запись в файл на сервере.


Vladiger
 Share

Question

Требуется изменить содержание одного из файлов на сервере с атрибутами CHMOD 0644.

Изменяемый файл - source.php (атрибуты CHMOD 0644)

<?php
?>

Исполняющий скрипт - write.php (атрибуты CHMOD 0644)

<?php
$body = file_get_contents("source.php");
$body = str_replace("<?php", "<?phprnСтрока", $body);
$FH = @fopen("source.php", 'w');
fwrite($FH, $body);
fclose($FH);
?>

Оба файла имеют одинаковый UID владельца (ну по крайней мере я так думаю)... В результате выполнения скрипта write.php должна добавиться строчка "Строка" сразу после "<?php" и полученный результат опять записывается в файл. Но на самом деле ничего не происходит. Запись в файл происходит только поле того, когда я изменю атрибуты CHMOD на изменяемый файл source.php, установив 0666 или 0755 или 0777 вручную (FTP клиентом).

Пробовал вписать в исполняющем скрипте строчку

chmod("source.php", 0777);

перед открытием файла для записи

$FH = @fopen("source.php", 'w');

Результат так же не увенчался успехом. Не пишет в файл с атрибутами CHMOD 0644 как ни крути.

Почитал предупреждение о режиме SAFE MODE

Замечание: Когда безопасный режим включ?н, PHP проверяет имеет ли файл или директория, с которой вы работаете, такой же UID, как и выполняемый скрипт. Кроме того, вы не можете устанавливать SUID, SGID и "липкие" биты.

Тоже показалось странным, ведь оба файла я закачал FTP клиентом и они должны иметь одинаковый UID...

Подскажите что я не так делаю? Мне нужно изменить файл именно с атрибутами CHMOD 0644 так как это такой же исполняющий скрипт для других целей и мне просто требуется изменить его содержание.

Link to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 0
Уберите "@" и убедитесь, что ошибка именно в привилегиях.

Конечно в привелегиях, так я о чем и спрашиваю? Почему у меня не достаточные привелегии изменять свои-же файлы скриптом.

Убрал я @ и никаких сообщений сервера не выводится.

Даже дописал строчку в начале скрипта

error_reporting(E_ALL);

и все тщетно... Никаких сообщений об ошибках и предупреждений...

А вы не думайте. Вы проверьте.

Если я не доверяю самому себе, тогда кому-же мне еще доверять? Ну проверил, и что?

Прописал пару строчек вывода статистики об обойх фалах...

print "<pre>"; print_r(stat("source.php"));
print "<pre>"; print_r(stat("write.php"));

UID пользователя одинаковые на обоих файлах. Впрочем они не могут быть разными, я закачивал оба файла FTP клиентом одновременно, почему они должны быть разные?

В общем я так понял что сервер работает в режиме SAFE MODE и блокировал мне вообще выполнение таких функций как chmod, link, unlink и еще куча подобных функций, которые как раз изменяют привелегии...

Остается вопрос, как тогда вообще работать на таком сервере если он мне все блокировал? Есть какие-то средства обхода режима SAFE MODE?

Речь сейчас идет не о хаккерстве, а о моем сервере, на котором я ничего не могу сделать с файлами, на которых установлены атрибуты CHMOD 0644...

Link to comment
Share on other sites

  • 0
А у вас хостинг не под windows работает?

Да нет... Хостинг конечно бесплатный, но суть проблемы сводится к тому, что стандартными методами, для "всеобщего" использования, я не могу менять содержимое файлов с атрибутами CHMOD 0644. Даже если мне и удастся каким-то образом осуществить это у себя на сервере, то у любого другого пользователя, который использует мой скрипт возникнут те-же самые проблемы, так как скрипт может оказаться на любом сервере...

img-0001.gif

Link to comment
Share on other sites

  • 0
Конечно в привелегиях, так я о чем и спрашиваю?

Если я не доверяю самому себе, тогда кому-же мне еще доверять? Ну проверил, и что?

Ну и что, ну и что... Если вс? так здорово и вы вс? знаете, в чем вообще тогда проблема?

Какая разница кто владелец файлов? Они же не исполняемые. Исполняется то PHP под апачем. И исполняется это вс? под апачевским пользователем.

Link to comment
Share on other sites

  • 0
Если вс? так здорово и вы вс? знаете, в чем вообще тогда проблема?

Читайте первое сообщение темы. Именно в нем описана проблема.

Как изменить содержание файла с атрибутами CMOD 0644 исполняющим скриптом?

Link to comment
Share on other sites

  • 0
Вы запускаете не через апач? Напрямую?

vasa_c - У вас есть что либо по делу? Или может просто так пофлудим в этой теме?

Вот попробуйте посудить сами: - Если бы я был влядельцем этого Апача, я бы просто взял, да отключил режим SAFE MODE. Нету у меня таких привелегий, неужели это не понятно из всех сообщений.

Конечно я запускаю скрипт как Апачевский пользователь, напрямую из браузера... Просто тыкаю по ссылке http://www.mydoman.ru/write.php

Более того я даже не уверен что могу изменять настройки сервера при помощи .htaccess не говоря уже про php.ini

Может вы все-таки по делу что-то посоветуете? А то наш диалог больше напоминает дуэль "кто умнее"...

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

Если по самой проблеме ничего пока нет, то спасибо и на этом!!!:)

Link to comment
Share on other sites

  • 0

Я четко ответил вам, почему у вас не работает.

Я думал вы поймете почему у вас при таких условиях изначальная задача решена быть не может.

Если же вы от рождения идиот, то, к сожалению, здесь я вам ничем не помогу.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy