Git 提交失败提示无写入权限与 Linux 下创建文件的默认权限
2019獨角獸企業重金招聘Python工程師標準>>>
最近給公司部署了 git 服務器(CentOS 6.3),由于之前沒有配置 git server 的經驗,搞了半天才把配置搞定。這里就不講配置的問題了。創建了賬戶、項目并設置 git 權限后,使用 a 賬號開始測試。一切正常,沒有問題。
第二天上班,給同事建了個賬號 b(a,b 賬號同在 git 用戶組),出現問題了,pull 正常, push 失敗,提示 objects 目錄下有文件沒有寫入權限。
果斷 ssh 上服務器,把賬號 a 和 b 都放到 git 用戶組。繼續測試,還是報錯。沒辦法,只好一路 cd 到 objects 下,ll,發現有些文件沒有對同組用戶開啟 w 權限。想了想,用“linux 創建文件默認權限”作為關鍵詞 Google 了一下,看了幾篇文章,了解了 umask 命令。
下面貼幾段網上的講解:
umask是什么?
當我們登錄系統之后創建一個文件總是有一個默認權限的,那么這個權限是怎么來的呢?這就是umask干的事情。umask設置了用戶創建文件的默認權限,它與chmod的效果剛好相反,umask設置的是權限“補碼”,而chmod設置的是文件權限碼。一般在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中設置umask值。
如何計算umask值?
umask命令允許你設定文件創建時的缺省模式,對應每一類用戶(文件屬主、同組用戶、其他用戶)存在一個相應的umask值中的數字。對于文件來說,這一數字的最大值分別是6。系統不允許你在創建一個文本文件時就賦予它執行權限,必須在創建后用chmod命令增加這一權限。目錄則允許設置執行權限,這樣針對目錄來說,umask中各個數字最大可以到7。
我們只要記住 umask 是從權限中“拿走”相應的位即可。 如:umask值為022,則默認目錄權限為755,默認文件權限為644。 OK,開始設置各個賬號的創建文件默認權限:
su root password...... su a umask 0002 su root password...... su b umask 0002重新 push ,一切OK~
2013年12月31日補記
上次弄好后又出問題了,登錄 a 用戶一看,發現 umask 又輸出 0022,也就是說,恢復了默認的設置。 原來 umask 命令只是本次登錄有效,注銷之后就失效了。 解決辦法:把
umask 0002這一行添加到 .bash_profile 文件里去,這樣用戶每次登錄就可以執行了。
轉載于:https://my.oschina.net/lujian863/blog/188334
總結
以上是生活随笔為你收集整理的Git 提交失败提示无写入权限与 Linux 下创建文件的默认权限的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 让年轻程序员少走弯路的14个忠告
- 下一篇: SQL导出数据到EXCEL的问题