Linux内核模块字符设备权限

时间:2014-02-13 22:36:56

标签: linux linux-kernel linux-device-driver

是否可以在linux内核模块中创建一个以mod 666开头的字符设备?现在它总是600(由root拥有),我必须chmod它。我可以创建udev条目来解决它,但我真的更喜欢模块自动完成它。

有可能吗?我在cdev_init或cdev_add文档中找不到任何关于此的信息。

1 个答案:

答案 0 :(得分:8)

您可以通过在类结构中设置dev_uevent方法来完成此操作。在此方法中,您必须设置DEVMODE uevent变量。这是一个例子

static int my_dev_uevent(struct device *dev, struct kobj_uevent_env *env)
{
    add_uevent_var(env, "DEVMODE=%#o", 0440);
    return 0;
}

static struct class my_class = {
    .name                = "myname",
    .owner                = THIS_MODULE,
    .dev_uevent        = my_dev_uevent,
    [...]
};