允許使用者透過 ssh 存取 /var/www/

允許使用者透過 ssh 存取 /var/www/

上下文:我正在為特定的儲存庫建立一個 gitolite3 掛鉤,其中包含我網站的一些邏輯和 css foo。

所以本質上發生的是

下面的內容/var/www/nginx/看起來像是:

drwxrwxr-x. nginx   git   system_u:object_r:httpd_sys_content_t:s0 foo

.git很特別:

drwxrwxr-x. git     git   system_u:object_r:httpd_sys_content_t:s0 .git

為了確保所有子目錄都具有正確的存取權限,我使用了:

chown nginx:git -Rf ./webfoo
chmod g+rw -Rf ./webfoo
chown git:git -Rf ./webfoo/.git

[這只是獎勵,你可以跳過這個。

gitolite3 鉤子

#!/bin/bash
cd /var/www/nginx/webfoo || exit
unset GIT_DIR
echo "where: $(pwd)"
git pull -f origin deploy-me-branch

remote: where: /var/www/nginx/webfoo
remote: From /home/gitolite/repositories/webfoo
remote:    c092ee2..07274a6  master     -> origin/master
remote: error: unable to unlink old '.gitignore' (Permission denied)
remote: error: unable to unlink old 'templates/fancypost.html' (Permission denied)
remote: error: unable to unlink old 'templates/layout.html' (Permission denied)

/var/log/audit/audit.log不包含任何存取拒絕。


更新:即使本地登入也git不起作用。所以這可能是與 SELinux/檔案安全上下文無關


為什麼這不能像我預期的那樣運作?

答案1

它不起作用的幾個原因:

  • 使用者 git應該是成員團體 git
  • 不要以不同的使用者身分拉取/重新設定基準,這.git/*可能會改變所有權,尤其是在以其他使用者身分登入時root

一個更優雅的解決方案是使用(作為使用者)monit監視儲存庫,這樣我也可以重新啟動以及可執行的 webapp/檔案是否發生更改。git~/repositoriesnginxuwsgi

相關內容