天天看點

伺服器和mysql權限控制

伺服器和mysql權限控制

  今天冬至,知道公司會提早下班(4點),以為是美好的一天,咋知道搞出一點問題,中午處理故障基本沒睡 = =(慘~)

一、需求引入

  這兩天不知道什麼原因,客戶要求給線上伺服器和資料庫檢視權限。因為問他們也告訴開權限的原因,我們經理覺得不太安全,于是叫我,配置

(1)針對伺服器,程式運作目錄隻有檢視權限,其他目錄不讓看

(2)針對資料庫:隻查不讓改。

二、問題解決

  對于資料庫,昨天已經搞過,是以十拿九穩。無非就是grant個select權限給一個新開使用者。核心指令:

  因為考慮到客戶那邊經常不講武德地去掃開啟端口(害我寫了不少整改文檔。。),是以當時經理問我意見的時候,我說直接放堡壘機通路,好處有三:其一不需要讓客戶知道資料庫的登入密碼,其二能審計他們行為,最後能在安全組裡設定端口開放範圍(昨天設定的資料庫權限剛好又是在ECS搭的mysql)

伺服器和mysql權限控制

     害我中午基本沒睡的是伺服器的權限設定。第一次弄,我以為很順利~

  話說我們伺服器跑程式的賬号權限頗大(假設是ljy使用者,組也是ljy),也裝了各種東西,如nginx之類的。給客戶隻看的目錄,這裡假設是:/home/ljy/app/service。

  當時查到有個setfacl的指令可以給目錄添加acl規則。本來想慢慢研究的,經理說很急,客戶等着。隻能用心裡有點譜的 chmod 和 usermod去搞。

思路就是:

(1)給客戶建一個登入賬号,假設是:program

(2)将program使用者添加到ljy組。

(3)授權。先貼上關鍵指令

  正常來說,program使用者隻能看到自己家目錄:/home/program/  下面東西,現在需要進去ljy家目錄,需要給/home/ljy 設定至少 750 權限。如果不給x權限,無法進去 /home/ljy目錄下。其他目錄因為是不讓program使用者看的,740和700都可以。隻看權限的目錄 750 可以了。

給大家看看效果,再說坑

gst(打馬賽克了,大家将就看) 和 nginx目錄都是744,pe目錄是755。嘗試去看gst目錄會報錯:Permission denied。pe目錄進去删除或建立什麼,都會報錯。隻能看!

伺服器和mysql權限控制
伺服器和mysql權限控制

    其實到這裡基本就完成任務。然後我開始作死了。

  嘗試用program使用者,去根目錄做騷操作,發現有些目錄可以做壞事哦(沒錯,是我之前開大了權限,事後我發現其實你單獨改回來不好,幹嘛全部目錄一起設定)。于是為了安全起見,就閉眼運作了:

  想着這樣除root使用者其他使用者啥事都搞不了。運作到一半,ssh自動斷開了,可幸的是上面跑着的服務端口能通。telnet那台伺服器的ssh端口和其他同網段機器ssh過去,都連不上。以為又要開單使用者模式改回來,還要停業務重新開機機器,還要發公告,我已經腦補了晚上要加班重新開機機器進單使用者了。

  當時吓壞了,邊提工單邊查資料。幸好阿裡提供了VNC遠端連接配接,不受ssh端口安全組限制(https://help.aliyun.com/document_detail/25433.htm)。要是天翼的話,沒得救 = =,估計要被批鬥了(經常想着這種高危職業,應該為自己買份保險。。)

  原來,/etc/ssh 目錄下面權限有着非常嚴格的設定。改錯會導緻無法ssh連接配接。

伺服器和mysql權限控制

   設定成755,或者其他權限就ssh連不上了。

 

伺服器和mysql權限控制

 還有這玩意,得 chmod 777 /dev/null

伺服器和mysql權限控制

 這個/tmp 權限,要:chmod -R 1777 /tmp

伺服器和mysql權限控制

  / 根分區後來的權限設定,我對着另一台伺服器改了第一層目錄了,至于有沒有遺漏(報錯再設定回來權限吧),所幸不需要重新開機機器,不然,呵呵= = 。

(冬至也是累死人,完~)