授予用户删除文件的能力,而不授予他们对目录的写权限

授予用户删除文件的能力,而不授予他们对目录的写权限

我目前有 chroot 用户,其主目录包含“上传”目录和“下载”目录。

原来上传目录的权限在哪里

chown user:sftpadmin upload
chmod 370 upload

以及下载目录的权限

chown user:sftpadmin download
chmod 570 dowload

sftpadmins 组的目的是让作为该组成员的服务帐户能够从相应的目录中为用户放置/检索文件。

现在我们有一个请求,允许用户在使用完下载目录中的文件后能够删除这些文件。然而,我能想到的唯一选择是将下载目录的权限设置为

chmod 770 download

然而,这将授予 chroot 用户将任何文件写入此目录的能力,我想避免这种情况。

我是否可以设置任何权限组合,使他们能够读取、下载和删除目录中的文件,而不允许他们将文件写入下载目录?

它看起来像:

  • 允许用户删除(删除)文件
  • 不允许用户更改文件。
  • 不允许用户将文件添加到目录中。

答案1

这得看情况:

使用标准 posix 权限是不可能的,因为删除文件需要与添加相同的权限:对包含目录的写入权限。

但是,如果您的文件系统支持 NFSv4 访问控制列表(例如 ZFS),则这是可能的,因为存在不同的控制条目“写入数据”(-> 创建文件)和删除子项。您只需在特定用户的目录上设置“允许删除子项”条目,而不是“允许写入数据”条目(或者改为:设置“拒绝写入数据”)。

https://linux.die.net/man/5/nfs4_acl详细说明

答案2

基本上,是的,它是以下特权的组合:

  • 将允许删除文件,
  • 将不允许更改文件。

删除和添加文件由目录权限定义,但修改文件由文件权限定义。

例子:

➜ example mkdir -pv sample ➜ example touch sample/file.txt ➜ example chmod 0700 sample; chmod 0400 sample/file.txt ➜ example echo 'sample' > sample/file.txt zsh: permission denied: sample/file.txt ➜ example rm -f sample/file.txt ➜ example

相关内容