Shlop
@Shlop
Full Stack Developer (PHP/Laravel/JavaScript)

Как правильно организовать сервер так, что бы для каждого сайт был свой пользователь?

Здравствуйте, подскажите пожалуйста, есть сервер (VDS) на nginx, есть один сайт, в будущем планируется ещё несколько сайтов на этом сервере (VDS), хотелось бы сделать так что бы под каждый сайт был свой пользователь, и с помощью этого пользователя уже выполнять различные действия с сайтом, к примеру через ssh делать git pull, и т.п. И в целях безопасности тоже, что бы к примеру пользователь одного сайта не могу получать доступ к другому сайту.

Пытаюсь на данный момент реализовать такую задачу, что делаю:
  1. Создаю нового пользователя для сайта: useradd user1 ну и соответственно задаю пароль для этого пользователя и создался базовый каталог в /home/user1
  2. Создаю новую домашнею папку для пользователя и папку для сайта/var/www/user1/data/www/example.ru и начиная с папки user1 на папках и файлах установлен владелец и группа user1
  3. В/etc/passwd перезаписываю базовый каталог для пользователя user1, получается такая вот запись:
    user1:x:1000:1001:Sergey,,,:/var/www/user1/data:/bin/bash
  4. Далее моя логика такая, user1 - этот пользователь используется для подключения по ssh, но мне ещё нужен ftp, создаю нового пользователя ftpuser1, домашняя папка у него /var/www/user1/data, и первичную группу для этого пользователя устанавливаю user1. И отключаю доступ к ssh для ftpuser1, просто возможно кому-то ещё нужно будет предоставить ftp доступ, и что бы этот ftp пользователь не могу подключится по ssh.
  5. ssh работает, ftp работает, теперь закидываю файлы сайта в папку example.ru, проекта на laravel, все настройки с сайтом сделал.

В итоге две проблемы у меня, и все они связаны с правами вроде как:
  1. Если закидываю файлы на сервер под ftpuser1, то user1 не может уже их удалить, а хотелось бы что бы user1 и ftpuser1, обладали одинаковыми правами и могли удалять, изменять файлы друг друга, вот к примеру папка img, я её закинул на сервер под ftpuser1 и на ней права 755 [drwxr-xr-x], удалить её под user1 я сейчас не могу, если изменяю права на 775 [drwxrwxr-x], то удалить могу, если закидываю эту папку опять через ftpuser1 права будут опять 755 [drwxr-xr-x], наверно можно же сделать как то, что бы не нужно было перед каждой операцией менять права ?

2. Проблема с папкой storage
Первая ошибка которую я получаю когда перехожу на сайт
The stream or file "/var/www/user1/data/www/example.ru/storage/logs/laravel.log" could not be opened in append mode: failed to open stream: Permission denied

Права на laravel.log - 664 [-rw-rw-r--]
Права на папке logs - 775 [drwxrwxr-x]
Если изменяю права на файле laravel.log - 666 [-rw-rw-rw-], то ошибка уходит

Далее опять ошибка:
file_put_contents(/var/www/user1/data/www/example.ru/storage/framework/sessions/ckX60GiELzZh2hvPSOviGoPhHV7eu2w6jxTGL5Sa): failed to open stream: Permission denied

Права на папке sessions- 775 [drwxrwxr-x]
Если изменяю права на sessions - 777 [drwxrwxrwx], ошибка уходит

И последняя ошибки, есть такая папка /storage/framework/views я когда кэширую view файлы с помощью команды php artisan view:cache, в этой папке создаются файлы с правами 664 [-rw-rw-r--], иногда laravel дописывает в эти файлы изменения, и соответственно с такими правами он не может ничего дописать, вылетает ошибка:
file_put_contents(/var/www/user1/data/www/example.ru/storage/framework/views/3a754a39b6fbbfc12ae706bdbb58d5d83ed2c712.php): failed to open stream: Permission denied

Если изменяю права у 3a754a39b6fbbfc12ae706bdbb58d5d83ed2c712.php на 666 [-rw-rw-rw-], то ошибка уходит.
Но потом всё равно если я выполню команду php artisan view:cache появятся новые файлы с правами 664 [-rw-rw-r--] и ошибка будет повторяться.

Подскажите пожалуйста может быть я что-то делаю не так, или что-то упускаю, нашел вчера статью такую вот я полагаю смогу сделать так что скрипты на сайте будут запускаться от имени user1 к примеру, может быть это и решит проблему ? Но а если бы у меня был не Nginx на сервере а Apache ?

Сейчас я так понимаю что скрипты на сайте запускаются от имени www-data
5fa3bd7eaae60541063831.png

Заранее благодарю за ответ.
  • Вопрос задан
  • 130 просмотров
Пригласить эксперта
Ответы на вопрос 2
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
https://www.dmosk.ru/instruktions.php?object=hosting Держите инструкцию. Впрочем вам возможно подойдёт kvm или ovz
Ответ написан
karabanov
@karabanov Куратор тега Ubuntu
Системный администратор
proftpd умеет мапить владельцев и права в соответствии с имеющимися в системе пользователями и правами.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы