Linux kernel Linux设备节点仅对某些进程组可访问
我有一个设备驱动程序模块,它执行寄存器\u chardev()。在driver open()函数中,我希望能够确定试图打开设备节点的进程的pid或pgid。这可能吗?有人知道从哪里开始吗Linux kernel Linux设备节点仅对某些进程组可访问,linux-kernel,Linux Kernel,我有一个设备驱动程序模块,它执行寄存器\u chardev()。在driver open()函数中,我希望能够确定试图打开设备节点的进程的pid或pgid。这可能吗?有人知道从哪里开始吗 我假设这应该在某种程度上保护我的设备节点,使其仅允许我的应用程序使用它,由于您无法将进程迁移到新的进程组,除非它们处于同一会话中。内核不是做出此类策略决策的正确位置-设置可以打开设备节点的人的权限的正确位置是通过设置文件系统中设备节点文件的通常所有权和权限 如果你真的全神贯注于此,current->pid就是p
我假设这应该在某种程度上保护我的设备节点,使其仅允许我的应用程序使用它,由于您无法将进程迁移到新的进程组,除非它们处于同一会话中。内核不是做出此类策略决策的正确位置-设置可以打开设备节点的人的权限的正确位置是通过设置文件系统中设备节点文件的通常所有权和权限
如果你真的全神贯注于此,
current->pid
就是pid,current->tgid
是线程组id,current->group\u leader->pid
是PGID。内核不是做出此类策略决策的正确位置-设置可以打开设备节点的人的权限的正确位置是通过在文件系统
如果你真的很用心,
current->pid
是pid,current->tgid
是线程组id,current->group\u leader->pid
是PGID。谢谢,可以保证调度程序在执行驱动程序的open函数时不会将当前进程更新到进程队列中的新进程。我想根用户无论如何都可以通过加载修改过的驱动程序模块来避免这种情况。但我会将其与设备节点文件上的权限和所有权一起使用。open函数在进行系统调用的进程上下文中执行-它可以被抢占,但当open函数中的所有代码都在执行时,current将指向同一进程。谢谢,是否保证在执行驱动程序的open函数时,调度程序不会将当前进程更新为进程队列中的新进程。我想根用户无论如何都可以通过加载修改过的驱动程序模块来避免这种情况。但我会将其与设备节点文件上的权限和所有权一起使用。open函数在进行系统调用的进程上下文中执行-它可以被抢占,但当open函数中的所有代码都在执行时,current
将指向同一进程。