Ubuntu
如果我希望 /var/www 中的文件歸 www-data 所有,我應該如何 rsync 文件?
我已經設置了一個新的 ec2 ubuntu 盒子並安裝了 apache 和 php5。預設情況下,您使用具有權限的
ubuntu
使用者登錄該框。sudo
我相信 apache 執行為
root
php5 執行為www-data
.我認為我希望將所有文件都設置
/var/www
為www-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-data
和root
)。只有需要被 Apache 寫入的東西才應該歸 www-data 所有。