Ubuntu

更改使用者文件的權限以自動創建 Apache VirtualHost

  • December 7, 2018

我目前有一台小型 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

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