чей GID при mkdir

HraKK

Мудак
Команда форума
чей GID при mkdir

Будет ли GID созданой папки совпадать с GID скрипта, при сафе_моде? Или опять таже ситуация что и с UID?
 

AnToXa

prodigy-одаренный ребенок
afaik это дело не зависит от safe_mode, оно зависит от того под каким пользователем запущен скрипт. т.е. от sapi под сквозь который работает пхп(apache module, cgi + suexec, fcgi).
т.е. под каким пользователем запущен скрипт - под тем юзером и будет создан каталог.
 

HraKK

Мудак
Команда форума
нет.
читай ман.
вот например комменты на php.net
Beware that when in safe mode, mkdir creates folders with apache's UID, though the files you create in them are of your script's UID (usually the same as your FTP uid).
-~{}~ 20.11.06 13:51:

Неужели никто не знает такой банальности?(

-~{}~ 20.11.06 14:35:

ооо появился Фанат
Начинаем молится :D
 

AnToXa

prodigy-одаренный ребенок
HraKK
гхм, ты проверял?
или это у тебя вопрос веры комментам на php.net?

процесс не может создавать файлы с uid/gid отличными от его собственных(если это не рутовый процесс конечно).

-~{}~ 20.11.06 14:44:

да, еще возможны нюансы с setuid битами на каталоги - но это вообще грязный хак и не всеми FS поддерживается.
 

HraKK

Мудак
Команда форума
Я проверял. Такой баг в действительности присутствует.А вот с GID проверить не могу. И похоже никто не знает.
 

AnToXa

prodigy-одаренный ребенок
какой _такой_ баг? как работает php? что именно за баг, подробно.
 

HraKK

Мудак
Команда форума
баг то что mkdir имеет UID не скрипта, а апача.
 

AnToXa

prodigy-одаренный ребенок
это не баг, это корректное поведение в большинстве случаев.
оно правда не зависит от safe_mode, ну никак.
опиши как у тебя запущен пхп, какой uid у апача, какой uid у скрипта, с каким uid создается каталог.
 

HraKK

Мудак
Команда форума
AnToXa
Извините конечно, но я знаю что это не баг, как таковой. Это просто упущение разработчиков.
Оно не зависит но при сейф моде эта фича становится критичекой.

Не могу понять какое это
опиши как у тебя запущен пхп, какой uid у апача, какой uid у скрипта, с каким uid создается каталог.
имеет отношение к
Будет ли GID созданой папки совпадать с GID скрипта, при сафе_моде? Или опять таже ситуация что и с UID?
 

AnToXa

prodigy-одаренный ребенок
"это" относится к моей попытке разъяснить что это не баг.
тем более это не есть упущение разрабочиков.

как решение можно предложить либо выключение safe_mode, либо извращения с sticky bit на каталоги, которое описано рядом к комментах.
 

HraKK

Мудак
Команда форума
Это запущено не у меня. А у хостинга тоэтому сказать не могу.

Обьясни поче созданная директория ДОЛЖНА иметь отличный UID от скрипта? Почему например файл имеет тот же UID а директория нет?
 

AnToXa

prodigy-одаренный ребенок
Это запущено не у меня. А у хостинга тоэтому сказать не могу.
хм?! а как же вы тогда программируете не зная, в каком варианте оно исполняется?

между директорией и файлом не должно быть разницы при создании.
и файл и каталог будут иметь uid создающего их процесса, если php работает как модуль апача, то uid процесса = uid apache (это не всегда так, если вы скажете как у вас работает пхп, то можно будет утверждать точнее).
 

HraKK

Мудак
Команда форума
Подожди ты хочешь сказать что
Script UID и Apache UID могут быть одинаковые?:D
 

AnToXa

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

HraKK

Мудак
Команда форума
Я могу создать файл в сафе_моде. И я могу изменить его потом. значит UID один и тот же на сколько мне хватаит моих скудоумных мозгов.
И опять таки я погу создать директорию, но изменить ее не могу в следствии различных UID. Чувствуешь логику?
 

AnToXa

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

опять же, что такое "изменить директорию"?
какие тебе пхп говорит ошибки/варнинги?

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

HraKK

Мудак
Команда форума
эх.. да..

по порядку собран как модуль пхп.
есть директория `test` с chmod 777;
Я создаю там файл `test.txt`.
Удаляю етот файл.
все ок.
Дальше создаю директорию в `test` `somedir`
удаляю ее. Permission denied.

-~{}~ 20.11.06 19:04:

Только я все равно не пойму Какого Фига я тут тебе все это разесняю если это не решит моей проблемы, а на вопрос
Будет ли GID созданой папки совпадать с GID скрипта, при сафе_моде? Или опять таже ситуация что и с UID?
Ты ответить не можешь?
 

AnToXa

prodigy-одаренный ребенок
удаляю ее. Permission denied.
т.е. safe_mode совершенно ни при чем.

Ты ответить не можешь?
если ты прочитаешь самый первый мой тебе пост, то прочитаешь там ответ на свой вопрос, это если ты не заметил.

я уже ответил, в данный момент я пытаюсь _объяснить_ тебе, что поведение вполне ожидаемое, ну и педагогические скиллы поднимаю, а что?

написал скриптег тестовый
PHP:
	echo "my_uid: ", getmyuid(), "\n";
	echo "my_gid: ", getmygid(), "\n";
	echo "my_owner: ", get_current_user(), "\n";

	touch('./1.txt');
	mkdir('./dummy_dir');
	touch('./dummy_dir/dummy.txt');

	unlink('./dummy_dir/dummy.txt');
	rmdir('./dummy_dir');
	unlink('./1.txt');
примеры вывода:
nobody@antoxa:/tmp> ls -la
drwxrwxrwx 2 antoxa users 48 2006-11-21 02:19 test

nobody@antoxa:/tmp/test> php ../1.php
my_uid: 1000
my_gid: 100
my_owner: antoxa

nobody@antoxa:/tmp/test> php -d safe_mode=on ../1.php
my_uid: 1000
my_gid: 100
my_owner: antoxa
PHP Warning: touch(): SAFE MODE Restriction in effect. The script whose uid is 1000 is not allowed to access /tmp/test/dummy_dir owned by uid 65534 in /tmp/1.php on line 9
PHP Warning: unlink(): SAFE MODE Restriction in effect. The script whose uid is 1000 is not allowed to access /tmp/test/dummy_dir owned by uid 65534 in /tmp/1.php on line 11

не повторяется твой сценарий.
 

HraKK

Мудак
Команда форума
Да действительно я промахнуся писал из головы. Ты не сможешь создать файл в директории /dummy_dir/ .

А теперь если я выключу safe_mode я тоже не смогу создать файл в директории /dummy_dir/ ?

Думаю смогу.

Дальше почему тут не проходит это? потому что идет сравнение UID.
UID скрипта - 1000
Файла ./1.txt тоже - 1000
а вот директории 65534 - апача.



UID скрипта
 

AnToXa

prodigy-одаренный ребенок
Ты не сможешь создать файл в директории /dummy_dir/ .
угу, потому что этот каталог принадлежит uid 65534.

да.
Файла ./1.txt тоже - 1000
неверно, uid созданного файла = uid из под которого запущен скрипт, т.е. 65534, я его могу удалить, потому что удаление файла требует только на запись доступа к _каталогу_ в котором он содержится, и не требует доступа к файлу.
попробуй взять любой файл, сменить ему права на 000, прочитать ты его не сможешь, а удалить - сможешь.
именно по той же причине ты можешь этот файл создать, потому что это требует доступа к каталогу, а в моем (и, как я понимаю, твоем) случае этот каталог принадлежит тому же юзеру, что и скрипт.
а вот директории 65534 - апача.
да.
 
Сверху