如何保护可写目录下的文件
How to protect a file under a writable directory
我在文件权限和 acl 方面遇到了一些问题。
我有一个可写的目录名称 "dir",权限为 777 (dir rwxrwxrwx)
在目录下我创建了一个文件 tmp.txt (dir/tmp.txt)
我想知道如何在不更改 "dir" 权限的情况下阻止 other/group 成员访问 edit/delete 文件。在 "dir".
下,每个人都可以自由地对另一个 file/directory 采取任何行动
我想知道也许 "setfacl" 或者什么。
拥有该目录的人可以删除其中的文件,即使它们属于 root。
有两种方法可以让您几乎到达目的地。
想法 1 - Sticky Bit
$ ls -ld /tmp
drwxrwxrwt 33 root root 1020 2020-03-14 14:06 /tmp/
这是 Unix /tmp
目录的通用权限。权限末尾的t
表示sticky bit,可以通过运行:
设置
chmod +t /tmp
sticky 位表示即使每个人都对该目录具有写权限,但只有 root、目录所有者和文件所有者才能删除该目录下的文件。
想法 2 - 额外目录
如果目录不为空,则无法删除。如果您将文件放在您拥有的目录中,只有您(和 root)可以删除文件,那么其他人都无法删除它:
root@playground# tree -up
.
`-- [drwxrwxrwx root ] box
|-- [-rw-r--r-- test1 ] f1
`-- [drwxr-xr-x test2 ] hello
`-- [-rw-r--r-- test2 ] f2
2 directories, 2 files
root@playground# su test1
test1@playground$ rm box/hello
rm: cannot remove ‘box/hello’: Is a directory
test1@playground$ rm -rf box/hello/
rm: cannot remove ‘box/hello/f2’: Permission denied
我在文件权限和 acl 方面遇到了一些问题。
我有一个可写的目录名称 "dir",权限为 777 (dir rwxrwxrwx)
在目录下我创建了一个文件 tmp.txt (dir/tmp.txt)
我想知道如何在不更改 "dir" 权限的情况下阻止 other/group 成员访问 edit/delete 文件。在 "dir".
下,每个人都可以自由地对另一个 file/directory 采取任何行动我想知道也许 "setfacl" 或者什么。
拥有该目录的人可以删除其中的文件,即使它们属于 root。
有两种方法可以让您几乎到达目的地。
想法 1 - Sticky Bit
$ ls -ld /tmp
drwxrwxrwt 33 root root 1020 2020-03-14 14:06 /tmp/
这是 Unix /tmp
目录的通用权限。权限末尾的t
表示sticky bit,可以通过运行:
chmod +t /tmp
sticky 位表示即使每个人都对该目录具有写权限,但只有 root、目录所有者和文件所有者才能删除该目录下的文件。
想法 2 - 额外目录
如果目录不为空,则无法删除。如果您将文件放在您拥有的目录中,只有您(和 root)可以删除文件,那么其他人都无法删除它:
root@playground# tree -up
.
`-- [drwxrwxrwx root ] box
|-- [-rw-r--r-- test1 ] f1
`-- [drwxr-xr-x test2 ] hello
`-- [-rw-r--r-- test2 ] f2
2 directories, 2 files
root@playground# su test1
test1@playground$ rm box/hello
rm: cannot remove ‘box/hello’: Is a directory
test1@playground$ rm -rf box/hello/
rm: cannot remove ‘box/hello/f2’: Permission denied