準(zhǔn)備:
一臺(tái)Linux服務(wù)器(本文示例使用的是阿里云CentOS 7.0)
一些做客戶端的你可能不知道的姿勢(shì):
Linux用戶鹉动、組题造、權(quán)限問(wèn)題以及命令的用法
SSH協(xié)議相關(guān)
其實(shí)歌径,這些姿勢(shì)在《鳥(niǎo)哥的Linux私房菜》一書(shū)中有非常詳盡的解釋详羡,非常推薦胆筒。但是通讀此書(shū)對(duì)我們來(lái)說(shuō)時(shí)間成本略高。而且如果不是每天都要用真的很難記住邻吞。所以,本文只簡(jiǎn)單介紹這些你在搭建git服務(wù)器的過(guò)程中可能需要了解的姿勢(shì)葫男。
閑話少說(shuō)抱冷,書(shū)歸正傳。
我們默認(rèn)你有一臺(tái)Linux服務(wù)器梢褐,并且知道root帳號(hào)和密碼旺遮,以下所有命令中需要替換的部分我會(huì)用中文占為,真正的Linux命令是不可能有中文的盈咳。#->代表命令提示符耿眉。
首先,我們需要使用終端鏈接到服務(wù)器:
#-> ssh 你的服務(wù)器IP
之后鱼响,服務(wù)器會(huì)提示你輸入賬號(hào)和密碼鸣剪。此處需要輸入root的賬號(hào)和密碼,因?yàn)槲覀円诜?wù)器上安裝git以及創(chuàng)建相關(guān)用戶,需要用到root權(quán)限西傀。
相關(guān)姿勢(shì)一斤寇,ssh命令、協(xié)議:
ssh命令表示連接到服務(wù)器拥褂,可以以域名為參數(shù)娘锁,或者以服務(wù)器IP為參數(shù)。如果服務(wù)器ssh協(xié)議監(jiān)聽(tīng)端口不是默認(rèn)的22需要加上-p選項(xiàng)后邊輸入要連接服務(wù)器的端口號(hào)饺鹃。
ssh協(xié)議參見(jiàn)維基百科:https://zh.wikipedia.org/wiki/Secure_Shell
登錄成功后莫秆,我們首先要安裝git,有的服務(wù)器默認(rèn)是已經(jīng)安裝的:
#-> yum install git
yum這里就不詳細(xì)介紹了悔详,它是一款安裝軟件的工具镊屎,會(huì)自動(dòng)下載依賴包,免得我們自己到處找茄螃。并且自動(dòng)安裝軟件缝驳。
安裝完畢,我們需要先創(chuàng)建用戶組归苍,創(chuàng)建用戶組的目的其實(shí)是為了控制某一類用戶的權(quán)限用狱。假設(shè)我們需要為設(shè)計(jì)部搭建一個(gè)git服務(wù)器,那我們此處需要輸入命令:
#-> groupadd 組名稱
創(chuàng)建組完成后我們需要?jiǎng)?chuàng)建幾個(gè)不同的用戶:
#-> user add -M 用戶名稱1
#-> user add -M 用戶名稱2
... ...
創(chuàng)建好用戶之后我們還需要把用戶添加到之前創(chuàng)建的組中:
#-> usermod -G 組名稱 用戶名稱1
#-> usermod -G 組名稱 用戶名稱2
... ...
useradd是添加系統(tǒng)用戶的命令拼弃,如果不加-M的選項(xiàng)則創(chuàng)建用戶的時(shí)候會(huì)自動(dòng)在/home目錄下創(chuàng)建一個(gè)和用戶名相同的目錄夏伊,這個(gè)目錄通常被稱作該用戶的家目錄,該用戶在該目錄下?lián)碛凶x寫(xiě)權(quán)限吻氧。權(quán)限問(wèn)題會(huì)在后邊進(jìn)一步介紹溺忧。在此,我們的目的是搭建git服務(wù)器盯孙,并不想給用戶除了git訪問(wèn)以外其他的權(quán)限鲁森,所以這里使用-M選項(xiàng)讓系統(tǒng)不給該用戶創(chuàng)建自己的家目錄。
usermod是用戶管理命令振惰,-G表示將用戶添加到某個(gè)分組刀森。
為了保留秘鑰登錄的驗(yàn)證信息,所以我們?cè)?home目錄下創(chuàng)建一個(gè)公共家目錄:
#-> midair 組目錄名稱
我們還需要禁用掉其他用戶ssh到服務(wù)器报账,只留給用戶git相關(guān)權(quán)限研底,并且修改用戶的家目錄:
#-> vim /etc/passwd
找到所創(chuàng)建用戶的這一行:
用戶名稱:x:1000:1000::/home/用戶名稱:/bin/bash
將/bin/bash替換成git-shell的路徑(我的服務(wù)器是:/usr/bin/git-shell,可以通過(guò)#-> which git-shell來(lái)查看git-shell所在路徑)
將/home/用戶名稱替換成/home/組目錄名稱
我們?cè)俅芜M(jìn)入公共的家目錄:
#-> cd /home/組目錄名稱
創(chuàng)建我們想要的git倉(cāng)庫(kù):
#-> mkdir 新倉(cāng)庫(kù)名稱.git
進(jìn)入該目錄:
#-> cd 新倉(cāng)庫(kù)名稱.git
使用git命令來(lái)創(chuàng)建一個(gè)裸倉(cāng)庫(kù):
#-> git --bare unit
至此透罢,我們已經(jīng)在服務(wù)器上完成了一個(gè)git倉(cāng)庫(kù)的創(chuàng)建榜晦。我們可以在客戶端clone該倉(cāng)庫(kù):
#-> git clone 剛剛創(chuàng)建的用戶名稱@你的服務(wù)器IP:新倉(cāng)庫(kù)名稱.git
雖然已經(jīng)clone出倉(cāng)庫(kù),但是這時(shí)候我們是不能push的羽圃,因?yàn)樾聞?chuàng)建的用戶此時(shí)并沒(méi)有寫(xiě)權(quán)限乾胶,我們需要回到服務(wù)器:
#-> cd /home
修改組目錄所屬的分組:
#-> chgrp -R 組目錄名稱
-R表示遞歸修改所有子目錄所屬分組
然后修改組目錄的權(quán)限:
#-> chmod -R 775 組目錄名稱
這里-R同樣表示遞歸修改權(quán)限
775表示權(quán)限,Linux下文件/文件夾權(quán)限分為三種,文件擁有者權(quán)限识窿、文件所屬組成員權(quán)限斩郎、以及其他人的權(quán)限。775三位分別對(duì)應(yīng)這三種權(quán)限喻频。每一位中缩宜,4表示可讀,2表示可寫(xiě)甥温,1表示可執(zhí)行(文件夾的話表示可進(jìn)入)锻煌,最后相加的和表示權(quán)限集合。這里我們?cè)O(shè)置為組目錄以及子目錄的權(quán)限為775表示所擁有者可讀姻蚓、可寫(xiě)宋梧、可執(zhí)行;所屬組成員可讀狰挡、可寫(xiě)捂龄、可執(zhí)行;其他人可讀加叁、可執(zhí)行跺讯,但是不可寫(xiě)。
此時(shí)我們?cè)俅位氐娇蛻舳搜撑涂梢詐ush倉(cāng)庫(kù)的修改到服務(wù)器了。