nginx 反向代理 java遞歸創(chuàng)建文件及文件夾 導(dǎo)致 創(chuàng)建的文件對(duì)于nginx用戶(hù)無(wú)權(quán)限訪(fǎng)問(wèn)的問(wèn)題

  1. java上傳文件可以設(shè)置訪(fǎng)問(wèn)權(quán)限 File類(lèi)
    部分代碼
File uploadPath = new File(imgPath+path);
if(!uploadPath.exists()) {    
        uploadPath.mkdirs();
}
//Process process = Runtime.getRuntime().exec("chmod 777 -R " + uploadPath);
log.info( process.toString());
String uploadFileName = path+"/"+ getUUID()+"."+imgend;
File uploadFile = new File(imgPath+uploadFileName);
uploadFile.setExecutable(true,false);//設(shè)置可執(zhí)行權(quán)限  
uploadFile.setReadable(true,false);//設(shè)置可讀權(quán)限  
uploadFile.setWritable(true,false);//設(shè)置可寫(xiě)權(quán)限

其中java執(zhí)行shell腳本方式

Process process = Runtime.getRuntime().exec("chmod 777 -R " + uploadPath);

不知道為啥沒(méi)生效
此種方式雖然對(duì)當(dāng)前文件起作用 但是對(duì)于遞歸創(chuàng)建的文件夾并不起作用

uploadFile.setExecutable(true,false);//設(shè)置可執(zhí)行權(quán)限  
uploadFile.setReadable(true,false);//設(shè)置可讀權(quán)限  
uploadFile.setWritable(true,false);//設(shè)置可寫(xiě)權(quán)限

后來(lái)發(fā)現(xiàn) tomcat是用root用戶(hù)啟動(dòng)的,nginx也是root用戶(hù)啟動(dòng)的 查看文件夾 也是root用戶(hù)有所有權(quán)限
后來(lái)發(fā)現(xiàn)是nginx的配置問(wèn)題 nginx的worker process 用戶(hù)并非root

Nginx用戶(hù)權(quán)限

在nginx.conf文件的第一行一般是設(shè)置用戶(hù)的地方(編譯安裝nginx時(shí)的參數(shù)--user=<user>也是指定用戶(hù)的地方)嘴高,如 user www www;

如不指定默認(rèn)是nobody. 這里用戶(hù)的設(shè)置又有什么意義呢?主要是指定執(zhí)行nginx的worker process的用戶(hù)冯键,linux里所有程序都是文件,都具有權(quán)限問(wèn)題庸汗,這個(gè)指定的用戶(hù)對(duì)特定的文件有沒(méi)有權(quán)限訪(fǎng)問(wèn)或執(zhí)行惫确,就是這個(gè)用戶(hù)的意義。

先來(lái)了解一下 Nginx的用戶(hù)管理
(1) Nginx在以L(fǎng)inux service腳本啟動(dòng)時(shí)夫晌,通過(guò)start-stop-domain啟動(dòng)雕薪,會(huì)以root權(quán)限運(yùn)行daemon進(jìn)程。
(2) 然后daemon進(jìn)程讀取/etc/nginx/nginx.conf文件中的user配置選項(xiàng)晓淀,默認(rèn)這里的user=nginx所袁,也就是用nginx用戶(hù)啟動(dòng)worker process。403錯(cuò)誤就是因?yàn)閚ginx用戶(hù)沒(méi)有權(quán)限訪(fǎng)問(wèn)我當(dāng)前開(kāi)發(fā)用的用戶(hù)目錄凶掰,/home/dean/work/resources燥爷。
解決方法是將user=nginx替換成root蜈亩,然后重新啟動(dòng)nginx,可以了前翎。
其他方法也試過(guò)稚配,比如給/home/dean/work/resources目錄設(shè)置777權(quán)限,比如將nginx用戶(hù)加入root組港华,都不行道川。所以當(dāng)開(kāi)發(fā)的時(shí)候,就用user=root配置吧立宜。至于產(chǎn)品環(huán)境下冒萄,resouces目錄完全可以放到nginx用戶(hù)目錄下,所以問(wèn)題不大橙数。

舉例2:訪(fǎng)問(wèn)速度慢 nobody用戶(hù)導(dǎo)致
nobody 是系統(tǒng)用戶(hù),是一個(gè)不能登陸的帳號(hào)尊流,一個(gè)特殊用途的用戶(hù) ID ,一些服務(wù)進(jìn)程如apache,aquid等都采用一些特殊的帳號(hào)來(lái)運(yùn)行灯帮,比如nobody,news,games等等崖技。一般來(lái)說(shuō) uid < 500 的都是系統(tǒng) ID 。
Linux 系統(tǒng)為了安全钟哥,很多操作和服務(wù)的運(yùn)行都不是運(yùn)行在 root 用戶(hù)下面的迎献,而是一個(gè)專(zhuān)用的 ID ,這個(gè) ID 一般就是 nobody 腻贰,這樣就可以把每個(gè)服務(wù)運(yùn)行的情況隔離出來(lái)忿晕。保證不會(huì)因?yàn)榉?wù)器程序的問(wèn)題而讓服務(wù)器程序成了黑客的直接操作源(黑客拿下了服務(wù)器程序,也僅僅是 nobody 用戶(hù)而不是 root 用戶(hù))银受。同時(shí)也不會(huì)影響其他用戶(hù)的數(shù)據(jù)。
服務(wù)器程序提權(quán)有專(zhuān)用的辦法來(lái)防止惡意使用的鸦采。
除了 nobody 宾巍,常見(jiàn)的還有 ftp 、ssh 什么的渔伯。有的不是用來(lái)跑服務(wù)顶霞,而是用來(lái)占坑,主要是用用戶(hù)組的權(quán)限管理進(jìn)行權(quán)限設(shè)置锣吼,這個(gè)時(shí)候會(huì)有一個(gè)占坑用的同名 ID 加入到用戶(hù)組选浑。這種情況好像主要是為了兼容掺出。
問(wèn)題描述:

