2009-11-28 71 views
0

我有一個設備驅動程序模塊,它執行register_chardev()。在驅動程序的open()函數中,我希望能夠確定嘗試打開設備節點的進程的pid或pgid。這可能嗎?有沒有人有從哪裏開始的任何想法?Linux設備節點只能訪問某些進程組

我認爲這應該有點安全,我的設備節點只允許我的應用程序使用它,因爲除非它們在同一個會話中,否則無法將進程遷移到新進程組。

回答

3

內核不是做出這種策略決定的正確場所 - 設置誰可以打開設備節點的權限的正確位置是通過設置文件系統中設備節點文件的常規所有權和權限。

如果你真的有心設置它,current->pid是PID,current->tgid是線程組ID,current->group_leader->pid是PGID。

+0

謝謝,是否保證調度程序不會在驅動程序的open函數執行時將當前更新到進程隊列中的新進程。我想一個root用戶可以通過加載修改後的驅動模塊來繞過這個問題。但是我將在設備節點文件上使用它以及權限和所有權。 – 2009-11-28 03:50:48

+0

open函數在進行系統調用的進程的上下文中執行 - 它可以被搶佔,但是當open函數中的代碼正在執行'current'時,它將指向相同的進程。 – caf 2009-11-28 05:01:14