Mysql

ubuntu,文件夾權限,drwxrwx—,組中的php使用者,無法創建文件

  • December 15, 2016

我被困住了,需要幫助了解組成員的文件創建權限。


在php中,我想在mysql擁有的文件夾中打開/創建一個文件:mysql(用於將數據導入mysql)

文件夾-ld

drwxrwx--- 2 mysql mysql 4096 Dec 14 14:33 /var/lib/mysql-files

php作為使用者www-data執行

我將“www-data”使用者添加到“mysql”組中

sudo usermod -a -G groupName userName 

已驗證

sudo groups www-data
   www-data : www-data mysql

看來我的 php 使用者帳戶“www-data”通過組成員資格對該文件夾具有寫入權限,但我收到錯誤 13“權限被拒絕”。


在輸入這個問題時,一個類似的問題(https://serverfault.com/a/534000/65092

有一個答案是父文件夾(/var 和 /var/lib)需要對使用者或組具有“x”權限,我理解這意味著:

php 使用者 ‘www-data’ 需要能夠查看 /var 內部,讀取 /lib ,讀取 /mysql-files 。

/var = drwxr-xr-x 16 root root 
/var/lib = drwxr-xr-x 62 root root 

看來這已經啟用。


有什麼建議或意見嗎?謝謝。

解決方案:

我應用了邁克建議的連結解決方案

sudo chmod g+s /var/li/mysql-files

(這應該將任何新創建的文件的組 ID 設置為其父文件夾的組),但我仍然無法使用 php.ini 在該文件夾中創建文件。

進一步閱讀,我了解到權限是在登錄後應用的(當然是呃),但是由於使用者 www-data 沒有密碼並且無法登錄,我需要重新啟動伺服器,看看新的權限是否會生效.

接下來,我從終端通過 php 測試了文件創建,但仍然無法正常工作。我很快意識到 php 的 cli 是從終端上的使用者帳戶啟動的,因此它沒有以使用者 www-data 的身份執行,因此權限被拒絕。我從終端啟動 php 以在使用者 www-datasudo -u www-data php -a和 Viola 下執行!該文件已創建。

創建後檢查文件權限,所有者是www-data,組已正確設置為其父文件夾的組,但未設置寫入權限。進一步閱讀有關 umask 導致我使用 sudo setfacl -d -m group:mysql:rwx /var/lib/mysql-files (設置訪問控制列表以啟用對在文件夾中創建的新文件的組的寫權限。看來文件夾的寫權限已經為組啟用,所以我不確定為什麼需要這個額外的步驟。)

通過以使用者“www-data”身份執行 php 的命令行的進一步測試。

通過了使用完整 php 腳本的測試。

謝謝!

引用自:https://serverfault.com/questions/820761