| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Проблема с правами доступа на гостевой ОС |
| Автор: BuShaRt 11.9.2011, 23:43 |
| Есть две ОС. Хост - Ubuntu, на ней через VirtualBox поднят гость CentOS (на ней в свою очередь поднят Apache, php и прочие) Суть в том, что когда гостевая ОС создает какие-либо файлы, то им присваиваеться авторство пользователя, запустившего VirtualBox + автоматические права 755, что означает, что производить запись в этих файлах/каталогах может тольпо пользователь, открывший VirtualBox. В результате получаеться, что php скрипт, который только, что создал каталога (на пример) в слудующей итерации уже не имеет доступа к этому каталогу. Что делать? |
| Автор: Smorodin 12.9.2011, 16:38 |
| "Мсье знает толк в извращениях" - ничего личного, просто первое, что пришло в голову. Надо сделать так, чтобы веб-сервер, работающий на гостевой, работал от имени этого пользователя. |
| Автор: voral 12.9.2011, 17:58 |
| что-то я ни чего не понял. Файлы создаются на хосте из гостевой системы? Как организован доступ из гостевой системы к файловой системе хоста? Как вы вызываетет тот самый скрипт? Или у вас следующая ситуация на гостевой системе поднят вебсервер. Вы обращаетесь к сайту на нем с хостовой системы. Php скрипт создает таам некий каталог. В который вы не можете зайти записать ни чего если логинитесь гостем на гостевой системе? Так? Если так, то по идее у вас кталог должен создаваться не от имени пользователя запустившего виртуал бокс, а от имени апача. ЧТо бы получить доступ к нему надо того самого гостя добавить в группу апачевскую. Вообщм давайте по подробнее опишите ситуацию...... А то с гаданиями можно зайти далеко, но не туда. |
| Автор: BuShaRt 12.9.2011, 18:54 | ||||
как?
Репозиторий расположен на хосте и смонтирован в гостевую систему, стандартным инструментом 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 12.9.2011, 23:44 | ||
Это странно. Может быть вы не правильно монтируете общуюю папку на госевой системе? Какой командой делаете? |
| Автор: BuShaRt 12.9.2011, 23:59 | ||
| voral, Инкапсуляция веб-сервера в гостевую ОС очень удобное решение в случае если над проектом работает несколько человек, находяшиеся в отдаление друг от друга. Таким образом мы можем быть уверены, что веб-сервер собран у всех одинаково, а так же соотвествует веб-серверу на релизе. Ранее проблема не обнаруживалась т.к. вся команда работает из под Win, а я вот решил перейти под ubuntu.
mount =) Есть другие варианты? |
| Автор: voral 13.9.2011, 07:56 | ||
Т.е.сам вебсервер у вас крутится на гостевой, а все файлы сайта (включая скрипты) лежат на хосте? Вы собираете веб сервер с определенной конфигурацией? И обмениваетесь образом виртуальной машины? И вам нужно решить проблему силами хоствой машины? Есть варианты параметров этой команды. В прочем я такой (какой я понял) вариант работы не разу не пробовал. Но достаточно странно. Вообще обычно вроде при групповой работе есть смысл заботится именно о синхронизации проекта, т.е. ваших php скриптов и прочих файлах сайта. Но вот так серьезно подходить к синхронизации самого сервера..... Если же я не правильно вас понял, то посмотрите в сторону Git. Он есть и под винду. Почитайте книжку Git Magick (Магия Git) есть русский перевод http://www-cs-students.stanford.edu/~blynn/gitmagic/intl/ru/ |
| Автор: BuShaRt 13.9.2011, 08:26 | ||
| voral, GIT во всей этой системе тоже завязан, но с ним проблем нет. Добавлено через 36 секунд
Да =) |
| Автор: voral 13.9.2011, 14:24 | ||||||||
| Вот такой вариант решения: На гостевой системе 1. СОздаем точку монтирования
2. Узнаем id группы и пользователя apache (на дебиан www-data)
3. Пишем в fstab Подразумеваем, что общий каталог с файлами сайта имеет имя share
(Параметры, можно подобрать по точнее, в зависимости от конкретной ситуации) 4. Перегружаем или
5. В конфиге апача указываем, что сайт лежит в /media/share Вуаля у меня все работает - попробовал. В итоге в файловой системе гостя файлы принадлежат пользователю и группе апача; на хосте пользователю запустившему виртуал бокс. Добавлено через 12 минут и 50 секунд Да забыл уточнить в моем случае id группы и id пльзователя апача одинаковы и равны 33 |
| Автор: voral 13.9.2011, 14:42 | ||
Докрутил
Теперь на гостевой системе можно любого пользователя (обрати внимание - пользователя гостевой системы, не хоста) включить в группу www-data и он сможет так же работать с этими фалами и катлогами |