Git服务器搭建,多用户组权限控制配置,添加新用户密码登陆


发布者 ourjs  发布时间 1531985571718
关键字 技术前沿  分享 
因为git是通过ssh协议实现的,所以权限控制与Linux的权限控制一致,即可以通过ssh key文件登录,安全性更高。也可以设置用户名密码登录,这样无需分发与管理key文件。这里主要介绍如何搭建git服务器并通过用户组设置户用户统一Git权限。


服务器端安装 git server

apt-get install git-core

服务器创建 /git/ourjs 目录,-p是深度创建目录,此目录所在的文件系统需要支持组权限设置,ntfs文件系统则不支持。

mkdir -p /git/ourjs

切换到 ourjs 目录

cd /git/ourjs

初始化 git 仓库,指定通过用户组进行权限控制

git init --shared=group

创建 git_ourjs 用户组,用于统一权限控制

addgroup git_ourjs

添加一个 test 用户,指定用户组为 git_ourjs,按提示设置密码即可

adduser --ingroup git_ourjs test

将 ourjs 仓库用户组改为 git_ourjs

chgrp -R git_ourjs /git/ourjs

给用户组添加读写权限

chmod -R g+swX /git/ourjs

然后本地可以通过test用户clone

$ git clone ssh://test@192.168.0.101/git/ourjs

结果

Cloning into 'ourjs'...
test@192.168.0.101's password:
Permission denied, please try again.
test@192.168.0.101's password:
warning: You appear to have cloned an empty repository.

不过提交时可能会报错

$ git push
test@192.168.0.101's password:
Counting objects: 3, done.
Writing objects: 100% (3/3), 207 bytes | 69.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To ssh://192.168.0.101/git/ourjs
 ! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'ssh://test@192.168.0.101/git/ourjs'

这是由于git默认拒绝了push操作,需要进行设置,修改.git/config

nano /git/ourjs/.git/config

添加如下代码 denyCurrentBranch  即可:

    [receive]
        denyNonFastforwards = true
        denyCurrentBranch = ignore

或者在服务器端运行

git config receive.denyCurrentBranch ignore


您可以添加新的用户 test2 到 git_ourjs 组
adduser --ingroup git_ourjs test2

然后在另外一台电脑上用 test2 clone即可:

git clone ssh://test2@192.168.0.101/git/ourjs

然后test2就可以也提交代码到 ourjs 了


相关阅读:
Linux上为git无交互添加最低权限的使用用户
Debian/Ubuntu Linux搭建SVN服务器,并设置开机默认启动










 热门文章 - 分享最多
  1. Git服务器搭建,多用户组权限控制配置,添加新用户密码登陆
  2. 设置select元素中option的默认值
  3. Node.JS用Path将相对路径转为绝对路径
  4. Debian/Ubuntu Linux搭建SVN服务器,并设置开机默认启动
  5. Office365并不是完全基于JavaScript重写的,只是用来构建UI界面
  6. 用JavaScript将input/textarea中的文本复制粘贴到剪切板
  7. Facebook 正在重构 React Native,将重写大量底层
  8. JavaScript用Number/parseInt/parseFloat判断字符串是否为数字
  9. Node.JS命令行或批处理中更改Linux用户密码
  10. 上海行业工资排名:产品经理一骑绝尘,前端排名第二?

 相关阅读
  1. Git服务器搭建,多用户组权限控制配置,添加新用户密码登陆
  2. Facebook 正在重构 React Native,将重写大量底层
  3. WordPress、百度宣布停止使用React(Native)开源项目,Facebook开源专利许可潜在的法律风险
  4. 比特币的技术缺陷:区块链信息越来越大怎么办?
  5. Phantom.js维护者Slobodin退出,著名自动化测试与智能爬虫框架前景不明
  6. Java已快过时?斯坦福大学将JavaScript作为计算机科学入门课
  7. 2016 年崛起的 JS 项目
  8. OnceVI前后端分离的数据可视化报表工具简介
  9. 关于华为优化30、40老员工的争议
  10. GitHub 第一坑:换行符自动转换

  开源的 OurJS
OurJS开源博客已经迁移到 OnceOA 平台。

  关注我们
扫一扫即可关注我们:
OnceJS

OnceOA