简述:
在驱动模块,可以对没有权限的进程和应用程序拒绝访问,有权限的才允许访问。
权限控制接口:
bool capable(int cap);
定义头文件:
#include <linux/capability.h>
用法例子:
if (! capable (CAP_SYS_ADMIN))
return -EPERM;
capable()没有权限时返回0,有权限时返回1。
在file_opertions的接口函数open,read,write,llseek,mmap,ioctl等函数开始行,加入这么一段,就可以实现权限控制了。
CAP_SYS_ADMIN代表权限,表示一个捕获一全部的能力, 提供对许多系统管理操作的存取.
其他宏权限说明:
CAP_DAC_OVERRIDE:这个能力来推翻在文件和目录上的存取的限制(数据存取控制, 或者 DAC).
CAP_NET_ADMIN:进行网络管理任务的能力, 包括那些能够影响网络接口的.
CAP_SYS_MODULE:加载或去除内核模块的能力.
CAP_SYS_RAWIO:进行 “raw” I/O 操作的能力. 例子包括存取设备端口或者直接和 USB 设备通讯.
CAP_SYS_ADMIN:一个捕获-全部的能力, 提供对许多系统管理操作的存取.
CAP_SYS_TTY_CONFIG:进行 tty 配置任务的能力.
这些宏定义在include/uapi/Linux/capability.h中,实际include/linux/capability.h已经包含了。