Ubuntu
更改使用者文件的權限以自動創建 Apache VirtualHost
我目前有一台小型 Ubuntu Server 12.04 機器(測試環境),創建了大約 3 個非 root 使用者。每個使用者在他們的…下都有自己的
public_html
目錄,home
從而允許他們將多個應用程序部署為命名的虛擬主機。每個使用者都屬於 Apachewww-data
組,設置如下:sudo usermod -a -G www-data [username] sudo chown -R [username]:www-data /home/[username]/public_html sudo chmod 2750 /home/[username]/public_html
現在,作為 root 使用者,我正在創建一個 bash 腳本,該腳本將自動在提示使用者下為 VirtualHost 創建文件夾,
public_html
並在/etc/apache2/sites-available/
. 腳本(使用 執行sudo
)將提示輸入使用者 ($uzer
) 和所需的虛擬主機名 ($vhost
)。到目前為止,在執行了一些檢查之後,我最終得到了以下內容……mkdir -vp /home/$uzer/public_html/$vhost mkdir -vp /home/$uzer/public_html/$vhost/www mkdir -vp /home/$uzer/public_html/$vhost/logs mkdir -vp /home/$uzer/public_html/$vhost/backups
我需要更改這些新創建的文件夾的所有權,所以我不確定是否應該執行以下操作:
chown -vR $uzer:www-data /home/$uzer/public_html/$vhost chmod 2750 /home/$uzer/public_html/$vhost
我的問題:
- 我的文件夾結構是否正確/理想?
- 我知道我使用了遞歸 (
-R
) 選項,但我應該對$vhost/www
,$vhost/logs
和重複相同的操作$vhost/backups
嗎?- 我是否認為上面的 chmod 可能是多餘的?
- 有沒有辦法可以
mkdir
以使用者身份執行命令$uzer
?
問:我的文件夾結構是否正確/理想?
A:文件夾結構看起來不錯。
問:我知道我使用了遞歸 (-R) 選項,但我是否應該重複相同的 $ vhost/www, $ vhost/logs 和 $vhost/backups?
A:在那些目錄上執行它是多餘的
問:我認為上面的 chmod 可能是多餘的是否正確?
是的,從技術上講,這是多餘的,因為創建目錄的初始 sudo 正在設置“設置組 ID 位”,但設置該位(2750 中的 2)並不能保證。我已經看到使用者將文件移動到目錄中或意外更改文件組的目錄,所以我會留下它。
有沒有辦法可以以使用者 $uzer 的身份執行 mkdir 命令?
root$ su -u $user -c "mkdir ..."
您還可以使用
mkdir --mode=...
開關在 /www、/log 和 /backups 的 chmod 上保存一個步驟。例如
mkdir -vp --mode=2750 /home/$uzer/public_html/$vhost mkdir -vp --mode=2750 /home/$uzer/public_html/$vhost/www mkdir -vp --mode=2750 /home/$uzer/public_html/$vhost/logs mkdir -vp --mode=2750 /home/$uzer/public_html/$vhost/backups