伺服器和mysql權限控制
今天冬至,知道公司會提早下班(4點),以為是美好的一天,咋知道搞出一點問題,中午處理故障基本沒睡 = =(慘~)
一、需求引入
這兩天不知道什麼原因,客戶要求給線上伺服器和資料庫檢視權限。因為問他們也告訴開權限的原因,我們經理覺得不太安全,于是叫我,配置
(1)針對伺服器,程式運作目錄隻有檢視權限,其他目錄不讓看
(2)針對資料庫:隻查不讓改。
二、問題解決
對于資料庫,昨天已經搞過,是以十拿九穩。無非就是grant個select權限給一個新開使用者。核心指令:
因為考慮到客戶那邊經常不講武德地去掃開啟端口(害我寫了不少整改文檔。。),是以當時經理問我意見的時候,我說直接放堡壘機通路,好處有三:其一不需要讓客戶知道資料庫的登入密碼,其二能審計他們行為,最後能在安全組裡設定端口開放範圍(昨天設定的資料庫權限剛好又是在ECS搭的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目錄進去删除或建立什麼,都會報錯。隻能看!
其實到這裡基本就完成任務。然後我開始作死了。
嘗試用program使用者,去根目錄做騷操作,發現有些目錄可以做壞事哦(沒錯,是我之前開大了權限,事後我發現其實你單獨改回來不好,幹嘛全部目錄一起設定)。于是為了安全起見,就閉眼運作了:
想着這樣除root使用者其他使用者啥事都搞不了。運作到一半,ssh自動斷開了,可幸的是上面跑着的服務端口能通。telnet那台伺服器的ssh端口和其他同網段機器ssh過去,都連不上。以為又要開單使用者模式改回來,還要停業務重新開機機器,還要發公告,我已經腦補了晚上要加班重新開機機器進單使用者了。
當時吓壞了,邊提工單邊查資料。幸好阿裡提供了VNC遠端連接配接,不受ssh端口安全組限制(https://help.aliyun.com/document_detail/25433.htm)。要是天翼的話,沒得救 = =,估計要被批鬥了(經常想着這種高危職業,應該為自己買份保險。。)
原來,/etc/ssh 目錄下面權限有着非常嚴格的設定。改錯會導緻無法ssh連接配接。
設定成755,或者其他權限就ssh連不上了。
還有這玩意,得 chmod 777 /dev/null
這個/tmp 權限,要:chmod -R 1777 /tmp
/ 根分區後來的權限設定,我對着另一台伺服器改了第一層目錄了,至于有沒有遺漏(報錯再設定回來權限吧),所幸不需要重新開機機器,不然,呵呵= = 。
(冬至也是累死人,完~)