您好,登錄后才能下訂單哦!
這篇文章主要介紹了nginx、php-fpm和mysql的用戶權限如何配置的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇nginx、php-fpm和mysql的用戶權限如何配置文章都會有所收獲,下面我們一起來看看吧。
通常情況下,我們運行web應用的服務器有CentOS、Ubuntu、Debian等等的Linux發行版本。這時候,構成服務架構所必須的Nginx、php和MySQL等應用的權限控制就顯得非常重要,各個服務對代碼目錄的權限要求各不相同,缺少某些權限會造成服務無法讀寫或運行的錯誤,降低了權限要求又會存在被入侵修改的隱患。
PHP的運行框架通常都是結合Nginx組成LNMP或者結合Apache組成LAMP的架構,這里用Nginx作為例子講述一下Nginx服務運行所需要的權限。
我們知道,Nginx本身不能解析PHP的語法,所以Nginx對于靜態文件(如HTML等)會直接解析返回結果,但是對于PHP的文件,Nginx會轉交給PHP的解釋器php-fpm進行處理,處理完后再返回響應給客戶端瀏覽器。
因此,我們代碼目錄下需要統一Nginx和php的服務所需權限。
①如果統一使用root用戶,則一般游客賬戶無法訪問應用,而nginx配置成以root運行的話會存在很大的安全隱患,一旦被攻擊就會被獲取root身份進行系統的一切操作。
②而如果統一將代碼目錄權限全部設置為rwxrwxrwx,則存在用戶直接通過瀏覽器修改代碼目錄的隱患。
所以最好的辦法就是統一歸類到一個新的用戶組里面,通過給該用戶組分配Nginx和php運行必要的權限,來實現對web應用的權限目錄管理。通常情況下,許多團隊都會把這個用戶組取名www,由www用戶來統一管理代碼目錄權限。
我們可以看到Nginx的配置文件nginix.conf
里面劃分的運行權限就是配置到了www用戶下,因此Nginx的子進程也是由www用戶執行,可以通過ps aux | grep nginx
來查看:
可以看到nginx的主進程是root,其余子進程均是www的用戶
nginx.conf的配置:
同樣的,php的運行方式也是由主進程root運行,在子進程池(pool)里面配置由www用戶執行,具體配置在php根目錄下的etc\php-fpm.conf
下,添加兩行:
user = www group = www
即可,同樣用ps aux | grep php
可以查看進程使用的用戶身份:
通過ps aux | grep mysql
可以看到MySQL服務是運行在mysql用戶下的,該服務只需要我們在php代碼連接mysql時帶上mysql的用戶名密碼即可,不需要統一為www,因為數據層需要與業務邏輯層隔離開,保證底層數據的安全。mysql的授權主要是在mysql服務內新增用戶和劃分權限,用來控制php不同業務以不同權限范圍的身份去連接,確保數據安全。
nginx配置:
user www www;
php-fpm:
user = www group = www
目錄:
drwxr-xr-x 就是755
關于“nginx、php-fpm和mysql的用戶權限如何配置”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“nginx、php-fpm和mysql的用戶權限如何配置”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。