Виртуальные боксы, хосты Linux, гостевые системы Windows, общие папки и корзины

Виртуальные боксы, хосты Linux, гостевые системы Windows, общие папки и корзины

По сути, я ищу способ совместного использования папок между моим хостом Debian Jessie и гостевой системой Windows 7, не опасаясь, что я случайно удалю файлы в Windows и не буду иметь (удобного) способа восстановить эти файлы.

Я предполагал, что этого можно легко достичь, но, как оказалось, это совсем не так.

Немного погуглив, я нашел очень подробное решение на TechNet:

Включить корзину на подключенных сетевых дисках

Но, как оказалось, это работает только в среде Windows с обеих сторон (и, возможно, даже не с VirtualBox, а, например, с обычной системой Windows с включенным NTFS, выступающей в качестве сервера). Смотрите мои комментарии и комментарии других людей:

... При удалении файла Windows сначала спрашивает, хочу ли я переместить его в корзину, затем в другом диалоговом окне сообщает, что мне нужно разрешение (предоставленное администратором), и показывает кнопку повтора. Затем нажатие кнопки повтора не удается, так как файл уже удален. В любом случае неважно, запущен ли Explorer от имени администратора, поскольку поведение одинаковое ...

Поэтому я хочу найти другое решение этой проблемы — можно ли это сделать только с гостем (как хак, описанный на TechNet) или это потребует некоторых изменений в настройках хоста, не имеет значения (пока). Я буду рад любым предложениям!

Я могу представить себе что-то вроде теневых копий наext4файловая система (если это возможно) или даже настройка файлового сервера сСамба(?) на моем хосте и поиск способа сопоставить его с гостем.

Как видите, у меня здесь слишком мало знаний...

решение1

В Linux Samba может перехватывать удаление файлов и перемещать файлы в другой репозиторий, используя модуль vfs_recycle.

Посмотрите эти ссылки:

решение2

Благодаря ответу @harrymc мне удалось настроить Samba с включенной корзиной. Вот шаги, которые я сделал:

1. Отключите общие папки Virtual Box

Прежде всего я отключил все общие папки Virtual Box, чтобы весь обмен файлами осуществлялся только через настроенные сетевые папки Samba, хотя это не обязательно.

2. Установите Самбу

Затем я следовал инструкциям наhttps://wiki.debian.org/SambaServerSimpleдля установки Samba ...

apt-get install samba samba-client

3. Создать пользователя Samba

... а затем создаем нового пользователя с помощью:

smbpasswd -a johndoe

4. Обновите конфигурацию Samba

Чтобы настроить общие папки, я обновил свой файл, /etc/samba/smb.confдобавив соответствующий раздел с именем [shared], которое будет соответствовать //debian/sharedимени хост-компьютера.дебианв моем случае.

[shared]
   path = /home/johndoe/shared
   comment = My Shared Folder
   read only = no
   browseable = yes
   create mask = 0777
   directory mask = 0777
   guest ok = no
   hide files = /.recycle/
   vfs objects = recycle
      recycle:repository = .recycle
      recycle:keeptree = yes
      recycle:versions = yes
      recycle:touch = yes
      recycle:minsize = 0
      recycle:maxsixe = 0

5. Перезапустите Samba.

Закончив настройку, я сохранил файл и перезапустил Samba с помощью:

sudo service smbd restart

6. Готово

И все. Вернувшись в гостевую систему Windows, я подключился //debian/sharedс помощью проводника Windows и ввел учетные данные дляДжон Доукак настроено ранее. И теперь при удалении файла меня все еще спрашивают, хочу ли я удалить его навсегда, но при подтверждении с помощьюдафайл на самом деле не удаляется, а перемещается в каталог репозитория recycle.


Примечания:

Я понял, чтоудаление пустой папкив гостяхудалю его навсегдана хосте, а не перемещать в каталог репозитория recycle.


Защита мусорной корзины...

Хотя hide files = /.recycle/настройка гарантирует, что папка репозитория корзины не будет видна в стандартных настройках проводника Windows, возможно использовать репозиторий корзины и за пределами общей папки, так что ни один клиент не сможет удалить ее содержимое. Чтобы установить его, /home/johndoe/.shared.recycleя использовал:

      recycle:repository = ../.shared.recycle

Дополнительная конфигурация

Немного не по теме этого вопроса - но здесь вы можете увидеть мой полный файл конфигурации. Многие настройки [global]изначально присутствовали после установки samba. Но поскольку я всегда хочу знать, что на самом деле настроено, я посмотрел наhttps://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.htmlстраницы руководства, а затем изменил некоторые настройки по умолчанию.

[global]
   workgroup = WORKGROUP
   dns proxy = no
   log file = /var/log/samba/log.%m
   max log size = 1024
   syslog only = no
   syslog = 0
   server role = standalone server

   map to guest = Never
   usershare allow guests = no

   pam password change = yes
   obey pam restrictions = yes
   unix password sync = no

   passdb backend = tdbsam
   encrypt passwords = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .


;[homes]
;   comment = Home Directories
;   browseable = no
;   read only = yes
;   create mask = 0700
;   directory mask = 0700
;   valid users = %S

;[printers]
;   path = /var/spool/samba
;   comment = All Printers
;   browseable = no
;   read only = yes
;   create mask = 0700
;   printable = yes
;   guest ok = no

;[print$]
;   path = /var/lib/samba/printers
;   comment = Printer Drivers
;   browseable = yes
;   read only = yes
;   guest ok = no

#[shared]
# ... as shown above

Как вы видите, я прокомментировал разделы [printers]и [print$]добавил их, поскольку пока не хочу делиться своими принтерами.

Я также прокомментировал [homes]раздел. В основном потому, что я не знаю много о последствиях с точки зрения безопасности при его включении. Если кто-то хочет подробнее рассказать об этом здесь, пожалуйста!

Думаю, я понимаю, что map to guest = Neverгостевой usershare allow guests = noдоступ будет полностью отключен.

Но я не знаю многого о других настройках безопасности, показанных выше. Если бы кто-нибудь мог объяснить мне, что они означают по отдельности или все вместе, это было бы здорово. Особенно pam password change, obey pam restrictionsи unix password syncне так понятны мне, хотя я прочитал соответствующую главу на man-страницах:

https://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html#PAMPASSWORDCHANGE

https://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html#OBEYPAMRESTRICTIONS

https://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html#UNIXPASSWORDSYNC

Наконец, настройки для passdb backend, encrypt passwords, passwd programи passwd chatпоставляются с установкой Debian Jessie по умолчанию.

Связанный контент