我需要有关Linux权限的一些帮助。我知道拥有世界可写文件可能很危险,许多人建议不要拥有世界可写文件。
为了“保护”我的Linux,我使用find / -perm -0002 -type f
搜索了每个可写的世界文件。多亏了此命令,我在/root/a_directory/
下找到了一个可写入世界的文件。由于我的/root
目录是700
,因此其他用户无法编辑世界可写文件。
所以我的问题是,如果我的世界可写文件位于其他用户无法访问的目录下,会有什么风险?
如果/directory1/world_writable_file.sh
为777
并且/directory1/
为700
,我安全吗?在这种情况下没有风险吗?
答案 0 :(得分:1)
目录权限的行为与文件权限完全不同。
由于该目录不允许其他用户(非root用户和非group用户)对该目录进行任何操作(读/写/执行),因此他们甚至无法枚举此目录中的文件,因此他们可以无法访问它们。
这是一个实际的例子:
user@host$ sudo su
root@host$ mkdir testdir
root@host$ printf '#!/bin/bash\necho test" > testdir/testfile
root@host$ chmod 0777 testdir/testfile
root@host$ chmod 0700 testdir
root@host$ exit
user@host$ ./testdir/testfile
-bash: ./testdir/testfile: Permission denied
user@host$ ls testdir
ls: cannot open directory 'testdir': Permission denied
但是,这不是处理敏感文件的好习惯。 错误配置文件权限非常容易,因此您永远不要依赖拥有安全目录。
如果有人不小心将目录的权限更改为0701(其他人可以执行),这似乎是微不足道的更改,那么每个人都可以执行,读取和写入具有0777
权限的任何文件(如果他们知道确切的权限)路径。
此外,您描述的情况只有在以下情况下才会发生:
A。文件已存在之后,将更改目录的权限。在这种情况下,您只需使用chmod -R o-rwx
即可删除其他用户的权限。
B。目录所有者已经在配置目录之后创建了文件,然后使用chmod o+wx
或类似方法添加了权限。由于在具有0700
权限掩码的目录中创建的新文件的默认掩码为0644
,并且唯一可以访问该目录的用户是所有者,因此没有其他方法。在这种情况下,请避免这样做。
无论如何,如果您有兴趣阅读和了解更多有关一般Unix系统中和特定于Linux的UID的信息,I wrote a comprehensive guide on the subject。