如何让普通用户挂载exFAT/FAT分区时避免所有文件被设置执行权限位
如何让普通用户挂载exFAT/FAT分区时避免所有文件被设置执行权限位
我之前也碰到过这个一模一样的头疼问题!用udisksctl挂载exFAT或者VFAT分区的时候,所有文件默认都是755权限,带个执行位,复制文件的时候特别闹心。咱们来一步步解决这个问题:
1. 修正udisks2的挂载配置文件
你之前修改/etc/udisks2/mount_options.conf没成功,大概率是配置格式或者选项用错了——noexec是让整个分区禁止执行文件,但这不是咱们要的(而且目录的执行位是用来进入目录的,不能随便禁用),正确的做法是用权限掩码来精准控制文件和目录的权限。
打开终端,用编辑器修改配置文件:
sudo nano /etc/udisks2/mount_options.conf
在文件里添加或者修改以下内容(如果已有对应分区的配置段,直接替换里面的defaults行即可):
# 针对exFAT分区的配置 [exfat] defaults=uid=$UID,gid=$GID,fmask=133,dmask=022 # 针对VFAT分区的配置 [vfat] defaults=uid=$UID,gid=$GID,fmask=133,dmask=022,utf8,shortname=mixed
这里解释下关键参数:
fmask=133:文件的权限掩码,777减去133等于644,刚好是咱们想要的文件权限(可读可写给自己,只读给组和其他)dmask=022:目录的权限掩码,777减去022等于755,目录需要执行位才能进入,这个权限是合理的uid=$UID和gid=$GID:保证挂载后的文件属于当前用户,不用每次手动调整权限
2. 重启udisks2服务让配置生效
修改完配置后,必须重启udisks2服务才能让新的挂载选项生效:
sudo systemctl restart udisks2.service
3. 重新挂载分区
先把已经挂载的分区卸载掉(替换成你实际的分区路径,比如/dev/sdb1,注意不要用整个磁盘设备/dev/sdb!):
udisksctl unmount -b /dev/sdXn
然后重新挂载:
udisksctl mount -b /dev/sdXn
现在你去挂载目录里查看文件权限,应该都是644了,目录保持755可以正常进入,完美解决执行位乱标的问题!
备注:内容来源于stack exchange,提问作者emk2203
相关产品推荐
相关产品推荐

