![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| BuShaRt |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
Есть две ОС. Хост - Ubuntu, на ней через VirtualBox поднят гость CentOS (на ней в свою очередь поднят Apache, php и прочие)
Суть в том, что когда гостевая ОС создает какие-либо файлы, то им присваиваеться авторство пользователя, запустившего VirtualBox + автоматические права 755, что означает, что производить запись в этих файлах/каталогах может тольпо пользователь, открывший VirtualBox. В результате получаеться, что php скрипт, который только, что создал каталога (на пример) в слудующей итерации уже не имеет доступа к этому каталогу. Что делать? |
|||
|
||||
| Smorodin |
|
|||
![]() Добрейший ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 10.4.2006 Где: Пермь Репутация: нет Всего: 1 |
"Мсье знает толк в извращениях" - ничего личного, просто первое, что пришло в голову.
Надо сделать так, чтобы веб-сервер, работающий на гостевой, работал от имени этого пользователя. Это сообщение отредактировал(а) Smorodin - 12.9.2011, 16:40 -------------------- Сделать можно все, только вопрос - когда? |
|||
|
||||
| voral |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 16.3.2008 Где: Иваново Репутация: нет Всего: нет |
что-то я ни чего не понял. Файлы создаются на хосте из гостевой системы? Как организован доступ из гостевой системы к файловой системе хоста?
Как вы вызываетет тот самый скрипт? Или у вас следующая ситуация на гостевой системе поднят вебсервер. Вы обращаетесь к сайту на нем с хостовой системы. Php скрипт создает таам некий каталог. В который вы не можете зайти записать ни чего если логинитесь гостем на гостевой системе? Так? Если так, то по идее у вас кталог должен создаваться не от имени пользователя запустившего виртуал бокс, а от имени апача. ЧТо бы получить доступ к нему надо того самого гостя добавить в группу апачевскую. Вообщм давайте по подробнее опишите ситуацию...... А то с гаданиями можно зайти далеко, но не туда. |
|||
|
||||
| BuShaRt |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
как?
Репозиторий расположен на хосте и смонтирован в гостевую систему, стандартным инструментом VB "Общие папки". Грубо говоря репозиторий расшарен для гостевой ОС. Я ввожу в строке браузера site -> Ubuntu согласно /etc/hosts перенаправляет запросна lo -> Тут VB (через NAT) слушает 80 порт, на который передан запрос и пробрасывает его в гостивую ОС -> в гостевой ОС запрос обрабатываеть. Я так понимаю обратно данные идут по этой же цепочке, иначе я не как не могу объяснить, что все файлы создаваемые скритпами через php mkdir имеют в качестве владельца пользователя, от лица которого был запущен VB (если это я, то пишет меня, если из под root'a то пишет root'a). Проблема в том, что даже если гостевая ОС будет вся работать в режиме суперпользователя, то guest::root != host::root. А в процессе работы получаеться, что файл создаеться от лица host::root с правами 755, поэтому для guest::root доступ закрыт. Я уже нашел временное решение. На хосте я залаю маску доступа через umask, так чтоб все вновь создаваемые файлы имели доступ 777, но скорей костыль, нежели решение проблемы. З.ы. Еще раз попробую изложить корень проблемы. Я так понял, что VB берет отвественность за все действия на себя т.е. если мы подняли гостевую Ос, то хосту все равно какие процесс работают внутри VB. В результате все действия производяться от VB, тем пользователем, который ее запустил. Тоже самое, что если бы я открыл gedit от лица пользователя и создал бы файл. |
||||
|
|||||
| voral |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 16.3.2008 Где: Иваново Репутация: нет Всего: нет |
Что в вашем понятии репозиторий? Почем не поднять вебсервер на хосте? Все правильно. Так и должно быть. Для хоста VB такаяже программа как и, например, текстовый редактор. Совершенно верно. Это логично. Зачем вы все это мудрите? |
|||
|
||||
| voral |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 16.3.2008 Где: Иваново Репутация: нет Всего: нет |
||||
|
||||
| BuShaRt |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
voral,
Инкапсуляция веб-сервера в гостевую ОС очень удобное решение в случае если над проектом работает несколько человек, находяшиеся в отдаление друг от друга. Таким образом мы можем быть уверены, что веб-сервер собран у всех одинаково, а так же соотвествует веб-серверу на релизе. Ранее проблема не обнаруживалась т.к. вся команда работает из под Win, а я вот решил перейти под ubuntu.
mount =) Есть другие варианты? |
|||
|
||||
| voral |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 16.3.2008 Где: Иваново Репутация: нет Всего: нет |
Т.е.сам вебсервер у вас крутится на гостевой, а все файлы сайта (включая скрипты) лежат на хосте? Вы собираете веб сервер с определенной конфигурацией? И обмениваетесь образом виртуальной машины? И вам нужно решить проблему силами хоствой машины? Есть варианты параметров этой команды. В прочем я такой (какой я понял) вариант работы не разу не пробовал. Но достаточно странно. Вообще обычно вроде при групповой работе есть смысл заботится именно о синхронизации проекта, т.е. ваших php скриптов и прочих файлах сайта. Но вот так серьезно подходить к синхронизации самого сервера..... Если же я не правильно вас понял, то посмотрите в сторону Git. Он есть и под винду. Почитайте книжку Git Magick (Магия Git) есть русский перевод http://www-cs-students.stanford.edu/~blynn/gitmagic/intl/ru/ |
|||
|
||||
| BuShaRt |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
voral,
GIT во всей этой системе тоже завязан, но с ним проблем нет. Добавлено через 36 секунд Да =) |
|||
|
||||
| voral |
|
||||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 16.3.2008 Где: Иваново Репутация: нет Всего: нет |
Вот такой вариант решения:
На гостевой системе 1. СОздаем точку монтирования
2. Узнаем id группы и пользователя apache (на дебиан www-data)
3. Пишем в fstab Подразумеваем, что общий каталог с файлами сайта имеет имя share
(Параметры, можно подобрать по точнее, в зависимости от конкретной ситуации) 4. Перегружаем или
5. В конфиге апача указываем, что сайт лежит в /media/share Вуаля у меня все работает - попробовал. В итоге в файловой системе гостя файлы принадлежат пользователю и группе апача; на хосте пользователю запустившему виртуал бокс. Добавлено через 12 минут и 50 секунд Да забыл уточнить в моем случае id группы и id пльзователя апача одинаковы и равны 33 |
||||||||
|
|||||||||
| voral |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 16.3.2008 Где: Иваново Репутация: нет Всего: нет |
Докрутил
Теперь на гостевой системе можно любого пользователя (обрати внимание - пользователя гостевой системы, не хоста) включить в группу www-data и он сможет так же работать с этими фалами и катлогами |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |