我有用戶fred
裸git倉庫設置:setgid位未被git保存在`.git`文件夾中的新目錄中?
/home/fred/foo.git
我已經在組中foo.git
每個文件設置爲bar
:
$ chown -R fred:bar /home/fred/foo.git
(注意fred
不是組的成員bar
)
而且我已經爲中的每個目錄設置了setgid
位10:
$ find foo.git -type d -print0 | xargs -0 chmod g+s
然而,當fred
承諾的git倉庫,該集團不保留一些文件。
具體表現在objects
目錄我看到:
foo.git/objects:
drwxrws--- 46 fred bar 4096 Apr 7 23:43 .
drwxrws--- 7 fred bar 4096 Apr 6 17:12 ..
drwxrws--- 2 fred bar 4096 Apr 6 17:11 07
drwxrws--- 2 fred bar 4096 Apr 6 17:11 10
drwxrwx--- 2 fred bar 4096 Apr 7 22:14 14 <--- HERE
drwxrws--- 2 fred bar 4096 Apr 6 17:11 17
^--- HERE
注意,在objects/14
的setgid
位未設置。所以,因此,當一個新的對象被添加到該目錄:
foo.git/objects/14:
drwxrwx--- 2 fred bar 4096 Apr 7 22:14 .
drwxrws--- 46 fred bar 4096 Apr 7 23:43 ..
-r--r----- 1 fred fred 2595 Apr 7 22:14 95482f8..9d6bfe21
所以現在95482..
文件沒有組bar
,它有一羣fred
。
我懷疑,當COMMITED fred
,混帳創建點播叫objects/14
舉行新的對象,它這樣做是爲了某種未知的原因,setgid
位上的新14
目錄沒有設置時,一個新的目錄,即使它的父目錄objects
已設置setgid
位。
如果我嘗試手動複製此:
$ su fred # as user fred
$ mkdir test1 # create test1 dir
$ sudo chgrp bar test1 # set group to bar
$ sudo chmod g+s test1 # set setgid bit
$ ls -l
drwxrwsr-x 2 fred bar 4096 Apr 8 21:33 test1
$ mkdir test1/test2 # create dir test1/test2
$ ls -l
drwxrwsr-x 2 fred bar 4096 Apr 8 21:35 test2
^--- HERE
發現新test1/test2
的setgid
位保存,所以當我...
$ touch test1/test2/test3
新文件仍然是按預期組bar
:
$ ls -l test1/test2
-rw-rw-r-- 1 fred bar 0 Apr 8 21:36 test3
爲什麼git
似乎在.git
目錄中創建新目錄時似乎保留setgid
位?
有一些我可以解決這個問題的git設置?或者你能解釋是什麼造成了這種情況?
我已經'core.sharedRepository = 0660'集。我無法更改它,因爲我不希望該存儲庫具有世界可讀性。使用'core.sharedRepositoy = 0660'觀察描述的行爲(不保留setgid位)。 – 2013-04-08 23:12:22
這不是(不希望的)設置文件和目錄的'setgid'位嗎? – 2013-04-08 23:21:21
有人實施它後多長時間,你認爲這將需要笑聲開始的嘲笑嚎叫?不,git的「愚蠢的內容跟蹤器」等等,但我真的認爲他在這方面使用這個詞來表示其他意思。 – jthill 2013-04-08 23:26:05