У меня есть сервер ubuntu 11.10 с apache 2.2.20, php 5.3.6 и установкой Joomla cms. Я использовал дополнительный жесткий диск в качестве хранилища своего веб-сервера и смонтировал его в / data / www / (надеюсь, моя проблема не в этом!).
Я установил разрешение для всех файлов и папок в моем корневом веб-каталоге на 755, а группы пользователей для них установлены на [пользователь ubuntu по умолчанию (в моем случае радио)]: www-data.
В прошлые дни у меня были серьезные проблемы с тем, что joomla не показывала новые загруженные изображения и другие файлы, а также я не мог устанавливать какие-либо расширения. После нескольких часов поиска я обнаружил, что загруженные файлы не имеют соответствующих разрешений (это -rw -------) и приложение Joomla не может читать, копировать или перемещать их после загрузки.
Мне интересно, как я могу установить разрешение по умолчанию, чтобы все загружаемые мной файлы использовали его?
PS: Я тестировал umask, но ничего не помогло. Думаю, это не имеет отношения к моей проблеме.
Вы упомянули, что пробовали umask, и это не сработало, но ваша проблема звучит именно как umask. Может, ты сможешь вернуться к этому?
Вы, возможно, столкнулись с двумя ошибками, из-за которых вы могли подумать, что проблема не в umask:
www-data
на Ubuntu.Обратите внимание, что наличие разрешения на чтение группы / мира для файлов, принадлежащих www-data, является плохим - любое другое веб-приложение (в основном все на сервере) сможет читать такие вещи, как файлы конфигурации с паролями базы данных и т. Д. Лучшее решение - mod_suexec но затем вам нужно настроить PHP в режиме CGI и Apache MPM worker, это немного сложнее.
Понятия не имею о Joomla или ограничениях, с которыми вы можете иметь дело на виртуальной машине, но как насчет чего-то вроде:
sudo chown -R www-data:www-data /data/www
sudo chmod -R g+rws /data/www
Это рекурсивно устанавливает user: group на www-data: www-data с помощью chown, а часть g + s оператора chown гарантирует, что файлы, записанные любым разрешенным пользователем, сохранят группу владельца (GUID). R и w - обычные разрешения на чтение и запись.
Это то, что я использую в Ubuntu / Apache, но я считаю, что то же самое можно сделать и с пользователем (SUID). Может быть, кто-то еще может вмешаться, если у меня неправильный синтаксис, но я считаю, что что-то вроде:
sudo chown -R www-data:www-data /data/www
sudo chmod -R ug+rws /data/www
установит чтение / запись только для пользователя и группы и заставит файлы иметь www-data: www-data user: group.
Однако ознакомьтесь с SUID и GUID, так как, делая это, вы предоставляете другим пользователям разрешения www-data. Еще одно предостережение: если ваш диск смонтирован с установленным флагом nosuid, ничего из этого не сработает.
Вы пробовали ACL (списки контроля доступа)? Они позволяют создавать файлы с определенным разрешением файла в определенном каталоге. Я считаю, что это менее глобально, чем что-то вроде umask, которое, как мне кажется, установлено на глобальном уровне (кто-нибудь, пожалуйста, поправьте меня, если я ошибаюсь в разделе комментариев ниже). Вот ссылка на ответ, показывающий, как установить список управления доступом в каталоге. https://stackoverflow.com/a/6550059/893659.