我有两个用户:userA 和 userB。我还有NTFS格式的分区。由于 /etc/fstab 中的这一点,整个分区只能由 userA 访问:
/dev/sda3 /home/userA/data ntfs-3g defaults,rw,nouser,uid=userA,umask=077,exec 0 0
。我想允许用户 B 访问一个文件夹(例如 /home/userA/data/movies),但不能访问整个驱动器。我怎样才能做到这一点?
如果我允许 fstab 中的所有用户,则两个用户都可以访问整个驱动器,无论它是否安装在 /home/userA/ 文件夹中。 userB 可以简单地做
ls /home/userA/data
即使他做不到
ls /home/userA
如果我按照现在设置的方式保留 fstab 并使用符号链接,则符号链接会尊重其链接到的文件夹的权限,并且将不允许 userB 使用此符号链接。
我也尝试使用重新安装选项,但它唯一可以更改的是 ro/rw 选项,它无法更改 ntfs 分区的 uid、guid 或类似选项。我猜下面的策略(来自 man mount)也适用于 ntfs:
-o remount 可能无法更改挂载参数(例如,除了 sb 之外,所有 ext2fs 特定的参数都可以通过重新挂载进行更改,但不能更改 fatfs 的 gid 或 umask)。
答案1
我假设客户端计算机正在运行 Linux。
Linux 能够创建同一文件系统的全部或部分的多个视图。您可以使用它来使用户只能访问文件系统的一部分(需要进一步的权限检查)。
/dev/sda3 /home/userA/data ntfs-3g defaults,rw,nouser,uid=userA,umask=077,exec
/home/userA/data/subdir /home/userB/subdir bind
该命令mount --bind /home/userA/data/subdir /home/userB/subdir
设置第二个视图。
如果/home/userA
用户 B 无法访问,则用户 B 将无法通过该视图访问 NTFS 分区。但是,用户 B 将能够subdir
通过 的视图访问该目录/home/userB/subdir
。权限仍然适用:subdir
如果其权限排除 userB,则可能无法访问下面的某些文件。
如果您还想调整权限(允许 userB 访问所有文件,或仅授予只读访问权限等),您可以使用绑定文件系统。看对特定子文件夹中的所有文件的只读访问权限和允许用户读取其他用户的主目录例如。
答案2
NTFS-3g 支持访问控制列表、ACL。它在此处突出显示NTFS-3g 网站。要与 ACL 交互,您可以使用命令行工具setfacl
& getfacl
。
如果这适用于您特定的已安装共享,您应该能够使用该setfacl
命令来允许 userB 访问这一特定文件夹。
$ setfacl -m user:userB:rwx /home/userA/data/movies
考虑到它是一个目录,您可能需要允许比上面更多的命令,上面的命令我用于仅提供单个文件访问权限。