为SMB共享格式化USB硬盘并隐藏私有文件夹的可行性咨询
SMB共享格式化USB硬盘并隐藏私有文件夹的可行性咨询
嘿,你的需求完全可以实现,不用放弃Windows兼容性!我来给你拆解具体怎么做:
核心结论
exFAT完全能满足你的要求——既能让Windows直接识别硬盘,又能让「private」文件夹对普通用户隐藏(不用加密,高级工具能找到也没关系),配合SMB配置还能实现网络共享的权限区分。
具体步骤
1. 让树莓派支持exFAT操作
树莓派5默认可能没装exFAT的管理工具,先安装:
sudo apt update && sudo apt install exfatprogs
这能让你格式化硬盘、修改exFAT文件夹的属性。
2. 格式化硬盘为exFAT(注意备份数据!)
先确认你的USB硬盘设备名(比如/dev/sda1,可以用lsblk命令查看),然后格式化:
sudo mkfs.exfat /dev/sda1
格式化后挂载到树莓派的某个目录,比如/mnt/usb:
sudo mkdir -p /mnt/usb sudo mount /dev/sda1 /mnt/usb
想要开机自动挂载的话,编辑fstab文件:
sudo nano /etc/fstab
添加一行:
/dev/sda1 /mnt/usb exfat defaults,noatime 0 0
保存退出后执行sudo mount -a验证是否生效。
3. 创建文件夹并设置隐藏属性
在挂载目录下创建public和private文件夹:
sudo mkdir /mnt/usb/public /mnt/usb/private
然后给private文件夹添加DOS隐藏属性(exFAT支持这个属性,Windows会识别):
sudo attrib +h /mnt/usb/private
这样Windows直接连接硬盘时,默认不会显示这个文件夹——普通用户根本看不到它,除非手动开启「显示隐藏的文件、文件夹和驱动器」,这完全符合你“不怕进阶工具找到”的要求。
4. 配置SMB共享
编辑Samba配置文件:
sudo nano /etc/samba/smb.conf
在文件末尾添加以下共享配置:
[Public] path = /mnt/usb/public browseable = yes read only = no # 改成yes就是只读模式,根据需求调整 guest ok = yes create mask = 0664 directory mask = 0775 [Private] path = /mnt/usb/private browseable = yes # 如果想让网络邻居看不到这个共享,改成no就行 read only = no guest ok = no valid users = pi # 换成你的树莓派用户名 create mask = 0600 directory mask = 0700
保存退出后,给Samba用户设置密码(和树莓派系统用户名对应):
sudo smbpasswd -a pi
最后重启SMB服务生效:
sudo systemctl restart smbd nmbd
效果验证
- 当硬盘接Windows电脑时:默认只能看到
public文件夹,private被隐藏; - 当通过树莓派SMB访问时:
public无需密码即可访问,private需要输入你设置的Samba密码才能进入; - 硬盘被盗后:普通用户接自己电脑看不到
private,只有会开隐藏文件的人才能找到,完全符合你的预期。
备注:内容来源于stack exchange,提问作者James T
相关产品推荐
相关产品推荐

