Здравствуйте, подскажите пожалуйста, есть сервер (VDS) на nginx, есть один сайт, в будущем планируется ещё несколько сайтов на этом сервере (VDS), хотелось бы сделать так что бы под каждый сайт был свой пользователь, и с помощью этого пользователя уже выполнять различные действия с сайтом, к примеру через ssh делать git pull, и т.п. И в целях безопасности тоже, что бы к примеру пользователь одного сайта не могу получать доступ к другому сайту.
Пытаюсь на данный момент реализовать такую задачу, что делаю:
- Создаю нового пользователя для сайта:
useradd user1
ну и соответственно задаю пароль для этого пользователя и создался базовый каталог в /home/user1
- Создаю новую домашнею папку для пользователя и папку для сайта
/var/www/user1/data/www/example.ru
и начиная с папки user1 на папках и файлах установлен владелец и группа user1
- В
/etc/passwd
перезаписываю базовый каталог для пользователя user1, получается такая вот запись:
user1:x:1000:1001:Sergey,,,:/var/www/user1/data:/bin/bash
- Далее моя логика такая, user1 - этот пользователь используется для подключения по ssh, но мне ещё нужен ftp, создаю нового пользователя ftpuser1, домашняя папка у него
/var/www/user1/data
, и первичную группу для этого пользователя устанавливаю user1. И отключаю доступ к ssh для ftpuser1, просто возможно кому-то ещё нужно будет предоставить ftp доступ, и что бы этот ftp пользователь не могу подключится по ssh.
- ssh работает, ftp работает, теперь закидываю файлы сайта в папку
example.ru
, проекта на laravel, все настройки с сайтом сделал.
В итоге две проблемы у меня, и все они связаны с правами вроде как:
- Если закидываю файлы на сервер под 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
Заранее благодарю за ответ.