Linux 访问设备get";拒绝许可“;,为什么?

Linux 访问设备get";拒绝许可“;,为什么?,linux,random,Linux,Random,我可以在某个目录上创建一个新的URADOM设备(在下面的示例中为test\u URADOM),它可以按预期工作。例如 test_urandom$ sudo mknod -m 0444 ./urandom c 1 9 test_urandom$ ls -l total 0 cr--r--r-- 1 root root 1, 9 Jun 9 09:06 urandom test_urandom$ head -c 10 ./urandom �׫O1�9�^ 但是,如果我在另一个目录中创建相同的设

我可以在某个目录上创建一个新的URADOM设备(在下面的示例中为
test\u URADOM
),它可以按预期工作。例如

test_urandom$ sudo mknod -m 0444 ./urandom c 1 9
test_urandom$ ls -l
total 0
cr--r--r-- 1 root root 1, 9 Jun  9 09:06 urandom
test_urandom$ head -c 10 ./urandom 
�׫O1�9�^
但是,如果我在另一个目录中创建相同的设备节点,在我的情况下,它是LVM(逻辑卷管理)上的一个ext4文件系统,它会失败,系统会抱怨
权限被拒绝。

test_urandom_lvm$ sudo mknod -m 0444 ./urandom c 1 9
test_urandom_lvm$ ls -l
total 0
cr--r--r-- 1 root root 1, 9 Jun  9 09:06 urandom
test_urandom_lvm$ head -c 10 ./urandom
head: cannot open ‘./urandom’ for reading: Permission denied

如果允许我在文件系统中创建设备,为什么不允许我读取该设备?是什么原因导致许可被拒绝?需要进行哪些更改才能使其正常工作?

文件系统安装了
nodev
选项,该选项禁止块和字符特殊设备操作。安装它
dev
将允许它们工作。

没有“LVM文件系统”这样的东西。LVM不是一个文件系统,它是一个块设备。文件系统不关心(事实上不知道)它位于什么类型的块设备上,而块设备也不关心(事实上不知道)它上面有什么文件系统(如果上面有文件系统的话)。LVM不重要。什么是文件系统类型?它安装了哪些选项?@Jörg感谢您对LVM的澄清。我已经更新了问题。我这里的关键点是,为什么在安装在LVM逻辑块设备上的文件系统中创建的Uradom设备不能工作?需要什么样的许可才能让它工作?@ephemient:谢谢ephemient。你指出了根本原因。文件系统安装了“用户”选项,这意味着“nodev”(不要解释字符或阻止文件系统上的特殊设备)不,您仍然不明白。LVM与文件系统完全无关。它不知道也不关心文件系统,它不知道也不关心文件,它不知道也不关心设备节点,它不知道也不关心权限,它不知道也不关心用户。LVM是块设备、块设备和文件系统生活在两个完全不同的抽象层上。LVM绝对、完全、完全、100%不可能与您的问题有任何关系。Zip.Nada.Zilch.Nothing。LVM不可能是您问题的根源。