使用者/群組權限,它們如何運作?

使用者/群組權限,它們如何運作?

我正在設定我的網站,並且需要移動一些文件。我創建了一個簡單的 PHP 腳本,其中涉及 mkdir()、copy() 等內容......但我收到權限錯誤。

將受影響的資料夾設定為 777 後,一切正常,但在我的舊網站上,我設定為 755。

如果我在 Plesk 中的使用者是 Johnnie,而文件上的使用者是 Johnnie(且群組是 psacln),PHP 腳本是否應該具有存取權限?如果沒有,我需要對使用者進行什麼​​設定才能讓我的瀏覽器能夠移動檔案?

答案1

你所說的訪問是什麼意思? - 查看檔案屬性; - 開啟檔案進行讀取; - 開啟檔案進行寫入; - 開啟檔案進行讀取/寫入; - 開啟檔案以執行。

請注意,PHP 應用程式中的使用者名稱與 Unix 使用者不同,即使它們具有相同的名稱。

請注意,apache/php 是以 apache、www、www-data、nobody... 使用者身分執行的。這是在 apache 配置中配置的。找到這個:

egrep -r '^User|^Group' /etc/{apache*,http*}

在進行任何更改之前運行備份。

找到您的使用者和 apache 使用者所屬的公共群組。如果沒有創建一個。

將 DocumentRoot 中的檔案和資料夾群組變更為此群組:

chown -R myuser:commongroup /var/www/

更改資料夾的 SUID,以便新檔案歸該群組所有:

find /var/www/ -type d -print0|xargs -0r chmod g+rxs
chmod -R u+r,g+r,o= /var/www/

對於您想要授予 PHP 寫入權限的資料夾和文件,請執行以下操作:

chmod g+w /var/www/folder/subfolder   /var/www/folder/file.txt

答案2

如果您透過 cgi 或 mod-php 使用 php,而沒有額外的修補程式/模組來處理權限,那麼您的 php 腳本可能正在使用 Web 伺服器的帳戶執行。這通常是 www-data、nobody 或其他一些非 root 帳號。

您可能需要將執行 Web 伺服器的使用者新增至群組中,或建立包含 Web 伺服器和任何其他需要存取的使用者的群組。

相關內容