Я борюсь с этим. Предположим следующее:
У пользователя с именем «deploy» в домашнем каталоге есть каталог с именем example.com. В нем есть несколько файлов, и их права доступа установлены так:
drwxrwxrwx 6 deploy deploy 4096 2010-02-10 21:06 example.com
Также есть свежая установка apache 2, работающая как www-data: www-data.
Мне нужно, чтобы файлы оставались собственностью deploy: deploy, но мне нужен apache для записи в эти файлы.
Не следует ли добавлять www-данные в группу развертывания или наоборот разрешать apache писать в каталог example.com?
В моем файле / etc / groups показано (для краткости усечено):
www-data:x:33:deploy deploy:x:1000:www-data
Однако пользователь www-data не может писать в каталог. Это сводит меня с ума! Помогите?
Я думаю, что пользователю www-data нужны как минимум разрешения на чтение и выполнение в родительском каталоге, если не весь путь к каталогу. Если домашний каталог пользователя ограничен, скажем, 700 (drwx------
), то это также заблокирует групповую запись в дочернем каталоге. Конечно, изменение домашнего каталога может иметь другие последствия (например, для ssh), поэтому вам может быть лучше поместить каталог пользователя example.com в Apache. htdocs
область - что потенциально решает проблему, хотя у вас уже есть групповая настройка.
Чтобы проверить свою настройку, вы можете использовать
$ sudo -- su -c "ls -l /home/deploy/example.com" www-data
или даже
$ sudo -- su -c "touch /home/deploy/example.com/dummy" www-data
чтобы узнать, можете ли вы записать в этот каталог как www-data.
Рекурсивное назначение www-data как владельца материала, а не только верхней папки. Это должно делать