
По сути, я ищу способ совместного использования папок между моим хостом Debian Jessie и гостевой системой Windows 7, не опасаясь, что я случайно удалю файлы в Windows и не буду иметь (удобного) способа восстановить эти файлы.
Я предполагал, что этого можно легко достичь, но, как оказалось, это совсем не так.
Немного погуглив, я нашел очень подробное решение на TechNet:
Включить корзину на подключенных сетевых дисках
Но, как оказалось, это работает только в среде Windows с обеих сторон (и, возможно, даже не с VirtualBox, а, например, с обычной системой Windows с включенным NTFS, выступающей в качестве сервера). Смотрите мои комментарии и комментарии других людей:
... При удалении файла Windows сначала спрашивает, хочу ли я переместить его в корзину, затем в другом диалоговом окне сообщает, что мне нужно разрешение (предоставленное администратором), и показывает кнопку повтора. Затем нажатие кнопки повтора не удается, так как файл уже удален. В любом случае неважно, запущен ли Explorer от имени администратора, поскольку поведение одинаковое ...
Поэтому я хочу найти другое решение этой проблемы — можно ли это сделать только с гостем (как хак, описанный на TechNet) или это потребует некоторых изменений в настройках хоста, не имеет значения (пока). Я буду рад любым предложениям!
Я могу представить себе что-то вроде теневых копий наext4файловая система (если это возможно) или даже настройка файлового сервера сСамба(?) на моем хосте и поиск способа сопоставить его с гостем.
Как видите, у меня здесь слишком мало знаний...
решение1
В Linux Samba может перехватывать удаление файлов и перемещать файлы в другой репозиторий, используя модуль vfs_recycle.
Посмотрите эти ссылки:
- Модуль vfs_recycle
- пример vfs_recycle
- Функция Samba vfs recycle: скрипт очистки
- tmpwatch- удаляет файлы, к которым не было доступа в течение определенного периода времени
решение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 по умолчанию.