Table of Contents
Git: create your own git server, but sharing access to all the repositories
This tutorial will show how to create a remote git server but every user you give permissions can contribute to every git project in the server.
To create a git server in which every project can see only the projects they have assigned, I suppose there are other solutions, but definitely this solution will not work, because in this tutorial every commit will be made by a generic git user that can read and write in every directory.
Set up a git server
First, install git on your machine. In my case, because it's an ubuntu, I've run:
sudo apt-get install git
Create git user
I prefer to create a “normal” git user instead a system one. If you prefer to create a system user, just add the –system option to the command:
The –create-home option is needed because there we will be storing the public keys of the users of the repository.
useradd --create-home --user-group git
Enter as git user and add remote public keys
~$ mkdir .ssh ~$ chmod o=,g= .ssh ~$ cd .ssh ~/.ssh$ touch authorized_keys ~/.ssh$ chmod o=,g= authorized_keys
Add the keys of the different users of the git repository
~$ cat public_key_of_first_user.pub >> .ssh/authorized_keys ~$ rm public_key_of_first_user.pub # you can remove the public key afterwards if you want
Verification: in the first_user computer check that you can log in as git user to the remote computer
Check that you can make a ssh to the remote computer with no password request:
rluna@asustao:~$ ssh firstname.lastname@example.org The authenticity of host '192.168.0.21 (192.168.0.21)' can't be established. ED25519 key fingerprint is SHA256:PvSiThCnDq8pNOXyVgsq5vsXLME6oYIbCs0v5urvcpE. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '192.168.0.21' (ED25519) to the list of known hosts. The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. git@ubuntu2004:~$
If this is step succeeds, you can continue.
Create a directory for your repositories
In the server computer, I've created a ```/var/git``` directory to hold the repositories.
As root, do the following:
# mkdir /var/git # chown git:git /var/git # chmod g=rx,o= /var/git
The permissions are set 750 to allow the git user to do anything inside the directory, and the group members to allow other users to read the contents: this will allow us to create other users that can read this directory by adding them to the group of the git user.
Create a repository
To create a repository, log in as the git user and make a git init –bare:
git$ cd /var/git git$ mkdir repo1.git git$ cd repo1.git git$ git init --bare
Congrats! you have created your first repository. The .git extension of the directory is not needed, is just to make the url of the repository more cool.