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

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

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

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

我認為我希望所有文件都/var/www被 chown'ed 為www-data:www-data,文件夾設置為 755,文件設置為 644 - 除非有問題。

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

我已經閱讀了rsync手冊並蒐索了 Google,我看到瞭如下語法:

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

--owner然而,和似乎--group不帶參數,而是用於強制遠端檔案具有與本機檔案系統相同的擁有者(如果以超級使用者身分執行 rsync)。

因此,我還沒有找到使用 rsync 的解決方案來在 rsync 期間設定遠端使用者和檔案群組。

我究竟做錯了什麼?

想法:

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

答案1

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

如果 Apache 被破壞,理想情況下 www-data 使用者將無法存取任何系統。這是最安全的配置。如果 Web 內容歸 www-data 所有,如果 Apache 被破解,那麼攻擊者就可以覆寫您的任何 Web 內容。

您的網路內容應由一般使用者擁有(這不包括nobody,www-dataroot)。只有那些需要可由 Apache 寫入的內容應歸 www-data 所有。

相關內容