当我的 Ubuntu 操作系统通过 fstab 挂载时,它同时启用了 NTFS-3G 的权限和 acl 功能:
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
PARTUUID=86b1e9b5-0ff0-4566-a1a5-6034817df59c /boot/efi vfat umask=0077 0 0
UUID=ed5a8772-679d-483e-9192-2340f5160635 / ext4 noatime,errors=remount-ro 0 0
/swapfile none swap defaults 0 0
UUID=1D5F100E68B50F72 /home/peng ntfs-3g defaults,permissions,acl,nls=utf8,uid=1000,gid=1000,windows_names 0 0
但是当我尝试将虚拟文件的权限修改为 700 时,什么都没有改变:
$ chmod 700 dummy
$ ls -l
total 0
-rwxrwxrwx 1 peng peng 0 Jul 9 23:08 dummy
$ ls -l
total 0
-rwxrwxrwx 1 peng peng 0 Jul 9 23:08 dummy
为什么permissions,acl
忽略了该选项?如何真正启用它们?
更新 1:事实证明,该安装座的驱动程序仍在使用,fuseblock
而该驱动程序早已过时:
$ mount | grep sda
/dev/sda1 on /home/shared type btrfs (rw,noatime,nodatasum,nodatacow,ssd,space_cache=v2,subvolid=5,subvol=/)
/dev/sda2 on /home/peng type fuseblk (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096)
这很奇怪,因为 NTFS-3G 在内核 5.17 中应该已经是首选:
$ uname -r
5.17.15-76051715-generic
更新2:最新文档解释说uid和gid可能不应该存在于fstab中,所以我删除了它们:
# <file system> <mount point> <type> <options> <dump> <pass>
PARTUUID=86b1e9b5-0ff0-4566-a1a5-6034817df59c /boot/efi vfat umask=0077 0 0
UUID=ed5a8772-679d-483e-9192-2340f5160635 / ext4 noatime,errors=remount-ro 0 0
/swapfile none swap defaults 0 0
UUID=1D5F100E68B50F72 /home/peng ntfs-3g permissions,nls=utf8,windows_names 0 0
但重新启动后,挂载选项仍然看起来不准确且不一致:
$ mount | grep sda
/dev/sda1 on /home/shared type btrfs (rw,noatime,nodatasum,nodatacow,ssd,space_cache=v2,subvolid=5,subvol=/)
/dev/sda2 on /home/peng type fuseblk (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096)
无论如何,我现在可以 chmod 和 chown 大多数文件,但我仍然不知道这是否是理想的配置
答案1
发现网上有很多NTFS-3G在引入POSIX权限之后的最佳实践配置,需要按照这个表格进行配置:
文件访问检查 | 状况 |
---|---|
无需权限检查 | 不用户ID,组,掩码,掩码,umask或者权限或者访问控制列表选项,并且未找到用户映射文件 |
所有文件和目录具有相同的所有权(uid、gid)和权限(受 fmask、dmask 和 umask 限制) | 用户ID或者组或者掩码或者掩码或者umask已定义,但未找到用户映射文件 |
根据所有权和模式进行标准权限检查,不使用 POSIX ACL(忽略 uid、gid、fmask dmask 和 umask) |
|
根据所有权、模式和 POSIX ACL 的权限(忽略 uid、gid、fmask、dmask 和 umask) |
(来源:https://github.com/tuxera/ntfs-3g/wiki/File-Ownership-and-Permissions)
因此,所有涉及uid
和的选项gid
都是严格禁止的。最后,这是我正在使用的 fstab:
# <file system> <mount point> <type> <options> <dump> <pass>
...
UUID=1D5F100E68B50F72 /home/peng ntfs-3g permissions,nls=utf8 0 0
$ mount | grep sda
/dev/sda2 on /home/peng type fuseblk (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096)
到目前为止,它似乎正在按预期运行。
不幸的是,ACL 控制似乎仍然处于实验阶段,只能在编译时选项永久启用后才能使用