Ubuntu

如果我希望 /var/www 中的文件歸 www-data 所有,我應該如何 rsync 文件?

  • June 26, 2012

我已經設置了一個新的 ec2 ubuntu 盒子並安裝了 apache 和 php5。預設情況下,您使用具有權限的ubuntu使用者登錄該框。sudo

我相信 apache 執行為rootphp5 執行為www-data.

我認為我希望將所有文件都設置/var/wwwwww-data:www-data,並將文件夾設置為 755 並將文件設置為 644 - 除非有問題。

事情像這樣執行良好,但我的問題是,當我rsync從筆記型電腦向伺服器送出文件時,它會更改它們的所有權(並添加新文件)為ubuntu:admin

我瀏覽了rsync手冊並蒐索了Google,我看到了這樣的語法:

rsync -avzcO (source) (destination) --owner=www-data --group=www-data

--owner但是,如果 rsync 是以超級使用者身份執行的,那麼它似乎--group不帶參數,而是用於強制遠端文件具有與本地文件系統上相同的所有者。

所以,我還沒有找到使用 rsync 在 rsync 期間設置遠端使用者和文件組的解決方案。

我究竟做錯了什麼?

想法:

  • 也許我在 /var/www 中的文件應該只屬於ubuntu:admin?
  • 也許我的 rsync 語法錯誤
  • 我想我可以作為www-data使用者 rsync 但這似乎不是一個好主意
  • 我可以像在共享主機上那樣使用 suPHP,但這似乎有點麻煩

您不希望它們歸 www-data 所有。Apache 最初以 root 身份執行,然後放棄對 www-data 的權限。您不希望擁有 apache 程序的使用者可以寫入您的 Web 內容。這會產生安全漏洞。

如果 Apache 遭到破壞,理想情況下 www-data 使用者將無權訪問任何系統。這是最安全的配置。如果 Web 內容歸 www-data 所有,如果 Apache 被破壞,那麼攻擊者可以覆蓋您的任何 Web 內容。

您的 Web 內容應歸普通使用者所有(不包括nobody,www-dataroot)。只有需要被 Apache 寫入的東西才應該歸 www-data 所有。

引用自:https://unix.stackexchange.com/questions/41687