全球可写文件的风险

全球可写文件的风险

我知道拥有世界可写文件可能很危险,许多人建议不要在系统上拥有世界可写文件。

为了“保护”我的 Linux,我使用find / -perm -0002 -type f.感谢这个命令,我在 root_directory 下找到了一个全局可写的文件/root/a_directory/world_writable_file。由于我的/root目录是700,其他用户无法编辑世界可写文件。

所以我的问题是,如果我在其他用户无法访问的目录下有世界可写文件(缺乏其他用户的 x 权限),那么风险是什么?

例如,如果/root/directory1/world_writable_file.sh是777,并且/directory1/是700,我安全吗?这种情况下没有风险吗?

答案1

您对权限的理解似乎是正确的,但可能并不完整。

为了访问文件,发出请求的用户需要访问该文件的所有路径元素。对于目录,这意味着需要x权限才能遍历该目录。

因此,非目录所有者的任何人都无法访问777具有权限的目录中具有权限的文件。700

例如:

$ sudo ls -al XX
total 40
drwx------  2 root root  4096 Dec 21 07:43 .
drwxrwxrwt 13 root root 36864 Dec 21 07:43 ..
-rwxrwxrwx  1 root root     0 Dec 21 07:43 yy

我无法读取或写入该yy文件,因为无法遍历该XX目录。

$ cat XX/yy
cat: XX/yy: Permission denied
$ echo test >> XX/yy
/bin/ksh: XX/yy: cannot create [Permission denied]

然而,传统权限并不是授予文件访问权限的唯一方式。有ACL...

$ sudo setfacl -m u:sweh:rwx XX
$ ls -ld XX        
drwxrwx---+ 2 root root 4096 Dec 21 07:43 XX/
$ echo test >> XX/yy
$ cat XX/yy         
test

所以现在,即使目录权限看起来是770,我仍然可以读写该文件,因为 ACL 授予了它。权限列表末尾+显示有 ACL

drwxrwx---+ 2 root root 4096 Dec 21 07:43 XX/

在您的特定情况下,ACL 和传统权限的重叠方式之间存在重叠。请注意该setfacl命令将模式设置为770。如果我们将其设置回您的700...

$ sudo chmod 700 XX
$ ls -ld XX
drwx------+ 2 root root 4096 Dec 21 07:43 XX/

现在 ACL 仍然存在,但已有效不是授予访问权限:

$ getfacl XX
# file: XX
# owner: root
# group: root
user::rwx
user:sweh:rwx                   #effective:---
group::---
mask::---
other::---

注意#effective:---条目。这是因为设置组值时mask修改了该值 ;chmod这是 ACL 和文件权限之间的微妙交互。

所以..

$ cat XX/yy        
cat: XX/yy: Permission denied

长话短说……700目录中的世界可写文件应该是安全的,但目录中的类似文件770可能不安全。

相关内容