我正在研究设备文件,我发现一些安装点无法接受设备文件创建(如果nodev
设置了选项)。考虑到我的mount
输出:
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
.....
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
我尝试在其中创建设备文件/sys/kernel/debug
(选择目录只是因为它没有该nodev
选项),但不允许该操作。我不明白其背后的原理:为什么操作不可能?
答案1
您无法写入,/sys/kernel/debug
因为它不是通用文件系统;这是内核的debugfs
,它的存在是为了允许内核将调试信息导出到用户空间。
挂载选项的差异是由挂载的文件系统引起的。就你而言,我猜它们是由 systemd 安装的。 “核心”文件系统(/sys
、/proc
等/dev
)在早期安装src/core/mount-setup.c
(mount_table
详情请参阅),withnodev
等等/sys/kernel/debug
是通过安装的一个单独的单位,sys-kernel-debug.mount
,它不指定任何安装选项。我不确定安装选项差异背后是否有任何特定的理由。
至于为什么nodev
重要,请参阅为什么 /etc/fstab 中的“nodev”如此重要?如何利用字符设备进行黑客攻击?