【问题标题】:Is there a trick to pass a file descriptor to another process?是否有将文件描述符传递给另一个进程的技巧?
【发布时间】:2015-02-06 19:20:39
【问题描述】:

这是我的麻烦。

事实:

1. There is a device placed in /dev/xxx. 
   All files under /dev/ should have permission of 700 
   (root permission only accessible. No ownership change and group setting)

2. Not-root user application 'A' needs to open /dev/xxx and 
   perform ioctl on the FD.

我想到了几个选择:

option 1) Write a stub application 'X' that can run with root. 
          Open /dev/xxx in 'X' and perform IPC between A and X.

由于IPC开销,这个选项实际上不是一个好选项,因为A需要非常频繁地执行ioctl。

option 2) Change the location of /dev/xxx into some other place like
          /data/xxx where /data/ is accessible by 'A'

由于某种原因,如果我尝试以有效权限打开此 /data/xxx,则打开函数返回权限被拒绝错误。我不明白为什么会这样。内核是否有一些额外的保护来在 /dev 的其他地方打开设备文件?

option 3) Write a stub application 'X' that can run with root.
          Open /dev/xxx in 'X' and pass the FD to 'A'.

我不确定这是一个合理的选择。我希望你能提供任何关于这个选项的 cmets。

【问题讨论】:

    标签: linux kernel device


    【解决方案1】:

    既然您说您可以以 root 身份运行进程,那么要做的就是打开文件,然后调用 setuid 更改为 unpriv'd 用户并执行您需要做的所有事情。我已经在 BSD 下完成了这项工作,但不能保证您使用的任何设备驱动程序都不会查看您的进程的用户 ID 并因为它不再是 root 用户而吓坏了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-17
      • 2011-01-22
      • 1970-01-01
      相关资源
      最近更新 更多