Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PHP, Apache и иже с ними или Как Решить Проблему? сложный и запутанный вопрос 
:(
    Опции темы
mark2009
Дата 28.3.2012, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 12.10.2009

Репутация: нет
Всего: 1



Добрый день!

Разберём ситуацию с самого начала.

Есть на сервере FTP. И есть пользователь, который этим FTP рулит. К примеру пользователь A с группой А.
Есть сервер Apache, которым рулит пользователь B. Проще говоря, сервер работает из-под пользователя B с группой B.

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

Теперь внимание - подготовка к вопросу.
Некий скрипт создаёт некий файл на сервере. Я имеб доступ к этому файлу по FTP, однако он мне бесполезен: владельцем файла является пользователь B, а я захожу на FTP под A. Соответственно не могу с файлом ничего сделать. 

Теперь внимание - шок!

Код

bash-4.1# chown administrator:administrator /var/www/XXX/data/www/active-play.ru/templates/
about.tpl             buhschet.tpl          dostavka.tpl          forgotpass.tpl        index.tpl             not_logged_in.tpl     product_page.tpl      search_template.tpl   send.tpl               third_page.tpl       
add_user_address.tpl  catalog.tpl           error_template.tpl    goods_akcii.tpl       logged_in.tpl         oplata.tpl            profile.tpl           search.tpl            shop_footer.tpl       
admin/                confirm.tpl            first_page.tpl       goods_raspr.tpl       menu.tpl              order_details.tpl     register.tpl           second_page.tpl      shop_header.tpl       
basket.tpl            contacts.tpl           first.tpl            hit.tpl               new_goods.tpl         print_order.tpl       sample.tpl            send_order.tpl         test443.tpl          
bash-4.1# chown administrator:administrator /var/www/XXX/data/www/active-play.ru/templates/first_page.tpl
chown: невозможно получить доступ к «/var/www/XXX/data/www/active-play.ru/templates/first_page.tpl»: Нет такого файла или каталога
bash-4.1# 


Собственно что из этого кода видно?
Я зашёл под рутом, зашёл в определённую папку. В ней есть файл first_page.tpl. Но при попытке изменить владельца этого файла, система мне говорит, что такого файла нет. Имя третьей папки изменено (XXX) по соображениям безопасности, на суть вопроса это вообще никак не влияет.

Внимание - вопрос! Как такое вообще может быть? Как сделать так, чтобы создавая файлы скриптами, я бы имел доступ на изменение прав по FTP?
PM MAIL WWW ICQ Skype   Вверх
mark2009
Дата 28.3.2012, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 12.10.2009

Репутация: нет
Всего: 1



У меня на серваке стоит Smarty. Который компилирует шаблоны в PHP-код и сохраняет их в папке. Так вот, он их сохраняет, у них пользователь и группа сервачная (апач), НО: удаляются они легко, прям на раз.... а мои созданные файлы удалить невозможно. Как такое может быть?
PM MAIL WWW ICQ Skype   Вверх
MoLeX
Дата 28.3.2012, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



PHP тут не причем. Неверная настройка сервера


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
mark2009
Дата 28.3.2012, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 12.10.2009

Репутация: нет
Всего: 1



MoLeX, 
Вот спасибо за такой ответ... 
Сейчас с превеликим трудом убрал на сервере php_admin_value open_basedir. Думал в этом проблема, ан нет...

Подскажите пожалуйста, каким образом поменять настройку сервера?

PS Да, и объясните пожалуйста тогда, почему при неверной настройке сервера, скрипты, созданные smarty, можно легко удалить, а мои - нет. Только потому что там расширение php а здесь tpl? Да не поверю никогда в жизни...

Это сообщение отредактировал(а) mark2009 - 28.3.2012, 14:24
PM MAIL WWW ICQ Skype   Вверх
baldina
Дата 28.3.2012, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



Цитата(mark2009 @  28.3.2012,  13:55 Найти цитируемый пост)
у них пользователь и группа сервачная (апач), НО: удаляются они легко, прям на раз.... а мои созданные файлы удалить невозможно. 

1. у созданных Вами файлов пользователь/группа такие же?
2. а какие права на файлы, созданные Smarty и создаваемые Вами
3. "мои созданные файлы" - созданные как? php, samba, nfs, непосредственно из shell, иначе?

Добавлено через 5 минут и 32 секунды
Цитата(mark2009 @  28.3.2012,  12:36 Найти цитируемый пост)
Как сделать так, чтобы создавая файлы скриптами, я бы имел доступ на изменение прав по FTP?

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

понятно, что
Цитата(mark2009 @  28.3.2012,  12:36 Найти цитируемый пост)
 пользователь A с группой А

и
Цитата(mark2009 @  28.3.2012,  12:36 Найти цитируемый пост)
пользователя B с группой B

пересекаются только, если они - other
включите их обоих в группу С, присвойте файлу группу С, дайте права на чтение/запись группе

Добавлено через 13 минут и 59 секунд
Цитата(baldina @  28.3.2012,  15:00 Найти цитируемый пост)
доступ на изменение прав

обратите внимание: права владелец может менять как хочет, вплоть до лишения себя прав. а вот владельца файла может сменить только root. группу поменять может владелец файла, но только на группу, в которую он входит сам
PM MAIL   Вверх
mark2009
Дата 28.3.2012, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 12.10.2009

Репутация: нет
Всего: 1



baldina, 
Отвечаю конкретно на поставленные вопросы.


Цитата(baldina @  28.3.2012,  15:00 Найти цитируемый пост)
1. у созданных Вами файлов пользователь/группа такие же?
2. а какие права на файлы, созданные Smarty и создаваемые Вами
3. "мои созданные файлы" - созданные как? php, samba, nfs, непосредственно из shell, иначе?


1. У созданных мной файлов группа/пользователь сервера (у файлов, залитых на   фтп - группа/пользователь - те, под которым запущен сервер фтп.
2. Абсолютно одинаковые! Это-то и изумляет!
3. Созданные с помощью php (fopen('file.php', 'w'), fwrite(), fclose())...

Цитата(baldina @  28.3.2012,  15:00 Найти цитируемый пост)
присваивать файлам соответствующие правила доступа. например, давать им определенную группу, куда входит искомый ftp пользователь, и предоставлять нужные права группе.

Согласен. Было дело:

Код

<?php

chown('/full/path/to/file', 'пользователь, из-под которого работает ftp');

?>


В итоге получил: Operation not permitted.

Сейчас новое. В каталоге templates есть созданный мной файл sec.tpl. Шаблон. Но при попытке вызова из php, smarty упорно не может прочитать этот файл. Желая докопаться до причины (может это у меня руки кривые) я написал предельно простой скрипт:

Код

<?php

$f = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/templates/sec.tpl');
echo $f;

?>


Как думаете, что получил в ответ? Правильно:

Код

Warning: file_get_contents(/.../.../...//templates/sec.tpl): failed to open stream: No such file or directory in /.../.../...//test.php on line 3 


Этот файл имеется, но им владеет пользователь апача, а не пользователь ftp. Простите за грубость, но за каким чёртом выскакивает предупреждение о том, что этого файла вообще не существует?
Цитата(baldina @  28.3.2012,  15:00 Найти цитируемый пост)
включите их обоих в группу С, присвойте файлу группу С, дайте права на чтение/запись группе 

Имеется в виду дать права на чтение и запись для ftp? Тогда под чем у меня должен быть ftp запущен?

PM MAIL WWW ICQ Skype   Вверх
Fortop
Дата 28.3.2012, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(mark2009 @  28.3.2012,  15:18 Найти цитируемый пост)
/.../.../...//templates/s

Я быть может что-то путаю, но на мой взгляд многовато точечек между слешами smile

сделайте 
Код

var_dump(realpath($_SERVER['DOCUMENT_ROOT'] . '/templates/sec.tpl'));

Что он вам выведет?


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
mark2009
Дата 28.3.2012, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 12.10.2009

Репутация: нет
Всего: 1



Fortop, 
Точечки поставлены из соображений информационной безопасности:) так-то там реальный путь прописан.

А предложенное вами вывело вот что:

Код

bool(false) 


Это сообщение отредактировал(а) mark2009 - 28.3.2012, 15:37
PM MAIL WWW ICQ Skype   Вверх
Fortop
Дата 28.3.2012, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(mark2009 @  28.3.2012,  15:36 Найти цитируемый пост)
А предложенное вами вывело вот что:

Это значит что построенный вами путь не резолвится.

Проверяйте его полностью.

Добавлено через 8 минут и 57 секунд
А кстати, не chroot'ed ли у вас окружение?


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
mark2009
Дата 28.3.2012, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 12.10.2009

Репутация: нет
Всего: 1



Fortop, 
Это понятно! Но путь-то такой есть... я бы скрин сделал, но тогда все будут видеть мои пути на сервере....

Добавлено через 6 минут и 15 секунд
Fortop, 
Цитата(Fortop @  28.3.2012,  15:47 Найти цитируемый пост)
А кстати, не chroot'ed ли у вас окружение? 

А как это проверить? Я не знаю.
PM MAIL WWW ICQ Skype   Вверх
Fortop
Дата 28.3.2012, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(mark2009 @  28.3.2012,  16:04 Найти цитируемый пост)
А как это проверить? Я не знаю. 

http://stackoverflow.com/questions/75182/d...ail-from-within

Добавлено через 21 секунду
Ну и вообще погуглите "how to detect chroot"


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
mark2009
Дата 28.3.2012, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 12.10.2009

Репутация: нет
Всего: 1



Накопал вот такой вот скрипт:

Код

if [ "$(stat -c %d:%i /)" != "$(stat -c %d:%i /proc/1/root/.)" ]; then
  echo "We are chrooted!"
else
  echo "Business as usual"
fi


Он мне вывел

Код

Business as usual


Т.е. нет chroot'а?
PM MAIL WWW ICQ Skype   Вверх
MoLeX
Дата 29.3.2012, 05:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Ваш Apache работает из под apache:apache
А FTP от ftp:ftp
?


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
mark2009
Дата 29.3.2012, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 12.10.2009

Репутация: нет
Всего: 1



MoLeX, 
Про сервак правильно, а FTP работает от имени пользователя, созданного в ISP Manager. Ну, считайте что ftp:ftp )) в принципе пользователь другой, но пользователь с группой совпадает, дела это не меняет как бы )
PM MAIL WWW ICQ Skype   Вверх
MoLeX
Дата 29.3.2012, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



так, вот Smarty выполняется от apache:apache и соответственно может создавать, выполнять, удалять файлы.
FTP от (допустим) user01:user01 и созданные через него файлы apache выполнить не может

Цитата(mark2009 @  28.3.2012,  12:36 Найти цитируемый пост)
Как сделать так, чтобы создавая файлы скриптами, я бы имел доступ на изменение прав по FTP? 

правильно настроить права, а лучше чтобы скрипты выполнялись не из под apache, а из под user01


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0577 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.