更改使用者檔案的權限以自動建立 Apache VirtualHost

更改使用者檔案的權限以自動建立 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

答案1

Q:我的資料夾結構正確/理想嗎?

答:資料夾結構看起來不錯。

Q:我知道我已經使用了遞歸 (-R) 選項,但我是否應該對 $vhost/www、$vhost/logs 和 $vhost/backups 重複相同的操作?

答:在這些目錄上運行它是多餘的

Q:我認為上面的 chmod 可能是多餘的,這樣的想法正確嗎?

是的,從技術上講,它是多餘的,因為創建目錄的初始 sudo 正在設定“設定群組 ID 位元”,但設定該位元(2750 中的 2)並不能保證。我見過這樣的目錄,用戶要么將文件移動到目錄中,要么不小心更改了文件的群組,所以我會保留它。

有沒有辦法可以以使用者 $uzer 身分執行 mkdir 指令?

root$ su -u $user -c "mkdir ..."

您也可以使用開關來節省 /www、/log 和 /backups 的 chmod 操作步驟mkdir --mode=...

例如

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

答案2

  1. 實際上,您使用的資料夾結構並不重要。
  2. 如果您在 chown 中使用-R選項,它只會影響執行該命令時存在的檔案和目錄。
  3. chmod不可以,因為如果您手動進行任何更改,您始終必須使用命令來更改權限。
  4. 您可以要求/etc/sudoersfile 允許 $user 使用mkdir指令建立任何目錄。

相關內容