大家新年好! Jerry祝大家身體健康,鼠年大吉!
本文是鼠年第一篇文章,也是汪子熙公衆号第200篇原創文章。
昨天Jerry在家度過了有生以來年味最淡的一個除夕夜。為響應政府和專家的号召,沒有走親訪友,宅在家中,與親人和代碼一起,度過了一個平靜的除夕夜。
所謂“平平淡淡才是福”,讓我們共同祈禱,期盼這場全人類的災難早點結束。
之前Jerry也閱讀過一些介紹如何通過ABAP單步調試繞過SAP标準權限檢查“小技巧”的文章,比如說在調試器裡修改權限檢查語句AUTHORITY-CHECK的傳回值sy-subrc, 或者幹脆用調試器的“跳轉到某條語句”這一功能,直接繞過權限檢查語句。
雖然說在SAP生産系統裡,按照慣例,普通的業務使用者絕對不會有調試的權限,更别說在調試器裡修改變量的值了,但如果是在開發系統裡,直接在調試器裡修改變量的值,或是跳過某些語句的執行,真的就能夠不會被别人發現麼?
答案是否定的。
看個例子:
我在ABAP調試器裡把變量的值從12改成123,回車使更改生效。
然後事務碼SM21,打開系統日志檢視工具:
我剛才在ABAP調試器裡修改變量值的行為,赫然在案:
再試試在ABAP調試器裡,使用“Goto statement”,直接跳過某些語句:
這一行為也逃不過系統日志的記錄,甚至連我從第幾行ABAP代碼跳轉到另外的第幾行,都清晰地記錄下來了。
Terminal字段即在調試器裡執行了語句跳轉的使用者使用的終端機器ID,每台連接配接到ABAP Netweaver伺服器上的機器都具有一個唯一的終端ID.
這些系統日志檔案存儲的具體位置在哪?
點選Display Components,在Component trace面闆裡,能有選擇性地檢視某種類别的系統日志:
其中/usr/sap/AG3/D56開頭的路徑,即是我目前登入的Application Server,ID為AG3,instance numeber 為56這台伺服器的工作目錄:
使用事務碼AL11沿着這條路徑找下去,在work子目錄就能發現這些系統日志檔案:
普通ABAP使用者沒有作業系統的通路權限,也就不能對這些系統日志檔案進行任何寫操作。
總而言之,一旦你使用單步調試的方法繞過一些權限檢查或者執行其他危險操作時,這些行為立即記錄在系統日志裡,普通使用者無法删除這些日志檔案。
SAP系統的權限控制體系設計得非常完善,當大家在實際工作中發現自己缺少某個事務的執行權限時,請按照SAP權限管控的标準流程去解決問題。通過ABAP單步調試繞過權限檢查,在任何情況下都絕非SAP推薦的解決方式。即便是大家想在開發系統上這樣做的之前,也務必三思而後行。
感謝閱讀,祝大家春節愉快。
本文來自雲栖社群合作夥伴“汪子熙”,了解相關資訊可以關注微信公衆号"汪子熙"。