В нашей среде разработки веб-сайтов у нас есть центральный сервер CentOS, на котором через Apache работает несколько виртуальных хостов. Файлы vhost передаются через SMB. Несколько разработчиков в офисе подключаются к этому общему ресурсу SMB (от клиентов OSX), чтобы создавать и редактировать файлы и папки для разработки веб-сайтов.
Этот общий ресурс SMB настроен таким образом, чтобы заставить владельца и группу всех отредактированных или созданных файлов (через SMB) быть apache
. Следовательно, все файлы во всех каталогах vhost принадлежат apache:apache
чтобы гарантировать, что у Apache есть соответствующие разрешения для доступа к ним.
Однако иногда для выполнения определенных действий требуется sudo. Например, если пользователю необходимо подключиться к серверу по SSH, чтобы перемещать или копировать файлы (намного быстрее через SSH, а не через SMB), или, возможно, сделать git
фиксации файлов и т. д. Вы не можете использовать sudo как apache для этих действий, потому что технически вы не можете войти в систему как apache.
В результате большинство разработчиков будут делать свои git коммиты / толкать / вытягивать с помощью sudo, а затем запускать chown apache:apache . -R
во всем каталоге vhost.
Это не похоже на правильный способ сделать это. Я пытаюсь придумать, как двигаться дальше. Все пользователи также входят в группу apache, но если они создают новые файлы через SSH (возможно, git pull
добавлены новые файлы), то теперь эти файлы принадлежат этому пользователю, а не apache, что снова заставляет их chown
все снова.
Есть ли лучший рабочий процесс для такой установки?
Раньше я устанавливал это, чтобы все разработчики были в группе apache (что вы уже сделали), а затем установили групповую запись в каталоге vhost и липкий бит группы в каталоге vhost (chmod g + ws ). Это должно заставить все файлы создаваться с группой, установленной на apache и разрешениями на чтение / запись. В итоге у вас останутся отдельные учетные записи, владеющие файлами, но пока группа имеет запись, это не имеет значения. Также для этого необходимо, чтобы umask по умолчанию 0002 оставался на месте.