虚拟盒、Linux 主机、Windows 客户机、共享文件夹和回收站

虚拟盒、Linux 主机、Windows 客户机、共享文件夹和回收站

基本上,我正在寻找一种在我的 Debian Jessie 主机和 Windows 7 客户机之间共享文件夹的方法,而不必担心我在 Windows 下意外删除文件并且没有(方便的)方法来恢复这些文件。

我以为这是一件可以轻松实现的事情但事实似乎并非如此。

经过一番谷歌搜索,我在 TechNet 上找到了这个非常详细的解决方法:

在映射的网络驱动器上启用回收站

但事实证明,只有在双方都处于 Windows 环境中时,它才有效(甚至可能不是使用 VirtualBox,而是使用启用了 NTFS 的常规 Windows 系统作为服务器)。请参阅我和其他人的评论:

... 删除文件时,Windows 首先询问我是否要将其移动到回收站,然后在另一个对话框中告诉我需要权限(由管理员授予)并显示重试按钮。然后单击重试失败,因为文件已被删除。Explorer 是否以管理员身份运行并不重要,因为行为是相同的...

因此,我想找到另一种解决方案来解决这个问题 - 无论是仅通过客户机实现(如 TechNet 上描述的黑客技术)还是涉及对主机设置进行一些更改都无关紧要(目前)。我很高兴收到任何意见!

我可以想象一些类似影子副本的东西ext4文件系统(如果可能的话)或者甚至设置一个文件服务器桑巴(?)在我的主人那里,找到一种将它映射到客人的方法。

正如你所看到的,我在这方面的了解太少了......

答案1

在 Linux 下,Samba 可以使用 vfs_recycle 模块拦截文件删除并将文件移动到另一个存储库。

请参阅这些链接:

答案2

感谢@harrymc 提供的答案,我能够设置启用回收站的 Samba。以下是我执行的步骤:

1.禁用 Virtual Box 共享文件夹

首先,我禁用了所有 Virtual Box 共享文件夹,以便所有文件共享仅通过 Samba 配置的网络共享完成 - 但这不是要求。

2.安装Samba

然后我按照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 资源管理器连接到该客户机,并输入了以下凭据:约翰多与之前的配置一致。现在,删除文件时,系统仍会询问我是否要永久删除,但当我使用是的该文件实际上并没有被删除,而是被移动到了回收站目录。


笔记:

我已经认识到删除空文件夹客人将永久删除在主机上,而不是移动到回收存储库目录。


保护回收站...

虽然此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 changeobey pam restrictionsunix password sync对我来说不是很清楚,尽管我已经阅读了手册页中的相应章节:

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 的安装一起提供。

相关内容