У меня есть сервер, который несколько разных кодировщиков будут использовать для работы на разных сайтах. У каждого кодировщика должен быть доступ к каждому веб-сайту.
Я придумал два "чистых" метода, но я бы предпочел их избегать ...
Каждому веб-сайту дается собственный пользователь / группа, которой он владеет. Веб-сайт будет храниться в / home / username / www /, и я буду использовать suEXEC Apache для переключения между пользователями / виртуальными хостами.
Я создаю одного пользователя / группу в системе, которую каждый кодировщик использует для входа в систему. Затем веб-сайты можно хранить в /var/www/website.com/, и Apache будет работать от имени этого пользователя, чтобы иметь доступ для чтения / записи к файлам.
Очевидные преимущества в плане безопасности пункта 1 заключаются в том, что каждый веб-сайт представляет собой песочницу. Если один сайт скомпрометирован, остальные должны быть в безопасности. Обратной стороной этого метода является наличие нескольких имен пользователей / паролей для запоминания каждым кодировщиком.
Пункт 2 означает, что у каждого кодировщика один логин (тот же логин ...) и меньше беспорядка (50 веб-сайтов на хосте означают 50 новых пользователей / групп)
Моя идеальная установка заключалась в том, чтобы дать каждому программисту своего пользователя / группу. Это даст им их собственную папку ~ для хранения их материалов, и, если мне нужно отозвать доступ кодировщика, я просто отключу их логин. Это превосходит необходимость менять пароль для каждой учетной записи веб-сайта / кодера.
Причина, по которой я не могу полагаться на систему контроля версий, заключается в том, что она редко используется. Многие сайты на этом хосте будут использовать Joomla / Wordpress / и т. Д.
Поэтому я в основном ищу чистый и безопасный способ для нескольких программистов работать на нескольких общих веб-сайтах на одном хосте. Что ты предлагаешь?
Если разрешить нескольким людям редактировать производственный код, это принесет много боли. Используйте контроль версий и развертывайте только сборки с тегами.
То, как вы развертываете сборку, не так важно, как отслеживание изменений и возможность отступить.
Пока Я согласен, что контроль версий - отличный вариант, вы можете выполнить то, о чем просите, выполнив следующие действия (опять же, обратите особое внимание на перечисленные проблемы, связанные с контролем версий).
Так вот ответ на ваш вопрос:
Создайте двух пользователей и дайте им одинаковый идентификатор группы
#groupadd -g 5000 programmers
#useradd ren
#useradd stimpy
Отредактируйте файл / etc / passwd и измените свой guid для двух ваших пользователей:
ren:x:505:5000::/home/ren:/bin/bash
stimpy:x:506:5000::/home/stimpy:/bin/bash
Затем измените umask для этих пользователей, чтобы они создавали весь свой файл с rw для групповых программистов.
#vi /home/ren/.bash_profile
umask 002
Теперь подайте su каждому пользователю, чтобы убедиться, что они оба могут редактировать одни и те же файлы в будущем:
#su - ren
#vi /path/to/file.txt
here's some content in the file
#exit
#su - stimpy
#vi /path/to/file.txt
append some more content
Вы обнаружите, что когда ren создавал файл, владельцем был ren: programmers с rw-rw-r. Это позволит стимпи также редактировать файл. Вы также сможете отслеживать, как изначально был создан файл (но не кто его редактировал).