当前位置: 首页>>技术问答>>正文


为什么不应该/var/www有chmod 777

, , , ,

问题描述

在localhost上开发页面时,我有时会收到”Permission denied”错误,我可以通过运行chmod -R 777 /var/www来解决这个错误。然而,人们告诉我出于安全原因这是一个坏主意。

为什么/var/www的chmod不应该是777?

最佳解决思路

777是一般的错误许可,我会告诉你原因。

尽管在赌场或拉斯维加斯看起来如此,777并不代表你的累积奖金。相反,为任何想要修改文件的人提供累积奖金。 777(及其丑陋的堂兄666)允许对其他人进行读写权限(对于777,执行)。您可以了解有关文件权限如何工作?的更多信息,但简而言之,有三组权限:所有者,组和其他。通过将权限设置为6或7(rw-rwx),您可以为任何用户编辑和操作这些文件和文件夹。通常,正如您可以想象的那样,这对安全性来说是不利的。

这是我的例子:

marco@desktop:~/Projects/AskUbuntu/20105$ cd ..
marco@desktop:~/Projects/AskUbuntu$ chmod 0777 20105
marco@desktop:~/Projects/AskUbuntu$ cd 20105/
marco@desktop:~/Projects/AskUbuntu/20105$ ls -lah
total 8.0K
drwxrwxrwx 2 marco marco 4.0K 2011-01-04 20:32 .
drwxr-xr-x 3 marco marco 4.0K 2011-01-04 20:32 ..
marco@desktop:~/Projects/AskUbuntu/20105$ touch test
marco@desktop:~/Projects/AskUbuntu/20105$ chmod 0666 test 

到目前为止,我已经创建了一个文件夹,并使用”bad”权限(777和666)创建了一个文件。现在我将切换到另一个用户并尝试操纵这些文件。

marco@desktop:~/Projects/AskUbuntu/20105$ sudo su - malicious
malicious@desktop:~$ cd /home/marco/Projects/AskUbuntu/20105
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ ls
test
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ ls -lah
total 8.0K
drwxrwxrwx 2 marco marco 4.0K 2011-01-04 20:33 .
drwxr-xr-x 3 marco marco 4.0K 2011-01-04 20:32 ..
-rw-rw-rw- 1 marco marco    0 2011-01-04 20:33 test
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ touch bad
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ echo "OVERWRITE" > test 
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ cat test 
OVERWRITE

作为这个”malicious”用户,我能够将文件放入目录并将文本注入已存在的文件中。在下面,在755的目录和644的文件中,我能够看到内部文件和目录,但我无法编辑文件,也无法创建新文件:

malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ cd /home/marco/Projects
malicious@desktop:/home/marco/Projects$ touch hey
touch: cannot touch `hey': Permission denied

对于Apache权限,您将分别想要保留文件夹和文件的0755和0644(AKA umask 022)。这允许您作为文件的所有者编辑和操作它们,同时为Apache提供操作所需的最低级别访问权限。

次佳解决思路

从本质上讲,拥有777的权限不会让你自己被黑客入侵,但如果有人在任何地方获得立足点,它可以用来升级权限并获得对你的计算机的完全控制权。最糟糕的是您的权限使用”7″ – 这意味着读取,写入和执行权限。

假设黑客想要接管你的电脑。他可以使用Web浏览器连接到您的计算机,连接到http://yourcomputer.example.com:80/。如果您有任何可用于上传图像的页面,他可以将可执行文件重命名为”.jpg”并将其上传到您的服务器。现在他在他的网络浏览器中浏览该文件并运行它,因为linux不关心扩展,它只看到它是一个可执行文件。这可能不会让他太多,但因为它运行起来,他知道它作为apache用户运行。然后,他上传了一个修改后的版本,该版本将编辑apache的配置文件,授予他更多访问权限 – 让我们说apache将输出/etc /passwd的内容。然后,他可以使用该信息来查看系统中存在的用户。然后,他可以使用ssh连接并尝试使用常用密码作为这些用户登录 – 如果这不起作用,他将采取完全的brute-force攻击。如果他作为具有sudo访问权限的用户进入,那么整个系统就是他的。

现在,您可能会说这不太可能,或者说真正的黑客不会如何运作。这是事实,但关键是通过将文件设置为chmod 777,您已经打开了一个黑客可以使用但他认为合适的安全漏洞。

如果您改为遵循Principle of least privilege,那么该漏洞就不会发生,并且您的系统难以破解。即使做正确的事情比较困难,你仍然应该尽一切努力去做。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1174.html,未经允许,请勿转载。