Я настроил новый ящик ec2 ubuntu и установил apache и php5. По умолчанию вы входите в ящик с ubuntu
пользователем, у которого есть sudo
привилегии.
Я считаю, что Apache работает как, root
а PHP5 работает как www-data
.
Я думаю, что мне нужно, чтобы все файлы /var/www
были перенаправлены в chown www-data:www-data
, папки были установлены как 755, а файлы как 644 - если только с этим нет проблем.
Все работает нормально, но проблема в том, что когда я rsync
загружаю файлы со своего ноутбука на сервер, он меняет владельца на них (и добавляет новые файлы), какubuntu:admin
Я просмотрел rsync
руководство и поискал в Google и увидел такой синтаксис:
rsync -avzcO (source) (destination) --owner=www-data --group=www-data
Однако, похоже, что --owner
и --group
не принимают аргумент, а вместо этого предназначены для принудительного назначения удаленным файлам того же владельца, что и в локальной файловой системе, если rsync выполняется от имени суперпользователя.
Итак, я не нашел решения с помощью rsync, чтобы задать удаленного пользователя и группу файлов во время rsync.
Что я делаю не так?
Мысли:
- Может быть, мои файлы в /var/www должны принадлежать только
ubuntu:admin
? - Возможно, я неправильно использую синтаксис rsync.
- Думаю, я мог бы выполнить rsync как
www-data
пользователь, но это не кажется хорошей идеей. - Я мог бы использовать suPHP, как я это делаю на общем хостинге, но это кажется довольно хлопотным.
решение1
Вы не хотите, чтобы они принадлежали www-data. Apache изначально работает как root, а затем снижает привилегии до www-data. Вы не хотите, чтобы ваш веб-контент был доступен для записи пользователю, владеющему процессами apache. Это создает уязвимость безопасности.
В случае взлома Apache, в идеале пользователь www-data не будет иметь доступа ни к одной из систем. Это самая безопасная конфигурация. Если веб-контент принадлежит www-data, если Apache взломан, то злоумышленник может перезаписать любой ваш веб-контент.
Ваш веб-контент должен принадлежать обычному пользователю (исключая nobody
, www-data
и root
). Только то, чтонуждатьсячтобы быть доступным для записи Apache, он должен принадлежать www-data.