2012-04-16 113 views
0

我有一個使用mercurial repo維護代碼的centos服務器。 允許新的人提交代碼到善變的,我創建了一個新的用戶,將它們添加到Webdev的羣體,他們可以通過防止訪問Web服務器中的某些文件 - mercurial/ssh

hg pull ssh://[email protected] 

推/拉碼不過,也有一些文件(配置文件)我不希望新用戶有權訪問。已經要求Mercurial不要跟蹤這些文件,因此訪問它們的唯一方法就是進入系統並查看文件。我不希望新用戶能夠做到這一點。

實質上,我希望我的新開發人員僅通過hg拖放/推送文件並禁止直接將ssh-ing導入系統。什麼是最好的方法來做到這一點?我可以在沒有提供對文件的ssh訪問的情況下提供hg訪問回購協議嗎?

(或者我的方法有問題?

謝謝!

回答

2

這可以通過利用.ssh\authorized_keys文件中的command選項來實現。當你授予他們在該文件中的密鑰訪問權限時,你可以在它們的密鑰中加上「command = ....」參數,這是他們唯一可以運行的命令。

Mercurial附帶一個方便的腳本來完成這件事。它有裏面的說明:

https://www.mercurial-scm.org/repo/hg/file/tip/contrib/hg-ssh

+0

這就是我正在尋找!謝謝! – crazyphoton 2012-04-17 02:36:19

+0

Mercurial-server基於完全相同的方法,但爲您完成許多手工完成的工作,例如編輯authorized_keys文件。我有偏見,因爲我是作者,但是我絕對推薦在大多數情況下使用mercurial-server而不是hg-ssh。 – 2012-04-17 11:03:54

+0

雖然我(確實)偏向於mercurial服務器,這是因爲數百名在Ubuntu上安裝它的新手,因爲它令人迷惑的名字期望獲得hgweb.cgi的http://服務,並且因爲我認爲它增加了複雜性w/o很多值。它在hg-ssh/hgweb和Rhodecode之類的東西之間佔據了一箇中間地帶,增加了複雜性,而不會增加太多的功能。顯然,這只是一個人的意見。 – 2012-04-17 13:26:12

2

在授權層(類似於Gitolite for Git),你有mercurial-server(不要與Mercurial light-weight web server hgserve混淆)的長期

mercurial-server給你的開發人員遠程讀取到集中式的Mercurial庫/寫訪問使用SSH公鑰認證;它提供了方便和細緻的密鑰管理和訪問控制。

查看其repository here

它是基於相同的SSH forced-command mechanismRy4anhis answer提到的腳本(在他的回答+1,因爲它已經與水銀包裝)。
請參閱refreshauth.py的「mercurial-server」源代碼。