Я установил веб-сервер, на котором будут размещаться сайты для нескольких клиентов, у каждого клиента будет свой пользователь, а файлы для их веб-сайтов будут существовать внутри /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 для пользователей также предоставляют правильные групповые разрешения для файлов!