Jer*_*ell 3 linux ioctl linux-kernel
为了进行面向安全性的源代码审查,我有兴趣(全面)查找在Linux内核中注册的所有ioctl命令。另外,我想将它们分类为管理员(例如,root)可以访问的类别,以及非特权用户可以访问的类别。
我不确定阅读内核源代码是否更容易,或者是否有某种方法可以在用户空间中查询列表。如果需要查看内核,注册ioctl时需要寻找什么功能?
ioctl实际上并没有在内核中注册,每种类型的文件状对象都有一组不同的ioctl可用。
大多数情况下,它们是使用switch语句实现的。
因此,您真正需要做的是:
实际上,找出可用的ioctl并非易事。许多设备都有手册页,其中列出了它们,但其他设备则没有,并且列表可能不完整。
通常情况下,某个功能的开关状态很大。但是,存在一种“继承性”,即许多设备具有在不同级别实现的几种不同类型的ioctl。
相同的“种类”驱动程序通常在几种不同类型的硬件中实现,并且它们通常共享很多代码。
例如,串行端口在http://lxr.linux.no/#linux+v2.6.35/drivers/serial/serial_core.c#L1107中定义了自己的ioctl
但是,串行端口也可能在每个驱动程序的基础上定义了ioctl,但是由于它们是tty,因此它们也响应tty ioctl。
每个子系统的结构不同,因为它们具有不同的行为。
| 归档时间: |
|
| 查看次数: |
2123 次 |
| 最近记录: |