Skip to content

Setup gitolite on SELinux

razy-dev edited this page Mar 31, 2016 · 20 revisions

Install Git

1. Check Git package

]$ su - root
]# yum list installed git*
]# yum list git*

2. Install Git package

]$ su - root
]# yum install git

Setup Simple ssh protocol

1. Create new repository

]$ mkdir /data/git
]$ chmod 777 /data/git
]$ cd /data/git (mkdir first)
]$ mkdir MyRepo.git
]$ cd MyRepo.git
]$ git init --bare --shared
]$ chmod -R 777 .

2. Git Clone

]$ git clone user@git.hostname:/data/git/MyRepo.git

Install gitolite

gitolite setup layout

  • GIT REPOSITOYR PATH : /data/git
  • GITOLITE ADMIN PATH : /data/git-admin

1. Create User

# git repository user
]# adduser -d /data/git

# set SELinux policy
]# semanage fcontext -a -t user_home_dir_t /data/git
]# semanage fcontext -a -t ssh_home_t "/data/git/.ssh(/.*)?"
]# restorecon -R -v /data/git/.ssh
# gitolite admin user
]# adduser -d /data/git-admin

# set SELinux policy
]# semanage fcontext -a -t user_home_dir_t /data/git-admin
]# semanage fcontext -a -t ssh_home_t "/data/git-admin/.ssh(/.*)?"
]# restorecon -R -v /data/git-admin/.ssh

2. git-admin ssh-keygen

]$ su - git-admin
]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/data/git-admin/.ssh/id_rsa): [ENTER]
Enter passphrase (empty for no passphrase): [ENTER]
Enter same passphrase again: [ENTER]
Your identification has been saved in /data/git-admin/.ssh/id_rsa.
Your public key has been saved in /data/git-admin/.ssh/id_rsa.pub.
The key fingerprint is:
0d:6e:51:d2:a1:b9:cb:fe:f2:d5:04:2e:25:dd:1a:47 git-admin@your_host_name
The key's randomart image is:
+--[ RSA 2048]----+
|        ..o.  E  |
|         =.. o   |
|        = . = o  |
|       . = + =   |
|        S o o .  |
|       o . . o   |
|        o   . .  |
|       ..  .     |
|        .+o      |
+-----------------+
]$ su - git
]$ ssh-keygen -t rsa
...

3. Copy git-admin's public key(id_rsa.pub) to git's home

]$ su - root
]# cp /data/git-admin/.ssh/id_rsa.pub /data/git/.ssh/git-admin.pub
]# chown git:git /data/git/.ssh/git-admin.pub

4. Clone gitolite from github & Set gitolite

]$ su - git
]$ cd ~
]$ mkdir ~/bin
]$ git clone https://github.com/sitaramc/gitolite.git
]$ gitolite/install -ln
]$ gitolite setup -pk .ssh/git-admin.pub
]$ ls -al
drwxrwxr-x. 2 git  git  4096 Mar 21 18:01 bin
drwxr-xr-x. 6 git  git  4096 Mar 21 17:44 gitolite       # gitolite install(clone) path
drwx------. 6 git  git  4096 Mar 21 18:03 .gitolite      # gitolite admin
-rw-------. 1 git  git  6998 Mar 21 18:03 .gitolite.rc
-rw-------. 1 git  git    12 Mar 21 18:03 projects.list
drwx------. 4 git  git  4096 Mar 21 18:03 repositories   # git repository path
drwx------. 2 git  git  4096 Mar 21 18:03 .ssh
  • check gitolite shell
]$ su - git-admin
]$ ssh git@localhost info
hello git-admin, this is git@your_host_name running gitolite3 v3.6.5-2-g98c167b on git 1.7.1
R W    gitolite-admin
  • if not. check .ssh/authorized_keys.
]$ su - git
]$ vi ~/.ssh/authorized_keys
# gitolite start
command="/data/git/gitolite/src/gitolite-shell git-admin", ....
.....
# gitolite end

remove all text, except for '# gitolite start ~ # gitolite end'

5. Clone gitolite-admin

]$ su - git-admin
]$ cd ~
]$ git clone  git@localhost:gitolite-admin.git

Simple gitolite admin

1. Add user

]$ su - git-admin
]$ cd ~/gitolite-admin
]$ git pull

]$ cp userid.pub ~/gitolite-admin/keydir
]$ git add userid.pub
]$ git commit -a -m"add uesr 'userid'"
]$ git push origin master

2. Add repository

]$ su - git-admin
]$ cd ~/gitolite-admin
]$ git pull

]$ vi ~/gitolite-admin/conf/gitolite.conf

repo gitolite-admin
    RW+     =   git-admin

...
# create new repository
repo new_repository
    RW+     =   userid
...
]$ git commit -a -m"create repository 'new_repository'"
]$ git push

3. Add User to Admin

]$ su - git-admin
]$ cd ~/gitolite-admin
]$ git pull

]$ vi ~/gitolite-admin/conf/gitolite.conf
...
repo gitolite-admin
  RW+     =  git-admin
  RW+     =  userid
...
]$ git commit -a -m"Add User to Admin"
]$ git push

4. Set User & Repository Group

]$ su - git-admin
]$ cd ~/gitolite-admin
]$ git pull

]$ vi ~/gitolite-admin/conf/gitolite.conf
...
@admin = git-admin user1 user2 ...

...
@MyRepos = MyRepo1
@MyRepos = MyRepo2
@MyRepos = MyRepo3
...
repo gitolite-admin
  RW+     =  @admin
...
repo @MyRepos
  RW+     =	user
  RW+     =	@Group
...
]$ git commit -a -m"Modify User & repo"
]$ git push

gitolite admin on Windows

1. Download Git for Windows

2. Install Git for Windows

  • Adjust your PATH environment

    select "Run Git from Windows Command Prompt"

  • Configuring the line ending conversions

    select "Checkout Windows-style, commit Unix-style line endings"

3. Add Window User