ubuntu,文件夾權限,drwxrwx—,組中的php使用者,無法創建文件
我被困住了,需要幫助了解組成員的文件創建權限。
在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-data
sudo -u www-data php -a
和 Viola 下執行!該文件已創建。創建後檢查文件權限,所有者是www-data,組已正確設置為其父文件夾的組,但未設置寫入權限。進一步閱讀有關 umask 導致我使用
sudo setfacl -d -m group:mysql:rwx /var/lib/mysql-files
(設置訪問控制列表以啟用對在文件夾中創建的新文件的組的寫權限。看來文件夾的寫權限已經為組啟用,所以我不確定為什麼需要這個額外的步驟。)通過以使用者“www-data”身份執行 php 的命令行的進一步測試。
通過了使用完整 php 腳本的測試。
謝謝!