Ответ 1
Разрешения на веб-сайтах немного странные: с одной стороны, контент должен быть доступен для чтения веб-сервером и FastCGI
или Passenger
, или что-то еще выполняет (в данном случае, Ruby) код. С другой стороны, если пользователь веб-сервера владеет файлами, то взломанный веб-сервер или (более вероятно:) ваш код может изменять исполняемые файлы и статические файлы, которые являются вашим сайтом. Это происходит слишком часто.
Если содержимое веб-сайта принадлежит другому пользователю, не доступное для записи с помощью программного обеспечения веб-сервера, веб-сайт не может быть перезаписан злоумышленниками. (Конечно, у вас есть несколько открытых сокетов для подключения к базе данных, все данные, поддерживаемые базой данных, могут быть повреждены злоумышленниками. Кроме того, любой каталог, в котором вы разрешаете загрузку, может быть поврежден злоумышленниками. Но цель заключается в уменьшает привилегии программного обеспечения до разумного.)
Итак, все, что сказано, на ваш конкретный вопрос; ваше веб-серверное программное обеспечение работает как www-data
, и имеет смысл, если ваши файлы журналов и каталог загрузки будут принадлежать www-data
:
mkdir -p /srv/www/mysite.com/testapp/log/ # might not exist yet
chown -R pcasa:pcasa /srv/www/mysite.com/ # or some other user
chmod 755 /srv/www/mysite.com
chmod 755 /srv/www/mysite.com/testapp/
# populate the app directory with your files, if you haven't done so already
chown -R www-data:www-data /srv/www/mysite.com/testapp/log
chmod 755 /srv/www/mysite.com/testapp/log # see notes
chmod 644 /srv/www/mysite.com/testapp/log/* # see notes
Я сделал предположение, что все пользователи в вашей системе могут читать журнал. Это может быть неверно. Используйте 700
вместо 755
и 600
вместо 644
, если вы не хотите, чтобы все пользователи системы читали файлы журнала.
Далее, для вашего каталога uploads
:
mkdir -p /srv/www/mysite.com/testapp/public/uploads/tmp # might not exist yet
chown -R www-data:www-data /srv/www/mysite.com/testapp/public/uploads
chmod 755 /srv/www/mysite.com/testapp/public/uploads
chmod 755 /srv/www/mysite.com/testapp/public/uploads/tmp
Опять же, я сделал предположение, что все пользователи в вашей системе смогут видеть все загруженное содержимое. Используйте 700
вместо 755
, если вы хотите, чтобы программное обеспечение веб-сервера могло читать файлы.
Это простые инструкции, которые должны работать; вы можете усложниться, если хотите сохранить программное обеспечение и контент на веб-сайте только между пользователем, владеющим веб-сайтом и пользователем, который запускает веб-сайт, запустив веб-сервер с дополнительной группой (см. newgrp(1)
и group(5)
manpages для получения подробной информации) и предоставления файлам одного и того же владельца группы и использования битов разрешения группы (среднее восьмеричное число: 750
vs 700
). Это достаточно сложно, что, если у вас нет веской причины, вероятно, не стоит идти по этому пути. (Определенно стоит сделать один раз на машине разработки где-то, так что вы достаточно знакомы с ней, чтобы использовать ее в будущем.:)