有了Debug权限就能干坏事?小心了,你的一举一动尽在系统监控中

大家新年好! 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推荐的解决方式。即便是大家想在开发系统上这样做的之前,也务必三思而后行。

感谢阅读,祝大家春节愉快。

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

你可能感兴趣的:(debug,调试,调试工具,系统,sap)