Linux使用者權限問題

Linux使用者權限問題

每次我從“eclipse”創建一個新檔案時,我需要運行這兩行程式碼來獲得讀取/寫入權限:

chmod -R 775 /var/www/folder/filename.extension

和/或

sudo chown -R www-data:www-data /var/www

而且,如果我將一些文件複製到該伺服器資料夾上,並從瀏覽器 URL 存取它,例如:

localhost/folder/filename.extension

我收到 Apache 伺服器的權限錯誤。

難道就沒有辦法讓我擺脫這個問題嗎?

*筆記:move_uploaded_file()當我的函數嘗試將檔案移至/var/www/MyProject/目錄時,會發生主要錯誤。

答案1

使用 SGID 位元。

執行一次,然後忘記這個問題:

chmod g+s /var/www/folder

您可能想要對所有子資料夾執行相同的操作:

find /var/www/folder -type d | xargs chmod g+s

並且,以防萬一:

find /var/www/folder -type d | xargs chgrp www-data

/var/www/folder/現在,無論如何,在其下方建立的所有檔案都將屬於擁有包含資料夾的群組。這將允許您建立任何文件或資料夾,而不必擔心它們不屬於,例如www-數據組,這就是你想要的。

請注意,這僅適用於在目錄中建立的檔案或資料夾。如果檔案在其他地方建立並移至目錄樹中,您仍然需要手動變更所有權。

例子:

# Create folder that belongs to www-data group
$ mkdir test
$ chown john.www-data test
$ ls -l

drwxr-xr-x 2 john www-data 4096 Jun 17 10:14 test

# Create a file, check the ownership
$ touch test/file1
$ ls -l test/

-rw-r--r-- 1 john users       0 Jun 17 10:16 file1

# Set the SGID bit
$ chmod g+s test
$ ls -l

drwxr-sr-x 2 john www-data 4096 Jun 17 10:19 test

# Create a file, check the ownership
$ touch test/file2
$ ls -l test/

-rw-r--r-- 1 john users       0 Jun 17 10:18 file1
-rw-r--r-- 1 john www-data    0 Jun 17 10:19 file2

更多資訊這裡

答案2

您可以使用預設 ACL 為新檔案和目錄指派使用者和群組權限:

setfacl -dR u:domain:rwx,g:www-data:rwx /var/www/folder/filename.extension

答案3

首先,我想指出的是,提問時應該更具體;例如,您使用什麼作業系統、Linux 發行版,因為這可以大大加快尋找解決方案的過程。話雖如此,您可以透過更改特定資料夾的所有權聯合應用中心(使用者存取控制)遞歸地,如下所示:

chown domain:www-data /var/www/folder -chR

chmod 775 /var/www/folder -cR

筆記:透過排除尾部斜杠(/)在資料夾名稱末尾,您的變更將套用到該資料夾及其所有內容。


至於在瀏覽器中存取文件(腳本?)時出現的權限錯誤,您必須確保您的用戶具有正確的權限來提供apache.應該透過編輯/etc/httpd/*/httpd.conf文件並添加以下內容來解決這個問題:

User domain
Group www-data

相關內容