symlink при переносе php4->php5

twistfire

Новичок
symlink при переносе php4->php5

Здравствуйте!

Перешли на php 5

Естественно заново сконфигурировали сервер..

Выдает ошибку:

Warning: symlink() [function.symlink]: SAFE MODE Restriction in effect. The script whose uid is 10000 is not allowed to access /data/www/.../files/FilesTempLink/6fftsb1n5hz3eos5 owned by uid 80 in /data/www/..../files/download.php on line 96

В чем дело? Кому прав не хватает и что сделать чтобы хватило?

Стоит сказать что файлы в папке files предназначены для скачивания с сервера, и добавляются пользователями через http и ftp..
 

nerezus

Вселенский отказник
В php.ini поставь safe_mode = Off и обязательно прочитай описание опций конфигурации. Хотя бы каменты к ним.
 

twistfire

Новичок
ну мне никто не разрешит поставить
safe_mode = Off

это точно..
при этом ранее тоже стоял safe mode - и все работало..

тут в правах проблема..
 

twistfire

Новичок
каким образом ставить права, если папка data/www/.../files/FilesTempLink/6fftsb1n5hz3eos5 создается эти же скриптом..
я вообще не понимаю логики..

Работает скрипт
шаг 1 - создание папки - прошло..
шаг 2 - запись символьной ссылки в эту папку - symlink - выдает ошибку о том что папка принадлежит другому uid..
Как это может быть? если и создана папка и ссылку пытается поставить один и тот же скрипт?

Что есть "ССЗБ "?
 

dimagolov

Новичок
twistfire, по-моему, в пхп4 был баг, что права в случае симлинка проверялись на сам симлинк, а не на файл, на который он указывает. в пхп5 это пофиксили, так что если нет прав на сам файл то никакие симлинки не помогут
 

twistfire

Новичок
Автор оригинала: dimagolov
twistfire, по-моему, в пхп4 был баг, что права в случае симлинка проверялись на сам симлинк, а не на файл, на который он указывает. в пхп5 это пофиксили, так что если нет прав на сам файл то никакие симлинки не помогут
То есть Вы хотите сказать, что на файл на который создается symlink должны быть права за запись?
Или как?

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

dimagolov

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

короче, идея в том, что теперь симлинками safemode хрен обманишь.

вообще в мане все это описано, читайте, все мои воспоминания - от давнего прочтения мана по этой теме.
 

twistfire

Новичок
я даже и не знаю...
вроде уже все права выставили.. все-равно не хочет работать :(

ту же ошибку и выдает кстати..

глупо как-то..

сам создаю папку - папка создается нормально..
хочу сделать ссылку в этой папке на файл - выдает ошибку из-за неверной принадлежности файла, хотя этот файл (на который хочу создать ссылку) - доустпен всем на запись/чтение/выполнение...

Я что-то вообще перестал понимать в чем дело..
Дело скорее даже не в правах, а именно в safe mode.. Хотя - при чем тут оН?

-~{}~ 16.06.08 22:10:

symlink() в safe mode - Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. (Замечание: проверка выполняется только для параметра target )

Тогда каким образом использовать эту команду?
У меня папка files/filestemplink/Временная_папка/ создается этим же скриптом.. а владелец у папки почему-то uid 80... Или это у файла, на который я создаю ссылку владелец с uid 80?

Но просто в папку files/ тоже скриптами закачиваются файлы... По идее у них тоже uid 10000 должен быть.. Или у них по папке в котрой они лежат присваивается uid?

Как вообще просмотреть список файлов и uid кто владелец (то же для папок) через php?
 

twistfire

Новичок
дык а зачем?
у меня доступ к этому файлу-то есть..

Скрипт реализует антилич на файловом архиве.

Все файлы лежат в папке files/
В нем лежит .htaccess перенаправляющий запросы на downloaad.php который в случае прохода капчи делает папку
files/FilesTempLink/Временная_папка/
И туда кладет ссылочку на файл.. - оттуда и качается..

symlink нужен для создания ссылки..

-~{}~ 16.06.08 22:53:

вот в чем ошибка..
я создаю папку этим скриптом..
и почему-то у нее после создания uid - 80

хотя скрипт имеет uid 10000

Что делать?
Как папке присвоить uid 10000?
 

dimagolov

Новичок
twistfire, тебе в man chmod:
MODES
Modes may be absolute or symbolic. An absolute mode is an octal number
constructed from the sum of one or more of the following values:

4000 (the setuid bit). Executable files with this bit set will
run with effective uid set to the uid of the file owner.
Directories with this bit set will force all files and sub-
directories created in them to be owned by the directory
owner and not by the uid of the creating process, if the
underlying file system supports this feature: see chmod(2)
and the suiddir option to mount(8).
2000 (the setgid bit). Executable files with this bit set will
run with effective gid set to the gid of the file owner.
1000 (the sticky bit). See chmod(2) and sticky(8).
то есть дело в правах и владельце папки FilesTempLink
 

twistfire

Новичок
Выдаю инфу:

/data/www/c.../files/FilesTempLink/ drwxrwxrwx 10000
/data/www/c.../files/ drwxrwxrwx 10000
/data/www/c.../files/FilesTempLink/o9o50jt2fj2x8lxb drwxr-xr-x 80

При этом последняя папка создана этим же скриптом, который делает Symlink...

Т.е. у созданной папки почему-то uid=80, а у скрипта 10000.
Что делать?
 

twistfire

Новичок
путь права uid

/data/www/c.../files/ drwxrwxrwx=0777 10000
/data/www/c...files/FilesTempLink/ drwxrwxrwx=0777 10000
/data/www/c.../files/FilesTempLink/kb8x2p84vdd890ae drwxr-xr-x=0755 80
 

twistfire

Новичок
это для чего так должно быть выставлено?
для какого из каталогов?
 

dimagolov

Новичок
ну это по вкусу и потребностям... пойми что это обозначает, и выбирай. для твоей задачи по крайней мере для FilesTempLink
 
Сверху