Unix разрешений файловой системы существуют, чтобы обеспечить безопасный и безопасный опыт вычислений. Лучше всего работать с разрешениями для моделирования рабочего потока и только иногда повышать привилегии, потому что повышенные привилегии - это когда проблемы могут возникать слишком легко. После principle of least privilege предотвратит серьезные нарушения безопасности.
У вас есть каталог, в котором хранится ваш статический веб-контент, исполняемый веб-контент (и, возможно, журналы в Интернете?) В /var/www/
. Он не должен принадлежать пользователю Apache и не должен принадлежать вашей учетной записи пользователя. root
(или что-то более конкретное, например www-content
).
Вы не хотите, чтобы работающий веб-сервер имел возможность изменять свой собственный контент - многие черви PHP распространялись таким образом. Если ваш веб-сервер может записывать только в файлы журнала, практически невозможно использовать какие-либо привилегии. Если он также может писать в канал базы данных, он сможет делать все, что позволят ему права на базы данных - читать или записывать данные по своему усмотрению или, возможно, просто читать определенные данные по определенным причинам. Если он может писать в каталог для хранения изображений для последующего обслуживания, он может злоупотреблять хостингом, который вам не нужен, но он по крайней мере не может влиять на более крупный сайт. Если он может писать любой контент, злоумышленник может использовать его для постоянного изменения собственного контента и потенциально атаковать ваших пользователей.
Возможно, вы также не хотите, чтобы каталог /var/www
или любой из его дочерних элементов принадлежал вашей учетной записи пользователя - либо вы не хотите, чтобы недостаток Firefox, Evolution, Pidgin или Spotify имел доступ на запись к ваш контент веб-сервера.
Таким образом, лучший подход заключается в том, чтобы делать все работы по разработке в вашем домашнем каталоге где-то, на принадлежащих вам файлах и обслуживаться другим веб-сервером, который работает под вашей собственной учетной записью пользователя в непривилегированном порту, который должен принимать только localhost
соединений , После того, как вы разработали программное обеспечение в нужном вам состоянии, вы можете распространять программное обеспечение на веб-сервер .
Распределение часто делаются с помощью инструмента, как git
- вы git push
вашей работы разработки в хранилище, а затем, когда вы хотите, чтобы развернуть новую версию, необходимо войти в учетную запись, которой принадлежит каталогу /var/www
и использовать git pull
для загрузите новую версию. Это немного сложно, но наличие реальной системы управления версиями стоит того, чтобы приложить дополнительные усилия.
Если вы хотите что-то более простое, вы можете просто использовать sudo(1)
, чтобы поднять до www-content
привилегии и скопировать содержимое; это может выглядеть примерно так:
cd ~/projects/website
sudo -u www-content tar cf - . | (cd /var/www/ && tar xvf -)
Таким образом, живого производства файлы принадлежат www-content
и не могут быть записаны с помощью веб-сервера. У вашей учетной записи пользователя нет разрешения на их изменение, кроме случаев, когда вы выполняете команду sudo
явно. (Настройка sudo(8)
правильно может быть какой-то работой, если вы являетесь разработчиком одного человека, возможно, выполните следующие шаги: root
будет работать нормально.)
Если у вас есть несколько пользователей, которые хотят работать с веб-контентом live, и вы доверяете им и программному обеспечению, которое они запускают полностью, тогда вы можете использовать групповое владение, чтобы пропустить некоторые из этапов. (Это может быть хорошо для использования любителями, но я бы не хотел использовать это для ведения бизнеса.) Добавьте учетную запись пользователя каждого пользователя в определенную группу, скажем www-editors
, и сделайте /var/www
, а дочерние группы принадлежат www-editors
, используйте Поведение групп BSD (man 8 mount
, ищите bsdgroups
, для получения полной информации, для этого необходимо изменить параметры монтирования в /etc/fstab
и установить бит setgid
в каталогах). Это дает вам и всем пользователям группы возможность редактировать файлы без каких-либо промежуточных шагов. Это удобно и опасно. Использовать его мудро.
Почему он не «легко» доступен для записи? –
Мне нужно будет «судо» за каждое изменение, которое мне нужно сделать. Это огромная трата времени. –
Это не вопрос программирования. Принадлежит к серверу. – jordanm