www-данные разрешения?

79

Итак, у меня есть каталог в /var/www (называемый cake), и мне нужно разрешить www-data писать на него, но я также хочу написать ему (без использования sudo). Я боюсь изменить разрешения на 777, если какой-либо другой пользователь на моей машине (или хакере) попытается изменить файлы в этом каталоге. Как разрешить доступ только для себя и для Apache www-data?

Теги:
permissions
sudo

2 ответа

129
Лучший ответ
sudo chown -R yourname:www-data cake

затем

sudo chmod -R g+s cake

Первая команда изменяет владельца и группу Вторая команда добавляет атрибут s, который будет хранить новые файлы и каталоги в томе, имеющие одинаковые групповые разрешения

  • 3
    Почему chmod g + s рекурсивен?
  • 0
    не знал о г + с. очень очень удобно!
Показать ещё 2 комментария
35

Как указано в статье Slicehost:

Настройка пользователя

Итак, давайте начнем с добавления основного пользователя в группу пользователей Apache:

sudo usermod -a -G www-data demo

Это добавляет пользовательскую демоверсию в группу "www-data" . Убедитесь, что вы используете обе опции -a и -G с командой usermod, показанной выше.

Вам нужно будет выйти и снова войти в систему, чтобы включить группу изменение.

Теперь проверьте группы:

groups
...
# demo www-data

Итак, теперь я являюсь членом двух групп: My own (demo) и группы Apache (WWW-данные).

Настройка папки

Теперь нам нужно убедиться, что папка public_html принадлежит основному пользователю (demo) и является частью группы Apache (www-data).

Пусть это будет установлено:

sudo chgrp -R www-data /home/demo/public_html

Как мы говорим о разрешениях, я добавлю краткую заметку о команда sudo: хорошая привычка использовать абсолютные пути (/home/demo/public_html), как показано выше, а не относительные пути (~/Public_html). Он гарантирует, что sudo используется в правильном местоположение и др.

Если у вас есть папка public_html с символическими ссылками, тогда осторожно с этой командой, поскольку она будет следовать символическим ссылкам. В тех случаях рабочей папки public_html, вручную меняйте каждую папку.

Setgid

Хорошо до сих пор, но помните, что команда, которую мы только что дали, затрагивает только существующие папки. Что относительно нового?

Мы можем установить право собственности, чтобы все новое было также в "www-data" , группа.

Первая команда изменит права доступа для public_html для включения бита setgid:

sudo chmod 2750 /home/demo/public_html

Это гарантирует, что новым файлам будет присвоена группа "www-data" . Если у вас есть подкаталоги, вы захотите запустить эту команду для каждого (этот тип разрешения не работает с '-R'). К счастью, новые подкаталоги будут созданы с помощью бита setgid установить автоматически.

Если нам нужно разрешить доступ на запись к Apache, в каталог uploads например, затем установите разрешения для этого каталога следующим образом:

sudo chmod 2770 /home/demo/public_html/domain1.com/public/uploads

Разрешения нужно устанавливать только один раз, поскольку новые файлы будут автоматически присваивается правильное владение.

  • 0
    Это решение работает для меня. До этого я всегда запускаю сервер из терминала, используя пользователя root. С помощью этого решения я могу загрузить файл в каталог с разрешением 770. Это потрясающе, потому что до этого я мог загружать файл только с разрешением 777.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню