轉:nginx睦刃、php-fpm砚嘴、mysql用戶權限解析

這篇文章我們就特別來講解下,nginx涩拙、php-fpm 以及 mysql 運行在各個用戶下的配置际长。

先來做個說明:nginx本身不能處理PHP,它只是個web服務器。當接收到客戶端請求后忠怖,如果是php請求攀圈,則轉發(fā)給php解釋器處理,并把結果返回給客戶端如绸。如果是靜態(tài)頁面的話,nginx自身處理旭贬,然后把結果返回給客戶端怔接。

Nginx下php解釋器使用最多的就是fastcgi。一般情況nginx把php請求轉發(fā)給fastcgi(即 php-fpm)管理進程處理稀轨,fastcgi管理進程選擇cgi子進程進行處理扼脐,然后把處理結果返回給nginx。

在這個過程中就牽涉到兩個用戶奋刽,一個是nginx運行的用戶瓦侮,一個是php-fpm運行的用戶艰赞。如果訪問的是一個靜態(tài)文件的話,則只需要nginx運行的用戶對文件具有讀權限或者讀寫權限肚吏。

而如果訪問的是一個php文件的話方妖,則首先需要nginx運行的用戶對文件有讀取權限,讀取到文件后發(fā)現(xiàn)是一個php文件罚攀,則轉發(fā)給php-fpm党觅,此時則需要php-fpm用戶對文件具有有讀權限或者讀寫權限。

首先坞生,我們來查看nginx運行在什么用戶下仔役。使用ps命令進行查看,如下:

img

通過上圖我們可以很明顯的看到nginx的父進程是運行在root用戶下的是己,而子進程時運行在nobody用戶下又兵,而且只有一個子進程。這個和我們在nginx的配置文件中卒废,配置的一致沛厨。如下:

img

注意:nginx如果沒有配置運行用戶的話,默認是使用nobody用戶運行摔认。使用nobody運行nginx安全性是比較高的逆皮。

以上是nginx的運行用戶。

現(xiàn)在我們來查看下php-fpm的運行用戶参袱,使用ps命令电谣。如下:

img

通過上圖,我們可以看到php-fpm的父進程運行在root用戶下抹蚀,而子進程全部運行在apache用戶下剿牺。

我們再來看看mysql數(shù)據(jù)庫運行在哪個用戶下面,使用ps命令查看环壤。如下:

img

通過上圖我們可以看到晒来,mysql運行在mysql用戶下,而且其PID確實和保存在/var/run/mysqld/mysqld.pid中的一樣郑现。

以上就是nginx湃崩、php-fpm、mysql的運行在各個用戶下的情況接箫。

我們來開始測試實際生產(chǎn)環(huán)境中的配置攒读,在《爛泥:使用nginx利用虛擬主機搭建WordPress博客》文章中我們已經(jīng)配置好了,虛擬主機a.ilanni.com辛友。如下:

img

我們來看看a.ilanni.com虛擬主機根目錄的所屬用戶及用戶組整陌,如下:

img

在實際生產(chǎn)環(huán)境中,我們一般的配置是nginx與php-fpm都運行在nobody用戶下,而且網(wǎng)站的根目錄也要屬于nobody用戶泌辫,并且根目錄對nobody用戶具有所有權限。

這樣配置是最安全的九默,因為nobody用戶最安全震放。即使黑客攻破了網(wǎng)站,但是也不能登錄系統(tǒng)驼修。

現(xiàn)在我們先不進行任何配置殿遂,使用各自的默認用戶發(fā)表一篇文章來看看實際的效果。

對于wordpress發(fā)表文章乙各,我一般都是通過windows live writer這個博客客戶端發(fā)表的墨礁。

我們現(xiàn)在還是通過這個客戶端來發(fā)表一篇只有文字沒有圖片的文章,如下:

img
img

通過上圖耳峦,我們可以很明顯的看到恩静,這篇測試文字的文章已經(jīng)成功發(fā)布。

接下來我們再來測試一篇圖文并茂的文章蹲坷,如下:

img
img

通過上圖驶乾,我們可以看到帶有圖片的文章是沒有辦法發(fā)布的。windows live writer已經(jīng)提示出錯循签。

為什么帶有圖片的文章就不能發(fā)布呢级乐?

其實這個問題很簡單,文章中的圖片需要先上傳到網(wǎng)站的根目錄下县匠,然后才能正常訪問》缈疲現(xiàn)在php-fpm運行在apache用戶下,而問題是apache用戶對虛擬主機a.ilanni.com根目錄沒有訪問權限乞旦,更沒有寫入權限贼穆。

所以就會出現(xiàn)上述的問題,windows live writer不可以發(fā)布帶有圖片的文章杆查。

那么如何解決這個問題呢扮惦?

其實很簡單的,我們在前面都已經(jīng)說了亲桦。nginx涉及到兩個用戶崖蜜,一個是nginx運行的用戶,一個是php-fpm運行的用戶客峭。如果訪問的是一個靜態(tài)文件豫领,則只需要nginx運行的用戶對文件具有讀取權限。

而如果訪問的是一個php文件舔琅,則首先需要nginx的運行用戶對文件有讀取權限等恐,讀取到文件后發(fā)現(xiàn)是一個php文件,則轉發(fā)給php-fpm,此時則需要php-fpm用戶對文件具有讀取權限课蔬。

我們現(xiàn)在需要做的就是統(tǒng)一 nginx 與 php-fpm 運行用戶為 nobody囱稽,然后把nginx的虛擬主機a.ilanni.com網(wǎng)站根目錄對nobody用戶及nobody用戶組具有所有權限。