上午業(yè)務(wù)人員反映匿级,系統(tǒng)響應(yīng)很慢秩冈,界面要刷新很久才出得來(lái)棍厂。查后臺(tái)也沒(méi)有報(bào)什么錯(cuò)慎菲,我們系統(tǒng)是用nginx做負(fù)載均衡爸吮。慣性地不走負(fù)載均衡而直接訪(fǎng) 問(wèn)單節(jié)點(diǎn)應(yīng)用钙态,發(fā)現(xiàn)響應(yīng)很快述呐,很正常。初步定位問(wèn)題出在nginx上疹吃,然后查nginx日志蹦疑,發(fā)現(xiàn)有很多錯(cuò)誤,錯(cuò)誤中有“13: Permission denied”這個(gè)信息萨驶,明顯是權(quán)限問(wèn)題歉摧,很奇怪,之前運(yùn)行都很正常啊腔呜。后來(lái)一問(wèn)才知道叁温,維護(hù)人員做了操作。

系統(tǒng)上nginx安裝時(shí)使用的是root用戶(hù)育谬,也是用root用戶(hù)啟動(dòng)的券盅,所以要修改配置的時(shí)候需要使用root用戶(hù),管理上不方便膛檀,所以維護(hù)人員 心血來(lái)潮修改了nginx的權(quán)限(后來(lái)知道他是使用這個(gè)命令修改的權(quán)限chown -R user:group $nginxdir)锰镀。就是將nginx的用戶(hù)和組都換掉了,但是這樣為什么會(huì)造成“響應(yīng)慢”呢咖刃?

問(wèn)題原因及解決:

前面提到在linux上有些應(yīng)用程序的一些進(jìn)程會(huì)默認(rèn)使用nobody這個(gè)用戶(hù)來(lái)啟動(dòng)泳炉,以保安全。nginx有兩種進(jìn)程嚎杨,除主進(jìn)程之外的工作進(jìn)程都 是用nobody這個(gè)用戶(hù)啟動(dòng)的(nginx工作進(jìn)程的數(shù)量使用worker_processes這個(gè)參數(shù)來(lái)設(shè)定)花鹅。而工作進(jìn)程要訪(fǎng)問(wèn)nginx下這兩個(gè) 目錄client_body_temp和proxy_temp(這兩個(gè)目錄按我的理解是緩存一些靜態(tài)文件,比如圖片或者css文件什么的枫浙,以提高 nginx訪(fǎng)問(wèn)速度)刨肃,權(quán)限變更后,造成工作進(jìn)程訪(fǎng)問(wèn)不了這兩個(gè)目錄下的內(nèi)容箩帚,造成某些圖片和連接打不開(kāi)真友,就像響應(yīng)很慢一樣。將權(quán)限變更一下就OK了紧帕。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末盔然,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子是嗜,更是在濱河造成了極大的恐慌愈案,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鹅搪,死亡現(xiàn)場(chǎng)離奇詭異站绪,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)丽柿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)崇众,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)掂僵,“玉大人,你說(shuō)我怎么就攤上這事顷歌∶膛睿” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵眯漩,是天一觀(guān)的道長(zhǎng)芹扭。 經(jīng)常有香客問(wèn)我,道長(zhǎng)赦抖,這世上最難降的妖魔是什么舱卡? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮队萤,結(jié)果婚禮上轮锥,老公的妹妹穿的比我還像新娘。我一直安慰自己要尔,他們只是感情好舍杜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著赵辕,像睡著了一般既绩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上还惠,一...
    開(kāi)封第一講書(shū)人閱讀 51,190評(píng)論 1 299
  • 那天饲握,我揣著相機(jī)與錄音,去河邊找鬼蚕键。 笑死救欧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的锣光。 我是一名探鬼主播颜矿,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼嫉晶!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起田篇,我...
    開(kāi)封第一講書(shū)人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤替废,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后泊柬,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體椎镣,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年兽赁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了状答。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冷守。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖惊科,靈堂內(nèi)的尸體忽然破棺而出拍摇,到底是詐尸還是另有隱情,我是刑警寧澤馆截,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布充活,位于F島的核電站,受9級(jí)特大地震影響蜡娶,放射性物質(zhì)發(fā)生泄漏混卵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一窖张、第九天 我趴在偏房一處隱蔽的房頂上張望幕随。 院中可真熱鬧,春花似錦宿接、人聲如沸赘淮。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)拥知。三九已至,卻和暖如春碎赢,著一層夾襖步出監(jiān)牢的瞬間低剔,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工肮塞, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留襟齿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓枕赵,卻偏偏與公主長(zhǎng)得像猜欺,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拷窜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容