Question

How can you use Git without Sudo in multiple accounts in one Ubuntu?

My Ubuntu has many accounts. The creation of new accounts has made Git inaccessible by me without sudo.

I changed the owner to be me, masi, and the group to be admin where the masi belongs to. I have the following permissions for Git

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

I get the following message in trying to use Git

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

I run find . -iregex ".*index.l.* which returns no matches so there seems to be no index.lock in locking the system. I run the same command also with sudo unsuccessfully.

Was it helpful?

Solution

If I understand your question correctly, you need grant several *nix user accounts write access to the same git repository. Using the --share command line argument for git init should enable this. The GitWiki has a few words to say about this. This should do the trick:

git --bare init --shared=all

If you have already created your repository, you might be able to convert it to a "shared repository" by throwing this command:

git repo-config core.sharedRepository true

in your repository, as mentioned in a blog post at moserei.de.

2014 update: This is still possible but the command has changed from repo-config to config.

git config core.sharedRepository true

OTHER TIPS

Git is meant to be distributed. So, every user should be having a separate repository of his/her own. The above method contradicts this methodology. Apart from that, I suspect the permissions of the .git directory.

I would guess the ownership of the .git directory are the problem.

You shouldn't use one source tree from different users - it's likely to lead to problems.

The git executable is not the issue. It should be owned by root, and have 755 permissions. (-rwxr-xr-x)

In other words you can use git from multiple accounts, but you shouldn't share a single working directory.

Having the permissions of any executable set so that a normal user can overwrite the executable is a considerable security risk. (Try overwriting /usr/bin/git with a shell script that calls rm -rf $HOME.)

Change the permissions back to 755 and make git owned by root:root again. (Ubuntu's package manager would reset the permissions on the next upgrade anyhow unless you used dpkg-statoverride(8))

I agree with those who say that it may not be a good idea to have multiple users share one git repository. If you still think that it is necessary, consider setting up a new group, chgrp the directory holding the repository and all the files therein to that group andset the setgid bit on the directories. (The --shared parameter to git init may do some of this for you, too.) Then, add all the users to the group that should have commit rights.

You can verify members using

members groupname

Then you can set the permission level for the username:groupname pair,

change the ownership
sudo chown -v -R username:groupname sprout
chmod -R g+w .git/*
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top