linux驱动模块访问权限的控制

来源:互联网 发布:唐代以胖为美 知乎 编辑:程序博客网 时间:2024/06/08 03:25

简述:
在驱动模块,可以对没有权限的进程和应用程序拒绝访问,有权限的才允许访问。

权限控制接口:

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已经包含了。

参考博客:
LINUX中的capable
linux内核capable源代码分析

0 0
原创粉丝点击