Использование 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 безуспешно.
Ответы
Ответ 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/*