已挂载的vfat分区文件夹权限无法修改,Samba共享后其他机器无法访问,该如何解决?
兄弟,你踩了个VFAT文件系统的典型坑——VFAT根本不支持Linux的权限管理模型!这就是为啥你用chmod、chown改完权限,ls出来还是原样,GUI里也改不动的原因。从你findmnt的输出能看到,这个分区挂载时就已经通过uid=1001,gid=1001,fmask=0022,dmask=0022这些参数,直接锁定了整个分区内所有文件和目录的权限,单独改某个文件夹完全无效。
下面给你一步步解决:
1. 先卸载当前分区
卸载前确保没有程序在使用这个分区里的文件(比如别在终端里进入这个目录,也别开着文件夹窗口),然后执行:
sudo umount /media/xduser/kingstone
2. 修改挂载参数(持久化到开机)
为了让权限适配Samba共享,我们需要调整挂载时的权限掩码,并且把设置写到/etc/fstab里,避免重启后失效。
第一步:获取分区UUID
先找到这个VFAT分区的UUID(比直接用/dev/sdc1更稳定):
sudo blkid /dev/sdc1
输出会类似这样,把里面的UUID="XXXX-XXXX"记下来:
/dev/sdc1: UUID="1234-ABCD" TYPE="vfat" PARTUUID="xxxxxxxxx"
第二步:编辑fstab文件
用编辑器打开/etc/fstab:
sudo nano /etc/fstab
添加或者修改对应分区的行(把下面的XXXX-XXXX换成你刚才拿到的UUID):
UUID=XXXX-XXXX /media/xduser/kingstone vfat rw,nosuid,nodev,relatime,uid=1001,gid=1001,fmask=0000,dmask=0000,codepage=437,iocharset=utf8,users 0 0
这里关键参数解释:
fmask=0000:文件权限掩码设为0,意味着文件默认权限是666(读写)dmask=0000:目录权限掩码设为0,意味着目录默认权限是777(读写执行,能进入目录)iocharset=utf8:确保中文文件名能正常显示,避免乱码
编辑完按Ctrl+O保存,回车确认,再按Ctrl+X退出编辑器。
3. 重新挂载分区
执行命令重新挂载,让新的权限参数生效:
sudo mount /media/xduser/kingstone
现在再用ls -li /media/xduser/kingstone看权限,share23目录应该就变成drwxrwxrwx了。
4. 配套调整Samba配置(确保共享正常)
最后还要检查Samba的共享配置,确保权限设置匹配。打开/etc/samba/smb.conf:
sudo nano /etc/samba/smb.conf
在文件末尾添加你的共享配置:
[share23] path = /media/xduser/kingstone/share23 available = yes browseable = yes read only = no guest ok = yes create mask = 0777 directory mask = 0777
保存退出后,重启Samba服务:
sudo systemctl restart smbd
这样操作完,其他机器再访问这个共享目录时,就能正常读写了。
补充说明
VFAT是Windows的老旧文件系统,本身没有权限、用户组这些Linux里的概念,所以所有权限都是挂载时通过参数强制设置的,没法单独修改某个文件或目录的权限——这是文件系统的先天限制,不是你操作错了哦。
备注:内容来源于stack exchange,提问作者ZedZip

