Использование Git без Sudo во многих аккаунтах - программирование

Использование Git без Sudo во многих аккаунтах

Как вы можете использовать Git без Sudo в нескольких учетных записях в одном Ubuntu?

У моего Ubuntu много учетных записей. Создание новых учетных записей сделало Git недоступным для меня без sudo.

Я изменил владельца, чтобы быть мной, маси, и группой, чтобы быть admin, к которой принадлежит маси. У меня есть следующие разрешения для Git

800 -rwxrwxrwx 1 masi admin 813744 2009-02-20 23:01 /usr/bin/git

Я получаю следующее сообщение при попытке использовать Git

git status
fatal: unable to create '.git/index.lock': Permission denied

Я запускаю find . -iregex ".*index.l.*, который не возвращает совпадений, поэтому, как кажется, нет индекса .lock в блокировке системы. Я запускаю ту же команду также с sudo безуспешно.

4b9b3361

Ответ 1

Если я правильно понял ваш вопрос, вам нужно предоставить нескольким * nix пользователям учетные записи для записи в тот же репозиторий git. Использование аргумента командной строки --share для git init должно включить это. В GitWiki есть несколько слов, чтобы сказать об этом. Это должно сделать трюк:

git --bare init --shared=all

Если вы уже создали свой репозиторий, вы можете преобразовать его в "общий репозиторий", выбросив эту команду:

git repo-config core.sharedRepository true

в вашем репозитории, как указано в сообщение в блоге на moserei.de.

Обновление 2014: Это все еще возможно, но команда изменилась с repo-config на config.

git config core.sharedRepository true

Ответ 2

Git предназначен для распространения. Таким образом, у каждого пользователя должен быть отдельный репозиторий. Вышеуказанный метод противоречит этой методологии. Кроме того, я подозреваю разрешения в каталоге .git.

Ответ 3

Я бы предположил, что проблема с каталогом .git является проблемой.

Нельзя использовать одно дерево источников от разных пользователей - это может привести к проблемам.

Исполняемый файл git не является проблемой. Он должен принадлежать root и иметь 755 разрешений. (-rwxr-xr-x)

Другими словами, вы можете использовать git из нескольких учетных записей, но вы не должны использовать один рабочий каталог.

Ответ 4

Наличие разрешений любого исполняемого набора, чтобы обычный пользователь мог перезаписать исполняемый файл, представляет собой значительный риск для безопасности. (Попробуйте перезаписать /usr/bin/git оболочкой script, которая вызывает rm -rf $HOME.)

Измените разрешения на 755 и снова создайте git, принадлежащие root: root. (Диспетчер пакетов Ubuntu мог бы reset разрешения на следующее обновление в любом случае, если вы не использовали dpkg-statoverride(8))

Я согласен с теми, кто говорит, что не может быть хорошей идеей, чтобы несколько пользователей могли совместно использовать один репозиторий git. Если вы все еще думаете, что это необходимо, подумайте о создании новой группы, chgrp каталога, в котором хранится репозиторий, и всех файлов в нем для этой группы, и установите бит setgid в каталогах. (Параметр --shared для git init может также сделать некоторые из этого для вас.) Затем добавьте всех пользователей в группу, которая должна иметь права на фиксацию.

Ответ 5

Вы можете проверить членов, используя

members groupname

Затем вы можете установить уровень разрешений для пары имя_пользователя: groupname,

change the ownership
sudo chown -v -R username:groupname sprout
chmod -R g+w .git/*