Назад | Перейти на главную страницу

Пользователи и группы веб-сервера

Я установил веб-сервер, на котором будут размещаться сайты для нескольких клиентов, у каждого клиента будет свой пользователь, а файлы для их веб-сайтов будут существовать внутри /var/www.

Мы развертываем код через службу под названием DeployHQ, которая подключается через SSH с использованием имени пользователя клиента, поэтому, когда файлы отправляются на сервер, они создаются с этим именем пользователя и группой клиентов.

У меня проблема в том, что пользователь веб-сервера www-data не может обновлять файлы, например это .htaccess файл:

 4 -rw-rw-r--  1 client_user client_user   945 Oct 30 12:07 .htaccess

Я мог бы просто изменить группу файлов на www-data, однако новые развертываемые файлы не будут создаваться таким образом, поэтому это не будет долгосрочным решением.

Учитывая, что мне нужен пользователь для каждого клиента, может ли кто-нибудь порекомендовать способ разрешить www-data делать все, что может делать пользователь-клиент?

Я только что прочитал немного о настройке Set-Group-ID, это то, что я должен рассмотреть?

Большое спасибо

Это может быть достигнуто путем установки бита SGID в каталогах для каждого пользователя. Например:

tom@tomh:~▶ mkdir testdir # Just an example dir
tom@tomh:~▶ sudo chgrp www-data testdir # Change the group
tom@tomh:~▶ touch testdir/before 
tom@tomh:~▶ ls -la testdir/before # At the moment files have the default group 'tom'
-rw-rw-r-- 1 tom tom 0 Nov  5 11:04 testdir/before
tom@tomh:~▶ sudo chmod g+s testdir/ # Set the SGID bit on the dir
tom@tomh:~▶ touch testdir/after
tom@tomh:~▶ ls -la testdir/after # Files now have the same group as the dir
-rw-rw-r-- 1 tom www-data 0 Nov  5 11:04 testdir/after

Не забудьте убедиться, что ваши umasks для пользователей также предоставляют правильные групповые разрешения для файлов!