nginx已經(jīng)運行在nobody用戶下二跋,我們就不進行調整了战惊。我們來調整php-fpm運行用戶,php-fpm我們是通過yum方式進行安裝的扎即。而且使用的還是默認配置吞获,該配置文件為/etc/php-fpm.d/www.conf

現(xiàn)在開始編輯該文件谚鄙,修改其運行的用戶級用戶組各拷。如下:

img

編輯完畢后,重啟php-fpm闷营。如下:

img

通過上圖烤黍,我們可以看到目前php-fpm已經(jīng)運行在nobody用戶。

php-fpm運行用戶修改完畢后粮坞,我們現(xiàn)在來修改虛擬主機的根目錄用戶及用戶組蚊荣。如下:

img

虛擬主機a.ilanni.com根目錄所屬用戶及用戶組修改完畢后,也要注意修改nobody對虛擬主機a.ilanni.com根目錄的權限莫杈。

通過上圖我們可以看到互例,目前nobody用戶已經(jīng)對虛擬主機a.ilanni.com根目錄已經(jīng)具有控制權限。

以上權限修改完畢后筝闹,我們再來通過windows live writer發(fā)布圖文文章媳叨。如下:

img

通過上圖,我們可以看到关顷。該文圖文章已經(jīng)被成功的發(fā)布到wordpress中糊秆。我們再來看下,wordpress中的圖片存放位置议双。

img

以上就是nginx痘番、php-fpm、mysql在實際使用過程中用戶的配置平痰。按理說汞舱,文章到這我們就應該結束了。

但是為了更能和我們的實際生產(chǎn)環(huán)境相結合宗雇,我們來延伸下昂芜。如果說我們現(xiàn)在這個wordpress是一個項目,該項目正在開發(fā)赔蒲。而開發(fā)人員我們是沒有在linux系統(tǒng)中開通相關賬戶的泌神,只開通了一個FTP賬戶良漱。

但是開發(fā)人員又要上傳代碼和修改相關的代碼,怎么辦呢欢际?

這個就需要結合Vsftpd虛擬名用戶來進行設置母市。有關這方面的資料,可以參考我以前的文章《爛泥:vsftpd虛擬用戶與匿名用戶配合使用》损趋。

先來安裝vsftpd窒篱,使用yum方式。安裝完畢后舶沿,我們就來配置vsftpd。

具體配置后的文件內容如下:

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_file=/var/log/xferlog

xferlog_std_format=YES

idle_session_timeout=600

ftpd_banner=http.

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

listen=YES

listen_port=2121

pasv_min_port=6000

pasv_max_port=6150

userlist_enable=YES

tcp_wrappers=YES

guest_enable=YES

guest_username=nobody

pam_service_name=vsftpd

user_config_dir=/etc/vsftpd/vu_conf

virtual_use_local_privs=yes

其中 guest_enable=YES 表示啟用vsftpd虛擬用戶配并,就是所有登錄到FTP的用戶在系統(tǒng)都是虛擬用戶括荡。

guest_username=nobody 表示虛擬用戶對應的系統(tǒng)用戶為nobody用戶。

virtual_use_local_privs=yes 表示啟用vsftpd虛擬用戶溉旋,并且虛擬用戶和本地用戶有相同的權限畸冲。

pam_service_name=vsftpd 啟用vsftpd驗證。

然后再配置vsftpd虛擬用戶的目錄观腊,如下:

local_root= /ilanni/a.ilanni.com

通過上述配置后vsftpd的虛擬用戶ilanni邑闲,就已經(jīng)對nginx的虛擬主機a.ilanni.com根目錄具有完全控制權限。

從而也就達到了通過vsftpd控制項目的目的梧油。

摘自:http://ilanni.blog.51cto.com/526870/1561097

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末苫耸,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子儡陨,更是在濱河造成了極大的恐慌褪子,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件骗村,死亡現(xiàn)場離奇詭異嫌褪,居然都是意外死亡,警方通過查閱死者的電腦和手機胚股,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門笼痛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人琅拌,你說我怎么就攤上這事缨伊。” “怎么了财忽?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵倘核,是天一觀的道長。 經(jīng)常有香客問我即彪,道長紧唱,這世上最難降的妖魔是什么活尊? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮漏益,結果婚禮上蛹锰,老公的妹妹穿的比我還像新娘。我一直安慰自己绰疤,他們只是感情好铜犬,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著轻庆,像睡著了一般癣猾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上余爆,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天纷宇,我揣著相機與錄音,去河邊找鬼蛾方。 笑死像捶,一個胖子當著我的面吹牛,可吹牛的內容都是我干的桩砰。 我是一名探鬼主播拓春,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼亚隅!你這毒婦竟也來了硼莽?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤枢步,失蹤者是張志新(化名)和其女友劉穎沉删,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體醉途,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡矾瑰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了隘擎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片殴穴。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖货葬,靈堂內的尸體忽然破棺而出采幌,到底是詐尸還是另有隱情,我是刑警寧澤震桶,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布休傍,位于F島的核電站,受9級特大地震影響蹲姐,放射性物質發(fā)生泄漏磨取。R本人自食惡果不足惜人柿,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望忙厌。 院中可真熱鬧凫岖,春花似錦、人聲如沸逢净。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽爹土。三九已至甥雕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間胀茵,已是汗流浹背犀农。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留宰掉,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓赁濒,卻偏偏與公主長得像轨奄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子拒炎,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內容