soprun
@soprun
Software Architecture

Ubuntu как создать пользователя для веб-сервера?

Проблема с записью файлов на веб серверах apache и nginx.

Веб-сервера работают от пользователя www-data.
Добавляю своего пользователя Developer, создаю скрипт.
<?php

ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL);

file_put_contents(__DIR__ . DIRECTORY_SEPARATOR . 'test.txt', 'test');


Все работает замечательно, файл test.txt будет создан от имени www-data ww-data.

Но если я ранее создал файл от имени Developer то файл не будет перезаписан и выдаст ошибку что нет прав!

Подскажете как правильно создать нового пользователя Developer, что не было проблем что веб-сервер не может переписать файлы созданные моим пользователям.
Так же авторизацию по SSH должен проходить через authorized_keys.

P.S ранее был костыль, запускал веб сервер от своего пользователя, но мне не нравится данный подход.
  • Вопрос задан
  • 5230 просмотров
Пригласить эксперта
Ответы на вопрос 2
miraage
@miraage
Старый прогер
Я в таком случае делаю так: юзер developer, группа www-data.
Файлам 664, папкам 775 права на чтение/запись.
Ответ написан
Комментировать
fzfx
@fzfx
18,5 дм
как самый простой временный вариант - сменить группу пользователя Developer на www-data:
- узнайте gid группы www-data, выполнив cat /etc/group | grep www-data;
- смените gid пользователя Developer в файле /etc/passwd - Developer перестанет быть членом той группы, gid которой вы убрали (это может быть для вас неприемлимо);
- добавьте в файл .profile пользователя Developer строку umask 0002 - любой вновь созданный пользователем файл будет получать права rwxrwxr-- вместо умолчательных rwxr--r-- (также может быть неприемлимо);
- перейдите в каталог файлов вебсервера (т. е. в тот каталог, где у вас проблемы с созданием файла test.txt) и выполните chmod g+w . - это разрешит создавать в каталоге файлы членам группы www-data;
- перелогиньтесь.

для того, чтобы решить проблему "более правильно", следует использовать поддержку acl в файловой системе; ключевые моменты:
- отменить все измения, что написаны выше;
- добавить опцию монтирования xattr в fstab для раздела, на котором присутствует каталог файлов вебсервера (ext3, ext4, btrfs, reiserfs их поддерживают) и переподмонтировать раздел (например, перезагрузиться);
- использовать setfacl для настройки аттрибутов по умолчанию для вновь создаваемых файлов в каталоге файлов вебсервера.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы