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

Ошибка разрешения с git на linux с голым общим репо

У меня есть голое центральное репо, в котором включена эта опция:

git config core.sharedRepository true

По какой-то причине другие пользователи на этой машине CentOS, которая извлекает / отправляет из центрального репо, всегда сталкиваются с ошибкой разрешения при нажатии на ветку, которую кто-то уже нажал.

Я заглянул в каталог объектов и понял, что тот, кто нажал первым, получает свое имя пользователя в качестве владельца И группы.

Я настроил его так, чтобы все пользователи принадлежали к группе «разработчиков», а затем chgrp -R - пустое репо, которое должно принадлежать группе «разработчики», но это еще не решило проблему.

Есть другие предложения?

БОЛЬШЕ ИНФОРМАЦИИ:

Вот что происходит, когда я нажимаю:

[dave@localhost wd]$ git push
Counting objects: 5, done.
Compressing objects: 100% (2/2), done.
error: insufficient permission for adding an object to repository database ./objects

fatal: failed to write object
error: pack-objects died of signal 13
error: failed to push some refs to '/gitrepos/repo.git'

Как видите, разрешения внутри папки объектов на голом центральном репо имеют директории с разными разрешениями, которые принадлежат другому пользователю, jane (список был сокращен для удобства чтения):

[dave@localhost objects]$ ls -la
total 248
drwxrwxr-x 62 root   developers 4096 Dec 13 15:37 .
drwxrwxr-x  9 root   developers 4096 Dec 13 15:34 ..
drwxrwxr-x  2 root   developers 4096 Dec 12 16:05 01
drwxrwxr-x  2 root   developers 4096 Dec 12 16:05 2f
drwxrwsr-x  2 jane   jane       4096 Dec 13 15:37 30
drwxrwxr-x  2 root   developers 4096 Dec 12 16:19 33
drwxrwxr-x  2 root   developers 4096 Dec 12 16:05 39
drwxrwxr-x  2 root   developers 4096 Dec 12 16:19 6c
drwxrwxr-x  2 root   developers 4096 Dec 12 16:05 89
drwxrwsr-x  2 jane   jane       4096 Dec 13 15:37 8b
drwxrwxr-x  2 root   developers 4096 Dec 13 05:41 8e
drwxrwxr-x  2 root   developers 4096 Dec 12 16:19 90
drwxrwxr-x  2 root   developers 4096 Dec 12 14:32 info
drwxrwxr-x  2 root   developers 4096 Dec 12 14:32 pack

Вам либо нужно убедиться, что пользователи используют 002 в качестве маски umask, чтобы новые создаваемые файлы были g + w, либо вам нужно будет использовать расширенные списки контроля доступа, чтобы установить разрешения по умолчанию для новых файлов, созданных в этом репозитории. umask - это то, что вы устанавливаете в среде, возможно, в .bashrc или / etc / profile или в каком-нибудь таком файле запуска, но это влияет на файлы, созданные где угодно. Вы не можете локализовать umask в одном конкретном каталоге. Если вам нужно такое поведение в определенном каталоге, вам, возможно, придется использовать расширенные ACL файловой системы, что требует перемонтирования файловой системы с опцией acl и использования setfacl для изменения ACL по умолчанию. В любом случае вы должны сделать все группы каталогов принадлежащими 'разработчикам' и chmod g + s, что сделает новые каталоги / файлы наследовать эту группу.

В течение git init опция --shared=group полезен для таких случаев (он делает материал g + sx)