首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么mknod需要根权限?

为什么mknod需要根权限?
EN

Unix & Linux用户
提问于 2016-01-18 14:39:06
回答 3查看 6.1K关注 0票数 6

我注意到,当创建一个非常规文件、FIFO或Unix以外的节点时,mknod命令需要根权限。

为什么会这样呢?常规用户如何通过创建常规文件时不能使用的mknod命令来损害系统或损害其他用户的隐私?

EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2016-01-18 15:16:46

如果您可以任意调用mknod,那么您可以为任何设备创建由您拥有和访问的设备文件。设备文件允许您不受限制地访问相应的设备;因此,任何用户都可以任意访问设备。

例如,假设/dev/sda1保存一个您无法访问的文件系统。(比方说,它被安装到/secret上)。在这里,/dev/sda1是块特殊的8,1,所以如果您可以调用mknod,例如mknod ~/my_sda1 b 8 1,那么您可以通过自己的设备文件为/dev/sda1访问/dev/sda1上的任何东西,而不管对/dev/sda1的任何文件系统限制如何。(您将设备作为一个没有任何结构的平面文件,因此您需要知道如何处理它,但是有访问块设备文件的库。)

同样,如果您可以创建自己的/dev/mem/dev/kmem副本,那么您可以检查主存中的任何内容;如果您可以创建自己的/dev/tty*/dev/pts/*副本,那么您可以记录任何键盘输入,等等。

因此,普通用户手中的手柄是有害的,因此必须限制其使用。

注:这就是为什么nodev挂载选项对于移动设备至关重要,否则您可以在准备好的移动媒体上携带自己的设备文件。

票数 14
EN

Unix & Linux用户

发布于 2016-01-18 16:23:09

使用mknod,您可以创建允许原始访问硬件的设备特殊文件.也就是说,内核查看设备特殊文件的权限,以确定是否允许给定用户对硬件进行原始访问,而不是对配置中的任何内容进行访问。

例如,在Debian上,与光驱相关的设备是使用0660个权限位、用户root和组cdrom创建的;因此,任何rootcdrom组中的人都可以“使用dd of /dev/dvd而不是通过安装的文件系统创建映像”。这对你来说可能意义不大,直到你意识到同样的事情发生在你的硬盘上(例如,/dev/sda),你也可以写到这些硬盘上。

虽然设备特殊文件通常是在/dev目录下创建的,但是Linux系统并不需要它;任何文件系统(没有使用nodev选项挂载)都可以包含设备节点。唯一将设备节点链接到实际设备的是类型(块或字符)以及主节点和次要节点。

因此,如果常规用户能够创建设备-特殊文件,那么他们就可以绕过所有内核安全性,直接访问所有硬件,只需创建一个设备-特殊文件(例如,在他们的主目录中),并使用该文件对硬盘进行核爆。

因此,创建设备专用文件只能由root完成.

票数 5
EN

Unix & Linux用户

发布于 2016-01-18 14:50:27

您可以使用mknod访问chroot“监狱”中的设备文件(例如,根文件系统的设备)。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/256075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档