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

在本地主机上开发页面时,我有时会收到“权限被拒绝”错误,我可以通过运行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 

到目前为止,我已经创建了一个文件夹,并创建了一个具有“错误”权限的文件(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 

作为这个“恶意”用户,我能够将文件放入目录并将文本注入已存在的文件中。 在下面,在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” – 这意味着读,写和执行权限。

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

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

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