zoukankan      html  css  js  c++  java
  • git服务器搭建及多用户权限管理

    简单的git服务器搭建操作:

    1. 安装git在服务器上
    2. 下载git客户端在windos

    服务器端操作:

    1. 查看要创建的用户 id username
    2. 创建用户: useradd username
    3. 设置用户密码:passwd username

    服务器端创建仓库然后把仓库的owner修改为username

    1. 以/opt/git/gittest.git作为仓库
    2. mkdir -p /opt/git
    3. git init --bare /opt/git/gittest.git
    4. cd /opt/git/
    5. chown -R account:group gittest.git/

    客户端clone 远程仓库

    1. 在客户端目录 D:gittestgittest_gitbash作为项目地址并进入
    2. git clone username@192.168.171.118:/opt/git/gittest.git 第一次的时候输入yes即可
    3. 此时在C:Users用户名.ssh目录下会出现known_hosts文件

    客户端创建ssh公钥和私钥

    1. ssh-keygen -t rsa -C "1114375070@qq.com"
    2. 连按三次enter(第一次是文件名,后两次是提交代码是需要输入的密码) 此时在 C:Users用户名.ssh 下会多出两个文件 id_rsa 和 id_rsa.pub .   id_rsa 是私钥。id_rsa.pub 是公钥


    服务器git 打开RSA认证

    1. 进入/etc/ssh/sshd_config 编辑打开下面三个注释没有的添加进去 RSAAuthentication yes
      PubkeyAuthentication yes
      AuthorizedKeysFile .ssh/authorized_keys
      保存退出
      重启sshd服务
      systemctl restart sshd.service //(centos 7)

      由 AuthorizedKeysFile 得知公钥的存放路径是 .ssh/authorized_keys,实际上是 $Home/.ssh/authorized_keys,由于管理 Git 服务的用户是 git,所以实际存放公钥的路径是 /home/git/.ssh/authorized_keys

      在 /home/git/ 下创建目录 .ssh

      然后把 .ssh 文件夹的 owner 修改为 git
      chown -R git:git .ssh


      2.将客户端公钥导入服务端/home/git/.ssh/authorized_keys 文件
      回到git bash
      ssh username@192.168.171.118 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
      //ssh gitAdmin@192.168.171.118 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
      需要输入服务端username 的密码
      回到服务端查看.ssh下是否存在authorized_keys文件
      重要:每新建一个账号都需要新建一个.ssh文件夹

    修改 .ssh 目录的权限为 700

    修改 .ssh/authorized_keys 文件的权限为 600


    14:客户端在此clone远程仓库
    git clone username@192.168.171.118:/opt/git/gittest.git

    15:
    ⑨ 禁止 git 用户 ssh 登录服务器
    之前在服务器端创建的 git 用户不允许 ssh 登录服务器

    编辑 /etc/passwd

    找到:

    git:x:502:504::/home/git:/bin/bash
    修改为

    git:x:502:504::/home/git:/bin/git-shell
    此时 git 用户可以正常通过 ssh 使用 git,但无法通过 ssh 登录系统。

    参考:https://www.cnblogs.com/dee0912/p/5815267.html

    删除账号:userdel username


    git clone git@ip:path/gittest.git


    这个需要在开发者电脑生成公钥,然后上传到git服务器上,保存在authorized_keys中。
    首先在客户端设置用户名和邮箱,这个不不是登录用户,可以看做是一个别称,用来跟踪代码提交记录的
    git config --global user.name "yangyangwang"

    git config --global user.email wang839305939@outlook.com

    本文总结了Linux添加或者删除用户和用户组时常用的一些命令和参数。
    1、建用户:
    adduser phpq //新建phpq用户
    passwd phpq //给phpq用户设置密码

    2、建工作组
    groupadd test //新建test工作组

    3、新建用户同时增加工作组
    useradd -g test phpq //新建phpq用户并增加到test工作组

    注::-g 所属组 -d 家目录 -s 所用的SHELL

    管理员账号
    gitAdmin:111111
    git clone gitAdmin@192.168.171.118:/opt/dw/slaveDev/slave.git

    --------------------------------------------------------------------------------------------------------------------------------------------

    安装git,使用yum源在线安装
    yum install -y git
    初始化git仓库,在/home/data/git/路径下初始化一个空的仓库gittest
    git init --bare /home/data/git/gittest.git
    到这里Git服务器就搭好了,而且有一个空的git仓库。下面的工作就是添加用户,因为看到各位大牛添加用户都是通过密钥实现的,这样可以免密使用,而我自己感觉生成密钥这个过程可能对开发人员来说是一件麻烦事(虽然只有一句命令),而且开发人员较少,所以决定添加用户名密码,服务器端管理员直接管理即可。不说废话了,接着往下看。
    创建用户组gitgroup
    groupadd gitgroup
    创建用户qixiao
    useradd qixiao
    为用户设置密码
    passwd qixiao
    禁用git用户的shell登录,防止用户通过Git用户登录服务器。编辑/etc/路径下的passwd文件,将文件后边的bash改成git-shell,即

    qixiao:x:1003:1003::/home/qixiao:/bin/bash
    改成

    qixiao:x:1003:1003::/home/qixiao:/bin/git-shell
    将用户qixiao添加到用户组gitgroup
    usermod -G gitgroup qixiao
    修改git仓库所在目录/home/data/git/的用户组为gitgroup
    chgrp -R gitgroup /home/data/git/
    写到这里,用户组对/home/data/git/路径只有读的权限,没有写的权限。上边的配置都没有什么问题,就这个权限折腾了一天,用户组默认的权限是没有写权限的,配置好不能上传代码,问题就在用户组的权限。
    修改目录及其子文件的权限
    chmod -R 777 /home/data/git/


    usermod -G groupname username (这种会把用户从其他组中去掉,只属于该组)
    如:usermod -G git git (git只属于git组)

    usermod -a -G groupname username (把用户添加到这个组,之前所属组不影响)
    如:usermod -a -G www git (git属于之前git组,也属于www组)


    git 分支合并
    主干分支一般不用来开发,开发一般在其他分支上(这是前提)
    当其他分支的功能开发完毕以后,就需要将此功能合并到主干分支上,
    暂时摸索出来的门路如下:
    1:首先切换到其他分支要合并到的分支上去
    2: 使用git merge 分支名字(待合并的分支)(此时会看到fast-forward,具体啥意思自己搜)
    3:等待合并完成将其他分支删除git branch -d 其它分支名字

    以上操作会保持主干的粗壮性和枝繁叶茂

    作者:first_semon
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有问题,欢迎交流
  • 相关阅读:
    SQLite数据库
    如何将大文件写入到数据库中
    Visual Studio 2008 附加进程调试
    VS2010MFC编程入门
    关于exe文件传递参数方法
    监视剪贴板数据
    Delphi快捷键
    判断一个对象是否存在, 谁更快
    全局探色器
    用DELPHI中实现RAR文件解压到指定一目录
  • 原文地址:https://www.cnblogs.com/first-semon/p/13996351.html
Copyright © 2011-2022 走看看