【问题标题】:Writing to a "application/octet-stream" file on linux写入 linux 上的“application/octet-stream”文件
【发布时间】:2020-03-17 15:19:54
【问题描述】:

我正在开发应阻止某些 USB 设备的应用程序。

我找到了一种方法来阻止完成。问题是,正如here 所写,我需要将一些字符串写入/sys/bus/usb/drivers_probe 文件。提到的文件是application/octet-stream,我找不到读取或写入该文件的方法。

我用 sudo 或 root 尝试过vimechohexdump,但每次我得到“Permission denied”“No such device” em> 消息。我没有在我的应用程序使用的 C/C++ 中尝试过,但我想它会带来相同的结果。

谁能帮助我理解内核开发人员是如何写入该文件的?

【问题讨论】:

  • 说文件名具有 MIME 类型是没有意义的 - 这是对 内容 的描述,而不是文件系统所知道的。无论如何,/sys 下的设备文件通常以纯文本形式访问。

标签: linux linux-kernel permission-denied


【解决方案1】:

如果你得到“Permission denied”,这意味着你没有以root权限打开文件:

$ sudo echo 4-1 > /sys/bus/usb/drivers_probe
bash: /sys/bus/usb/drivers_probe: Permission denied

$ echo 4-1 | sudo tee /sys/bus/usb/drivers_probe > /dev/null
(no error)

如果你得到“没有这样的设备”,这意味着你写错了字符串:

$ echo 'foobar' | sudo tee /sys/bus/usb/drivers_probe > /dev/null
tee: /sys/bus/usb/drivers_probe: No such device

$ echo '3-1.3.1:1.3' | sudo tee /sys/bus/usb/drivers_probe > /dev/null
(no error)

【讨论】:

  • 更具体地说,具有适当的权限 - 不要在小用户会做的地方使用 root! (诚​​然,在这种特殊情况下,文件系统条目通常是--w------- root:root,因此这次root 是唯一允许的用户。)
  • 谢谢,我找到了使用 tee 工具的解决方案,但是当我收到 "no such device" 消息时,由于某些原因,我仍然认为这是特权的问题。唯一的问题是我,界面写错了。
猜你喜欢
  • 2014-06-08
  • 2018-09-11
  • 1970-01-01
  • 1970-01-01
  • 2010-12-28
  • 2011-11-21
  • 1970-01-01
  • 2021-11-15
  • 2019-10-16
相关资源
最近更新 更多