#!/usr/bin/env bash # install git dnf install -y git # create necessary groups groupadd gitters groupadd deployers # create directory structure mkdir -p /srv/git/{repos,deploys} chgrp -R gitters /srv/git chmod -R 2770 /srv/git # go there cd /srv/git # set permissions chgrp deployers /srv/git/deploys # setup management repo umask 077 cd /srv/git/repos mkdir management.git cd management.git git init --bare # setup management deploy cd /srv/git/deploys mkdir management.deploy cd management.deploy git init --bare cat << 'EOF' > /srv/git/deploys/management.deploy/hooks/post-receive #!/usr/bin/env bash path='/' GIT_WORK_TREE="$path" git checkout -f # fix own perms chmod 700 $0 # fix /root chmod -R go-rwx /root # fix users cd /home for u in *; do chown -R ${u}:${u} ${u} restorecon -Rv $u done chmod -R go-rwx /home/* EOF chmod 700 /srv/git/deploys/management.deploy/hooks/post-receive