git 支持ssh, https, git协议. 自建的只支持ssh
git账号就是linux账号.
创建一组账号, 加入同一个组
每个项目是一个组可写的目录.
git提供了git-shell禁止交互式shell登录.
如果~/git-shell-commands存在, 可以以无参数形式执行这些命令.
下面的脚本创建一组命令, 加入git组, 同时提供修改密码和上传sshkey功能.
#!/bin/bash
#users=("u1" "u2")
for user in ${users[*]}; do
#useradd -m -g git -s /usr/bin/git-shell $user && echo "$user:wl" | chpasswd
#mkdir /home/$user/git-shell-commands
#ln -s /usr/bin/passwd /home/$user/git-shell-commands/passwd
mkdir /home/$user/.ssh
touch /home/$user/.ssh/authorized_keys
chown $user -R /home/$user/.ssh
chmod 700 -R /home/$user/.ssh
ln -s /bin/setsshkey /home/$user/git-shell-commands/setsshkey
done
客户端执行 cat ~/.ssh/id_rsa.pub | ssh zhanglihua@1.1.1.1 'setsshkey' 上传 sshkey
setsshkey脚本:
/bin/cat > ~/.ssh/authorized_keys
修改git配置, shift提交时创建的目录也是组可写的
创建项目步骤
1. 用root用户创建目录
mkdir xxx, cd xxx
2. 初始化
git init --bare --shared
3. 设置组可写
git config core.sharedRepository group
sudo chown git:git -R .
sudo chmod -R g+rwX .
迁移git仓库
git clone --bare 旧路径
git push --mirror 新路径
另外要注意一下, 如果用户不是通过上面的脚本创建的, 也就是说, 用户的默认组不是git, 这个用户创建的文件就不属于git组, 其他用户就没有修改的权限. 所以最好所有用户都使用上面的脚本创建. 实在需要其他用户加入git的话, 用newgrp 修改用户的默认组为git, 即可.