Как заставить гостевую ОС следовать символическим ссылкам из общей папки


18

У меня Ubuntu Desktop в качестве основной ОС и Ubuntu Server в качестве гостевой ОС в VirtualBox 4.2.16.

Я создал общую папку с именем / shared и поместил в нее несколько символических ссылок на разные папки в моей основной ОС. Конечно, моя гостевая ОС видит только битые символические ссылки - потому что эти места существуют только в основной ОС.

Как я могу сделать так, чтобы моя гостевая ОС видела их содержимое?

Создание другой общей папки не вариант.


1
К вашему сведению, если ваш хост - windows7, 8, 10, то вам нужно следовать инструкциям в ответе И затем также запустить sud (иначе говоря, «запускать от имени администратора»), как показано в этом сообщении в блоге о гостевых папках виртуальной машины linux guest с символическими ссылками на Хост Windows .
Тревор Бойд Смит

Ответы:


23

Это проблема в VirtualBox и связана с безопасностью. До 4.1.8 символические ссылки работали, но были серьезно испорчены. И было сделано решение удалить поддержку символических ссылок.

Смотрите этот комментарий :

Из соображений безопасности создание символической ссылки из гостевой системы было отключено в VirtualBox 4.1.8. Гость может создавать символические ссылки, которые указывают за пределы назначенного каталога хоста. Это не имеет никакого отношения к любой ошибке ext3 / ext4. И гость все еще может читать символические ссылки, созданные на хосте.

Извините за опоздание.

Если вы делаете

 VBoxManage setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1

Тогда ваш гость сможет снова создавать символические ссылки. Но по соображениям безопасности (см. Выше) это отключено по умолчанию. Исправление для предотвращения опасных символических ссылок от гостя является очень сложным, поэтому мы решили не позволять любому гостю создавать какие-либо символические ссылки, чтобы обойти проблему безопасности.

(Я позволил себе исправить ошибку в комментарии;))


Я выполнил эту команду и перезапустил VB. Цвет символической ссылки изменился, но теперь я даже не могу войти в нее. Я вижу это, когда использую ls, но bash перестал показывать мне это на TAB.
dev9

Хм звучит, как будто это не исполняемый файл?
Rinzwind

Ну, ls показывает мне lrwxrwx ---, так что все должно быть в порядке. Когда я пытаюсь подключиться к нему, bash говорит, что нет такого файла или каталога.
dev9

3
Что такое SHARE_NAME? Никто не объясняет это ясно, где мы получаем это.
Мельо

3
Папка, которую вы используете для общего доступа.
Rinzwind

1

Краткий ответ: это невозможно.

Следующий билет на virtualbox.org имеет некоторые пояснения:

Это изменение является преднамеренным и устраняет проблему с текущей реализацией общих папок. Для совместимости с гостевыми ОС, которые понятия не имеют, что такое символическая ссылка, она в настоящий момент интерпретируется на стороне хоста, и это означает, что можно получить неожиданное поведение с гостевыми ОС, которые знают, что такое символическая ссылка (например, если символическая ссылка в общей папке смонтирована в / foo будет указывать на / bar / file, что невозможно сделать правильно на стороне хоста).

Это, конечно, поправимо, но далеко не тривиально, так как необходимо переработать разделение обработки символических ссылок между гостевой ОС и хост-стороной. Это не может быть сделано быстро, поэтому единственной возможностью было отключить создание символической ссылки. Слишком много пользователей / приложений были застигнуты врасплох нестандартным поведением.

Источник

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.