我想:
- 挂载我的 ntfs 分区(fstab 或 mount)
- 配置必要的内容...
然后我期望:
- rm“file_that_existed_before_I_mounted_the_partition”#失败,不允许删除在我安装驱动器之前存在的文件。
- echo hello2 > "file_that_existed_before_I_mounted_the_partition" # 失败,无法覆盖安装驱动器之前存在的文件
- echo hello > test # 成功,因为 test 不存在,所以允许创建
- echo hello >> test # 不管怎样,这个文件是我在 mount 之后创建的
- echo hello2 > test # 不管怎样,这个文件是我在 mount 之后创建的
- cat test # 成功,因为允许读取
- rm test # 不管怎样,删除或不删除,因为我在挂载这个分区后创建了这个文件。
它建议对于像这样的目录:
$ ls -ld dir
drwxr-xr-t 2 stephane stephane 4096 Aug 12 12:28 dir/
可以这样做:
$sudo bindfs -u root -p u=rwD,g=r,dg=rwx,o=rD dir dir
但它没有作用。
- 我能够读取和创建文件(好)
- 但我也能删除已经存在的文件(不好)
- 当使用
rm
命令时,它警告我,说文件受到保护。 - 但是,使用
unlink
(或任何使用 unlink syscall 的程序),该文件会被简单地删除。
我注意到我无法t
为相关目录设置(它是一个 NTFS 安装分区)。我尝试使用
sudo chmod o+t /mounted/dir
和
sudo chmod o+t /binded/dir
但两次结果都是“操作不允许”。
我也试过了前安装时,确实设置了t
,但在安装时它被重置。
如果有人知道原因,请分享。我更愿意仅使用 来配置它fstab
。
编辑
找到了解决方案。我基本上读了https://unix.stackexchange.com/questions/209009/set-sticky-bit-by-default-for-new-directories-via-acl
并适应我的情况。我使用了acl
启用的 ntfs-3g。稍后我会正确回答我的问题。