允许所有者读取和创建文件,但不能更改或删除(已挂载的 ntfs 分区)

允许所有者读取和创建文件,但不能更改或删除(已挂载的 ntfs 分区)

我想:

  • 挂载我的 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 # 不管怎样,删除或不删除,因为我在挂载这个分区后创建了这个文件。

我尝试遵循以下答案https://unix.stackexchange.com/questions/222738/allow-owner-to-create-read-files-but-not-modify-or-delete

它建议对于像这样的目录:

$ 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。稍后我会正确回答我的问题。

相关内容