Как победить nobody?

12 3
L
На сайте с 28.02.2006
Offline
132
2346

Подскажите, как бороться с файлами с правами nobody, создаваемые скриптом (на на форуме картинку загрузили например).

Задача - чтобы все файлы, создаваемые скриптами юзера прописывались под его правами.

Пробовал suPHP, но там куча заморочек получилась - то капча в DLE не хочет показываться (GD и ImageMagic конечно стоят), то POST с удаленного сервера нельзя сделать.. еще что-то было..

Вобщем если для пары своих сайтов сойдет, а для шареда не подходит.

Boris A Dolgov
На сайте с 04.07.2007
Offline
215
#1

php as cgi + suexec?

С уважением, Борис Долгов. Администрирование, дешевые лицензии ISPsystem, Parallels, cPanel, DirectAdmin, скины, SSL - ISPlicense.ru (http://www.isplicense.ru/?from=4926)
L
На сайте с 28.02.2006
Offline
132
#2

ммм.. а больше нет вариантов?

Andreyka
На сайте с 19.02.2005
Offline
822
#3

fcgid php

десять пыхов

Не стоит плодить сущности без необходимости
V
На сайте с 25.07.2006
Offline
128
#4

Самое первое, что приходит в голову - это оформить php-скрипт, который делает аплоад, как cgi - то есть дописать ему первой строкой типа #!/usr/bin/php, поставить нужные права и расширение.

Самое плохое, что при этом бывает - это обрывается сессия, начатая в обычных php-скриптах (при использовании стандартных php-сессий).

Можно сделать финт ушами и соединить mod_php и cgi :)

Сначала делаем аплоад во временную папку, а затем с помощью cgi-скрипта, вызываемого из php-скрипта, переносим файл на желаемое место. Cgi-скрипт вызывается из mod_php-скрипта через полноценный http-запрос к собственному серверу, типа как

file_get_contents("http://мой.сайт.сом/cgi-bin/move.cgi?filename=xxxxxx")

Сам move.cgi может быть типа вот такой:

#!/usr/bin/php

<?

$tmp_folder="/home/имя_юзара/tmp...../";

$final_folder="/home/имя_юзара/public_html/images..../";

//проверка на вшивость:

$file=basename($_REQUEST('filename');

cp ($tmp_folder.$file, $final_folder);

unlink ($tmp_folder.$file)

?>

Если обращения по http к собственному серверу невозможны (такое бывет у многих хостеров), то можно запускать аналогичный скрипт из крона. Конечно, при этом будет задержка, пока крон не сработает, но это не так уж страшно.

vapetrov добавил 17.05.2008 в 16:15

Усп. Сори. Вопрос оказывается о шареном хостинге...

Тогда ответ однозначный: без suphp (или т.п.) - никак...

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

Приватный linux-администратор
L
На сайте с 28.02.2006
Offline
132
#5

тогда такой вопрос - как настроить suphp, чтобы он только владельцев менял, а всю безопасность отрубить нафиг?

Andreyka
На сайте с 19.02.2005
Offline
822
#6

Поставить mpm peruser :)

L
На сайте с 28.02.2006
Offline
132
#7

Andreyka, а что тогда делать с ssl? И там с ПОСТом какая-то заморочка была..

V
На сайте с 25.07.2006
Offline
128
#8
Leos:
тогда такой вопрос - как настроить suphp, чтобы он только владельцев менял, а всю безопасность отрубить нафиг?

О какой безопасности речь?

Boris A Dolgov
На сайте с 04.07.2007
Offline
215
#9
vapetrov:
О какой безопасности речь?

Как я понимаю, тут речь о том, что нельзя запускать скрипты с правами больше 755, с другим владельцем.

V
На сайте с 25.07.2006
Offline
128
#10
Boris A Dolgov:
Как я понимаю, тут речь о том, что нельзя запускать скрипты с правами больше 755, с другим владельцем.

Эм... Тогда уж лучше апача от рута запустить - никаких проблем с запретами на доступ к файлам не будет... ;)

Речь ведь о шареном хостинге идет - пренебрегать элементарной безопасностью будет себе же во вред...

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий