《Disney +》 迪士尼、Marvel、彼思、星球大戰…  Viu 緊貼日本播放《鬼滅之刃 遊郭篇》   我是你的GPU——打造《Astro’s Playroom》數位風格流行音樂   NieR、DOD開發團隊的完全新作RPG《Voice of Cards ドラゴンの島》正式發表!   享受最高級的香味!濱田酒造 x 卡樂B 「飲酒時的最佳配搭組合」發售中!   日本國內第二間任天堂官方商店「Nintendo OSAKA」決定開幕!   日本大手能量飲料品牌 ZONe推出新風味「mad_hacker」   《原神》1.6版本更新:在盛夏來場激情大冒險!   營運即將開始!官方播出了「NieR Re[in]carnation」的直播節目#1!並提供事前下載! 

Linux 使用 Gitosis 架設 Git Server

商業
單純使用 SSH 架設可見此篇: Linux 架設使用 SSH 共享存取的 Git Server 想要控管 User / Project 權限的話(限制某些 User 只能存取某些 Project), 則需要靠 Gitosis 或 Gitolite 等套件來協助.
  • gitosis – git repository hosting application
  • gitolite – SSH-based gatekeeper for git repositories
此篇主要寫的是 Gitosis 架設, 若之前已經有依照上述文章架設共享存取的 Git Server, 而 Gitosis 也想用 git 的帳號來管理, 則需做下述動作先改回原始設定. 註: 此文會用 gitosis 的帳號來管理, 不會用 git 帳號, 所以不需要做下述更改的動作
  1. vim /etc/passwd
    git:x:1000:1000::/home/git:/usr/bin/git-shell 改回 git:x:1000:1000::/home/git:/bin/sh
  2. mv /home/git/.ssh/authorized_keys /home/git/.ssh/authorized_keys.bak
 

相關資料準備

  • 系統: Debian / Ubuntu Linux
  • Server Domain name: example.com
  • Project name: project_name
  • Gitosis (Git) Repository 位置: /srv/gitosis/repositories # Debian / Ubuntu Linux 套件預設位置
  • Group name: myteam

系統套件安裝

  • apt-get install gitosis git-core
  • 說明文件: /usr/share/doc/gitosis/README.Debian # 依照說明文件, 重點就下述兩個步驟即可完成.
    1. sudo -H -u gitosis gitosis-init < SSH_KEY.pub
    2. git clone gitosis@localhost:gitosis-admin.git

產生 SSH 公鑰

  1. ssh-keygen -t rsa # 產生 id_rsa, id_rsa.pub
  2. mv id_rsa ~/.ssh/ # 將 id_rsa 放在 ~/.ssh/ 內.
  3. scp id_rsa.pub example.com:/tmp/id_rsa_user1.pub # 將 id_rsa.pub 丟到 Server 上, 大家的 public key 都需要傳到 Server 上.
  4. scp id_rsa.pub example.com:/tmp/id_rsa_admin.pub # 管理者的 key 同 user key, 在此設為 id_rsa_admin.pub, 避免下述內容造成混淆.

Gitosis Server 架設

  1. ssh example.com # Git Server
  2. sudo -H -u gitosis gitosis-init < /tmp/id_rsa_admin.pub # 會出現下述訊息, 即代表完成
    Initialized empty Git repository in /srv/gitosis/repositories/gitosis-admin.git/ Reinitialized existing Git repository in /srv/gitosis/repositories/gitosis-admin.git/
  3. ls -lh /srv/gitosis/repositories/gitosis-admin.git/hooks/post-update # 確認是否有執行的權限 755 or 777, 沒有請自行 chmod 設定

Gitosis Server 設定專案、新增帳號

  1. Gitosis 的專案權限 / 帳號管理 是使用 Git 來管理, 專案名稱: gitosis-admin.git
  2. git clone gitosis@localhost:gitosis-admin.git # 因為 Gitosis 是用 gitosis-admin.git 來管理, 所以需要抓下來修改、設定(未來所有管理也是如此)
  3. cd gitosis-admin # 會看到下述
    • gitosis.conf # 設定檔, 設定誰可以讀寫哪個專案的 Repository
    • keydir # 目錄, 放每個帳號的 public key. 放置的檔案命名: user1.pub, user2.pub (user1, user2.. 為帳號名稱, 請自行修改)

新增帳號

  1. cp /tmp/id_rsa_user1.pub keydir/user1.pub # 請依照實際帳號命名, 不要取 user1, user2
  2. cp /tmp/id_rsa_user2.pub keydir/user2.pub
  3. git add keydir/user1.pub keydir/user2.pub
  4. git commit -m ‘add user1, user2 public key’
  5. git push
  6. 注意: gitosis 認定的帳號, 是 id_rsa.pub 最後面 "[email protected]", 以 @ 前面的 "xxx" 為帳號(此帳號也是 gitosis 設定的帳號), 若帳號不同, git push 就會出現如下述的錯誤
    ERROR:gitosis.serve.main:Repository read access denied fatal: The remote end hung up unexpectedly

設定專案權限

  1. vim gitosis.conf # 會看到下述, 不要動他, 於最下方設定自己的 Group / 專案名稱即可.
    [group gitosis-admin] writable = gitosis-admin members = [email protected]
  2. 增加下述, myteam 是 group name, 此 group 有 user1, user2 的使用者, 可以寫入 project_name.git 的專案
    [group myteam] writable = project_name member = user1 user2
  3. git commit -m ‘add user1, user2 write access to project_name’ -a
  4. git push

建立專案

  1. cd ~/
  2. mkdir project_name
  3. cd project_name
  4. git init
  5. git remote add origin [email protected]:project_name.git # gitosis 會自行於 /srv/gitosis/repositories 新增
  6. touch readme
  7. git add .
  8. git commit -m ‘initial’
  9. git push origin master:refs/heads/master # 或 git push origin master

gitosis.conf 更多設定條件

下述摘錄自: Gitosis – ArchWiki
[gitosis] gitweb = yes [repo foobar] description = git repository for foobar owner = user [group devs] members = user1 user2 [group admins] members = user1 [group gitosis-admin] writable = gitosis-admin members = @admins [group foobar] writable = foobar members = @devs [group myteam] writable = free_monkey members = jdoe
下述摘錄自: Pro Git 服務器上的 Git 權限管理器 Gitosis
[group mobile] writable = iphone_project members = scott josie jessica [group mobile_ro] readonly = iphone_project members = john

開放 Gitosis 公開存取

  • sudo -u gitosis git-daemon –base-path=/srv/gitosis/repositories/ –export-all

常用命令

下述全部都在 gitosis-admin.git 內操作
新增帳號
  1. cp /tmp/id_rsa_user1.pub keydir/user1.pub
  2. vim gitosis.conf # 增加 members
設定專案
  1. vim gitosis.conf # 增加 group、writeable 的項目
新增專案
  1. mkdir project_name; cd project_name
  2. git init
  3. git remote add origin [email protected]:project_name.git
  4. git commit
  5. git push origin master

相關網頁

  轉載網站
TechNow 當代科技

隨機商業新聞

Micorsoft