
ОС: Ubuntu сервер 10.04 LTS
У меня возникла странная проблема с разрешениями, и я не могу понять, что ее вызывает.
Настройка следующая:
Папки репозитория Git (и файлы в них) принадлежат пользователю root, а группа, которую мы используем для проектов, имеет права rws, например:
ll /path/to/project
drwxrwsr-x 7 root project 4096 2013-03-14 19:19 project
Наш пользователь jenkins является членом всех групп, которые мы создаем для проектов, включая ту, что в примере. Приложение jenkins запускается пользователем jenkins, чтобы убедиться, что у него есть полный доступ к папкам проекта.
Если я удалю права на чтение и выполнение для «других» в этих папках git, наши сборки завершатся ошибкой, сообщающей:
fatal: '/path/to/project' does not appear to be a git repository
ps: SELinux не задействован
решение1
Полагаю, дело в ваших правах доступа к подкаталогам в репозитории.
# Set the same ownerships for every file and directory within the repository
sudo chown -R root:project /path/to/project
# Remove permissions for others on all files
sudo chmod o-rwx $(find /path/to/project -not -type d)
Если вы хотите, чтобы члены группы ответили на изменения:
# Set permissions for all subdirectories
sudo chmod 2770 $(find /path/to/project -type d)
Если вы хотите, чтобы участники группы имели доступ только для чтения:
# Remove write permissions for group members for every file
sudo chmod g-w $(find /path/to/project -not -type d)
# Set permissions for all subdirectories
sudo chmod 2750 $(find /path/to/project -type d)
Теперь, если пользователь jenkins является членом группы проекта, он сможет без проблем клонировать репозиторий git.
Однако если в вашей системе включен SELinux, все может стать немного сложнее.
Удачного кодирования :)