基本上,我正在寻找一种在我的 Debian Jessie 主机和 Windows 7 客户机之间共享文件夹的方法,而不必担心我在 Windows 下意外删除文件并且没有(方便的)方法来恢复这些文件。
我以为这是一件可以轻松实现的事情但事实似乎并非如此。
经过一番谷歌搜索,我在 TechNet 上找到了这个非常详细的解决方法:
但事实证明,只有在双方都处于 Windows 环境中时,它才有效(甚至可能不是使用 VirtualBox,而是使用启用了 NTFS 的常规 Windows 系统作为服务器)。请参阅我和其他人的评论:
... 删除文件时,Windows 首先询问我是否要将其移动到回收站,然后在另一个对话框中告诉我需要权限(由管理员授予)并显示重试按钮。然后单击重试失败,因为文件已被删除。Explorer 是否以管理员身份运行并不重要,因为行为是相同的...
因此,我想找到另一种解决方案来解决这个问题 - 无论是仅通过客户机实现(如 TechNet 上描述的黑客技术)还是涉及对主机设置进行一些更改都无关紧要(目前)。我很高兴收到任何意见!
我可以想象一些类似影子副本的东西ext4文件系统(如果可能的话)或者甚至设置一个文件服务器桑巴(?)在我的主人那里,找到一种将它映射到客人的方法。
正如你所看到的,我在这方面的了解太少了......
答案1
在 Linux 下,Samba 可以使用 vfs_recycle 模块拦截文件删除并将文件移动到另一个存储库。
请参阅这些链接:
- vfs_recycle 模块
- vfs_recycle 示例
- Samba vfs 回收功能:清理脚本
- tmpwatch- 删除一段时间内未访问的文件
答案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 change
,obey pam restrictions
和unix 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 的安装一起提供。