смена владельца файла

Статус
В этой теме нельзя размещать новые ответы.

Blackster

Писатель
Регистрация
28 Мар 2007
Сообщения
5
Реакции
0
После закачки файла на сервер через форму multipart/form-data, файл сохраняется под владельцем apache.
Соответственно, после этого я не могу средствами FTP клиента - который соединяется с сервером под другим именем - манипулировать атрибутами этого файла, перезакачивать его и т.п.
Изменить владельца файла средствами PHP тоже не выходит:
chown('test.jpg','otheruser') выдает ошибку: Operation not permitted
exec('chown otheruser /home/path/test.jpg'); также ничего не изменяет

Что можно еще сделать?
Каждый раз заходить под рутом и менять владельца файла не удобно.
Спасибо!
 
А группу какую выставляет при закачке через форму?
Можно добавить пользователя фтп в эту группу в системе и при закачке делать не chown, а chmod 664.
Тогда при коннекте по ftp пользователь сможет изменять данные файлы.

Еще вариант, но немного посложнее, разобраться с ACL.
Только файловая система должна поддерживать такую возможность.
 
группу тоже выставляет apache.
Хм, наверно можно так сделать - добавить пользователя FTP в группу apache. Только не вредно ли это будет с точки зрения безопасности?
PS: сервер я арендую, т.е. никаких других пользователей на нем нет
 
Ну я и имею ввиду - добавить пользователя ftp в группу apache.
Не вижу проблем с безопасностью. Просто пользователь фтп будет иметь доступ на подгружаемые через форму файлы. Так ты же этого и добиваешься.
 
ладно, попробую! Вроде бы такой простой способ, а в голову не приходил! Спасибо pk2002!
И слава форуму! Столько ждал ответа на этот вопрос на форуме dklab (спецы блин) а тут меньше чем за полчаса подсказали :)
 
К сожалению, чтобы сделать chown, нужно быть рутом, иначе никак :( А файл будет сохраняться под uid/gid'ом пользователя, от имени которого запущен httpd. Я бы прописал пользователя, от имени которого происходит логин на ftp, в ту группу, от имени которой пущается httpd. После заливки файла останется только сделать на нём chmod 775.
 
Иногда возникает задача, когда необходимо сменить владельца файла, директории на сервере. Файлы созданные скриптами не доступны для редактирования по ssh и ftp. Что делать? Просить хостера?
проблемы с доступом к файлам площадки, созданным PHP-скриптами

Дело
в том, что PHP-сценарии, запущенные модулем mod_php, выполняются от
имени пользователя wwwserver. Соответственно, если на
чтение/модификацию не были выставлены разрешения для всех (достаточно
666 - для файлов, 777 - для каталогов), то модификация созданных такими
скриптами файлов (каталогов) пользователю uXXXX (id площадки) будет
запрещена (при доступе по SSH, по FTP).

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

Сделать это рекурсивно можно, исполнив PHP-сценарий:

<?php
function chmod_R($path, $perm) {

$handle = opendir($path);
while ( false !== ($file = readdir($handle)) ) {
if ( ($file !== ".") && ($file !== "..") ) {
if ( is_file($file) ) {
chmod($path . "/" . $file, $perm);
}
else {
chmod($path . "/" . $file, $perm);
chmod_R($path . "/" . $file, $perm);
}
}
}
closedir($handle);
}

$path = $_SERVER["QUERY_STRING"];

if ( $path{0} != "/" ) {
$path = $_SERVER["DOCUMENT_ROOT"] . "/" . $path;
}

chmod_R($path, 0777);
echo $path;
?>


Разместите этот файл на площадке, в директории, доступной веб-серверу, например, как domain.tld/www/chmod.php

Вызывать скрипт нужно так:
Для просмотра ссылки Войди или Зарегистрируйся
или так:
Для просмотра ссылки Войди или Зарегистрируйся

В
первом случае - указывается путь, относительно DocumentRoot для данного
домена (domain.tld/www/ в нашем примере). Во втором случае (uXXXXX -
идентификатор вашей площадки)- абсолютный путь от корневой папки
сервера.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху