Linux字符设备保护

时间:2013-12-26 18:45:17

标签: char kernel linux-device-driver

我想保护我的角色设备免受应用程序操作的影响。 我希望只有特定的应用程序才能在设备上进行操作。

我该怎么做?

由于

1 个答案:

答案 0 :(得分:0)

这可能不是正确的答案(因为我没有测试它)。但我相信这会奏效。

我希望,您对task_struct中的当前字段有所了解,它将为您提供该过程的当前PID。请参考这个主题。 how does current->pid work for linux?

因此,您可以使用task_struct的comm字段代替pid。

http://lxr.free-electrons.com/source/include/linux/sched.h#L1180

在驱动程序中保留一系列允许的应用程序名称。在comm open()操作期间,针对允许列表检查/dev/<yourchardriver>字段。

示例文件操作结构。

struct file_operations fops = { /* these are the file operations provided by our driver */
    .owner = THIS_MODULE, /*prevents unloading when operations are in use*/
    .open = device_open,  /*to open the device*/
    .write = device_write, /*to write to the device*/
    .read = device_read, /*to read the device*/
    .release = device_close, /*to close the device*/
    .llseek = device_lseek
};

当您在用户空间中调用open(“/ dev / sampledrv”)时,将在您的驱动程序中调用device_open()。所以这些验证可以在这里完成。