角色设备权限问题

时间:2011-09-19 13:34:44

标签: linux bash device

我希望能够直接写入角色设备。这是我的所作所为:

cd /dev
mknod moo c 0 0
echo hello >> moo

我得到了

bash: moo: Permission denied

我尝试使用chmod为拥有用户提供写访问权限,如下所示:

chmod 777 moo

然后,当我尝试写信时,我被告知设备或地址不存在。我否则告诉我。

另外值得注意的是,据我所知,给0 0作为主要次要数字对会导致Linux只为设备提供方便的东西。

我必须遗漏一些基本的东西,我认为设备节点可以被视为普通文件。谁能告诉我我做错了什么?理想情况下,我想创建一个所有者可以写入的字符设备节点,任何人都可以读取(我知道777是错误的权限,我将在最终版本中修复)。

我也(最初)尝试通过Python与它交谈,这给了我同样的问题。

编辑:

0 0是错误的做法。我读过一件告诉我它会起作用的东西,它撒了谎。我需要做的是使字符设备模块和节点匹配,然后使用

2 个答案:

答案 0 :(得分:2)

所有设备都在驱动程序中定义了特定的主要和次要编号。您无法将其设置为您想要的任何内容,0 0看起来非常无效。你必须提出有效的,然后你才能成功。

主要和次要数字将节点条目绑定到特定驱动程序。不,/dev/*文件与其他文件不同。它们很特殊,因为内核会将输入/输出/控制操作重定向到特定的驱动程序。

答案 1 :(得分:2)

您确定0 0主要/次要设备标识符吗?

作为explained here

  • 主号码(您的命令中的前0位)是您要用于设备的驱动程序的标识符。
  • 次要编号(命令中的第二个0)是主要代码引用的驱动程序管理的设备的标识符。

我称之为驱动程序,是内核看到的驱动程序。

您在示例中尝试做的是创建一个没有任何驱动程序的设备...它将无法工作(正如您已经体验过的那样;)。)

为什么需要角色设备?根据您的需要(一位作者,多位读者),您可以使用带有mkfifo甚至标准文件的命名管道;)