Исправление '/ dev / null: разрешение запрещено' повторно в chroot

782
Josh

Я подключился к внешнему диску sudo chroot /mnt/disk, но почти все, что я делаю (вход в систему, завершение табуляции, lessзагрузка файла, ...), приводит к упоминанию ошибки /dev/null: Permission denied, даже если кажется, что команда работает.

/ dev / null имеет правильные права доступа (666) и fileговорит, что это символьное устройство, поэтому ничто не перезаписывает его обычным файлом или не изменяет разрешения.

Что я могу сделать, чтобы это исправить?

Вот что ls /uприводит к завершению табуляции (of ):

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

1 ответ на вопрос

1
Josh

Диск может быть смонтирован с nodevопцией, которая mountинтерпретирует таким образом:

Не интерпретируйте символ и не блокируйте специальные устройства в файловой системе.

Вы можете убедиться в этом, проверив вывод mount внешней среды chroot:

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

(Это особенно сложная проблема, так как конфигурация вне chroot влияет на поведение программ внутри нее!)

Исправить это так же просто, как перемонтировать без nodevопции. Следующая команда выполнит это (даже в то время как в изолированной среде процесс работает!), Хотя, вероятно, способ, который удаляет только в nodevопции, не удаляя все другие варианты:

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

Похожие вопросы