2016-01-27 36 views
0

我的項目包含兩個內容:內核模塊&應用程序,通過ioctl使用/dev/mytest文件進行通信。允許非root用戶通過ioctl訪問linux模塊中的/ dev/mytest文件

目前,應用程序需要以root身份運行以訪問/dev/mytest文件。是否有可能允許非用戶迭代此文件沒有sudo?

據我瞭解,file_operations結構屬性.owner = THIS_MODULE沒有關於/dev/mytest文件,只與驅動程序文件關聯。

我創建/dev/mytest使用class_create & device_create函數在內核模塊中。所以,也許我應該指定一些特殊的device_create參數?或者我可以如何實現它?

+2

爲您的設備編寫udev規則。不要硬編碼驅動程序中的權限。 –

+0

@ n.m。這是教育目的驅動程序,我想盡可能簡化它的使用。 – avasin

+0

@ n.m。你對udev的建議非常豐富。謝謝。 – avasin

回答

1

在現代性的核心,你可以這樣做

myclass = class_create(THIS_MODULE, "my_class_name"); 
    /* error handling if class_create fails */ 
    myclass->devnode = mydevnode; 

在您devnode功能是一樣的東西

static char *mydevnode(struct device *dev, umode_t *mode) 
    { 
     if (mode) 
      *mode = 0666; /* or whatever permissions you want */ 
     return NULL; /* could override /dev name here too */ 
    } 

這時如果使用device_create創建驅動程序特殊文件,內核會請致電mydevnode來創建該文件,並且您可以覆蓋那裏的文件權限。

相關問題