Итак, у меня есть каталог в /var/www (называемый cake), и мне нужно разрешить www-data писать на него, но я также хочу написать ему (без использования sudo). Я боюсь изменить разрешения на 777, если какой-либо другой пользователь на моей машине (или хакере) попытается изменить файлы в этом каталоге. Как разрешить доступ только для себя и для Apache www-data?
Разрешения на www-данные?
Ответ 1
sudo chown -R yourname:www-data cake
затем
sudo chmod -R g+s cake
Первая команда изменяет владельца и группу Вторая команда добавляет атрибут s, который будет хранить новые файлы и каталоги в томе, имеющие одинаковые групповые разрешения
Ответ 2
Как указано в статье 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
Разрешения нужно устанавливать только один раз, поскольку новые файлы будут автоматически присваивается правильное владение.