修复 chroot 中反复出现的“/dev/null: Permission denied”问题

修复 chroot 中反复出现的“/dev/null: Permission denied”问题

我已经使用 chroot 到外部磁盘sudo chroot /mnt/disk,但几乎我所做的一切(登录、制表符补全、less输入文件等)都会导致出现错误/dev/null: Permission denied,即使该命令似乎有效。

/dev/null 具有正确的权限(666),并且file表示它是一个字符设备,因此它不像任何东西用常规文件覆盖它或更改了权限。

我该如何修复此问题?

以下是制表符补全(的ls /u)的结果:

$ ls /ubash: /dev/null: Permission denied
bash: _upvars: `-a2': invalid number specifier
bash: /dev/null: Permission denied
bash: _upvars: `-a0': invalid number specifier

答案1

磁盘可能已安装该nodev选项,其mount含义如下:

不要解释文件系统上的字符或块特殊设备。

您可以通过检查输出来验证这一点mount 外部chroot:

$ mount
...
/dev/sda1 on /mnt/disk type ext4 (rw,nosuid,nodev,relatime,data=ordered,uhelper=udisks2)

(这是一个特别难以发现的问题,因为 chroot 之外的配置会影响其中程序的行为!)

修复它就像重新挂载而不使用nodev选项一样简单。以下命令将完成此操作(即使在 chrooted 进程正在运行时!),尽管可能有一种方法可以删除只是nodev而不删除所有其他选项的选项:

sudo mount -o remount /dev/sda1 /mnt/disk

相关内容