
Im Grunde suche ich nach einer Möglichkeit zum Freigeben von Ordnern zwischen meinem Debian-Jessie-Host und dem Windows 7-Gast, ohne befürchten zu müssen, dass ich versehentlich Dateien unter Windows lösche und keine (praktische) Möglichkeit habe, diese Dateien wiederherzustellen.
Ich dachte, das ließe sich leicht erreichen, aber wie es scheint, ist das überhaupt nicht der Fall.
Nach einigem Googeln habe ich bei TechNet diesen sehr ausführlichen Workaround gefunden:
Papierkorb auf zugeordneten Netzlaufwerken aktivieren
Aber wie sich herausstellte, scheint es nur zu funktionieren, wenn sich beide Seiten in einer Windows-Umgebung befinden (und möglicherweise sogar dann nicht mit VirtualBox, sondern z. B. mit einem normalen Windows-System mit aktiviertem NTFS, das als Server fungiert). Siehe meine und die Kommentare anderer Leute:
... Wenn ich eine Datei lösche, fragt Windows zuerst, ob ich sie in den Papierkorb verschieben möchte. Dann wird mir in einem weiteren Dialogfeld mitgeteilt, dass ich eine Berechtigung (vom Administrator erteilt) benötige, und es wird eine Schaltfläche zum erneuten Versuch angezeigt. Das Klicken auf „Wiederholen“ schlägt dann fehl, da die Datei bereits gelöscht ist. Es spielt keine Rolle, ob der Explorer als Administrator ausgeführt wird, da das Verhalten dasselbe ist ...
Ich möchte also eine andere Lösung für dieses Problem finden - ob dies nur mit dem Gast erreicht werden kann (wie der bei TechNet beschriebene Hack) oder einige Änderungen am Host-Setup erfordert, spielt (vorerst) keine Rolle. Ich freue mich über jeden Input!
Ich kann mir so etwas wie Schattenkopien vorstellen,ext4Dateisystem (falls möglich) oder sogar das Einrichten eines Dateiservers mitSamba(?) bei meinem Host und finde eine Möglichkeit, es dem Gast zuzuordnen.
Wie man sieht habe ich hier zu wenig Ahnung...
Antwort1
Unter Linux kann Samba mithilfe des Moduls vfs_recycle das Löschen von Dateien abfangen und die Dateien in ein anderes Repository verschieben.
Siehe diese Links:
- Das vfs_recycle-Modul
- vfs_recycle Beispiel
- Samba VFS-Recycling-Funktion: Bereinigungsskript
- tmpwatch- entfernt Dateien, auf die über einen bestimmten Zeitraum nicht zugegriffen wurde
Antwort2
Dank der Antwort von @harrymc konnte ich Samba mit aktiviertem Papierkorb einrichten. Dies sind die Schritte, die ich gemacht habe:
1. Deaktivieren Sie freigegebene Virtual Box-Ordner
Zunächst habe ich alle freigegebenen Ordner von Virtual Box deaktiviert, sodass die gesamte Dateifreigabe nur über mit Samba konfigurierte Netzwerkfreigaben erfolgt – dies ist jedoch keine Voraussetzung.
2. Installieren Sie Samba
Ich folgte dann den Anweisungen unterhttps://wiki.debian.org/SambaServerSimplezur Installation von Samba ...
apt-get install samba samba-client
3. Samba-Benutzer erstellen
... und anschließend einen neuen Benutzer anlegen mit:
smbpasswd -a johndoe
4. Samba-Konfiguration aktualisieren
Um die freigegebenen Ordner zu konfigurieren, habe ich dann meinen /etc/samba/smb.conf
mit einem entsprechenden Abschnitt namens aktualisiert, der dem Namen des Hostcomputers [shared]
zugeordnet wird .//debian/shared
Debianin meinem Fall.
[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. Starten Sie Samba neu
Nachdem ich die Konfiguration abgeschlossen hatte, habe ich die Datei gespeichert und Samba mit folgendem neu gestartet:
sudo service smbd restart
6. Fertig
Und das war’s. Zurück beim Windows-Gast habe ich mich über //debian/shared
den Windows Explorer angemeldet und die Anmeldeinformationen fürJohn Doewie vorher konfiguriert. Und jetzt werde ich beim Löschen einer Datei immer noch gefragt, ob ich sie dauerhaft löschen möchte, aber bei der Bestätigung mitJadie Datei wird tatsächlich nicht gelöscht, sondern in das Recycling-Repository-Verzeichnis verschoben.
Anmerkungen:
Ich habe erkannt, dassLöschen eines leeren Ordnerszu Gastwird es dauerhaft entfernenauch auf dem Host, anstatt in das Recycling-Repository-Verzeichnis zu verschieben.
Papierkorb schützen ...
Obwohl die hide files = /.recycle/
Einstellung dafür sorgt, dass der Ordner mit dem Recycling-Repository in den Standardeinstellungen des Windows Explorers nicht sichtbar ist, ist es möglich, auch außerhalb des freigegebenen Ordners ein Recycling-Repository zu verwenden, sodass kein Client dessen Inhalt löschen kann. Um dies einzustellen, /home/johndoe/.shared.recycle
habe ich Folgendes verwendet:
recycle:repository = ../.shared.recycle
Zusätzliche Konfiguration
Das geht etwas über den Rahmen dieser Frage hinaus - aber hier können Sie meine vollständige Konfigurationsdatei sehen. Viele der Einstellungen [global]
waren nach der Installation von Samba bereits vorhanden. Da ich aber immer wissen möchte, was tatsächlich konfiguriert ist, habe ich mir Folgendes angesehen:https://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.htmlHandbuchseiten und habe dann einige der Standardeinstellungen geändert.
[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
Wie Sie sehen, habe ich Abschnitte [printers]
und Kommentare hinzugefügt [print$]
, da ich meine Drucker derzeit nicht freigeben möchte.
Ich habe den Abschnitt ebenfalls kommentiert [homes]
. Hauptsächlich, weil ich nicht viel über die Auswirkungen in Bezug auf die Sicherheit weiß, wenn es aktiviert ist. Wenn jemand hier näher darauf eingehen möchte, ist er herzlich willkommen!
Ich glaube, ich verstehe, map to guest = Never
dass usershare allow guests = no
der Gastzugriff vollständig deaktiviert werden wird.
Aber ich weiß nicht viel über die anderen oben gezeigten sicherheitsrelevanten Einstellungen. Wenn mir jemand erklären könnte, was sie einzeln oder alle zusammen bedeuten, wäre das großartig. Insbesondere pam password change
und sind mir obey pam restrictions
nicht unix password sync
so klar, obwohl ich das entsprechende Kapitel in den Manpages gelesen habe:
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
Schließlich sind die Einstellungen für passdb backend
, encrypt passwords
, passwd program
und passwd chat
bei der Installation unter Debian Jessie standardmäßig enthalten.