在本地主机上开发页面时,我有时会收到“权限被拒绝”错误,我可以通过运行来解决chmod -R 777 /var/www
。但是,人们告诉我,出于安全原因,这是一个坏主意。
为什么不应该/var/www
使用 777 的 chmod?
答案1
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 权限,您需要umask 022
分别将文件夹和文件设置为 0755 和 0644(又名)。这样,您作为文件所有者就可以编辑和操作它们,同时为 Apache 提供运行所需的最低访问权限。
答案2
本质上,拥有 777 的权限不会让你受到黑客攻击,但如果有人在任何地方站稳脚跟,它可以用来升级权限并完全控制你的计算机。最糟糕的是,你的权限使用的是“7”——这意味着读、写、并执行权限。
假设一个黑客想要控制你的电脑。他可能会使用网络浏览器连接到你的电脑,连接到http://yourcomputer.example.com:80/。如果您有任何允许他上传图片的页面,他可以将可执行文件重命名为以“.jpg”结尾,然后将其上传到您的服务器。现在,他在 Web 浏览器中浏览该文件并运行它,因为 Linux 不关心扩展名,它只看到它是一个可执行文件。这可能对他没有多大帮助,但因为它完全运行了,所以他知道它是以 apache 用户身份运行的。然后,他上传了一个修改后的版本,该版本将编辑 apache 的配置文件,授予他更多访问权限 - 假设 apache 将输出 /etc/passwd 的内容。然后,他可以使用该信息查看系统中存在哪些用户。然后,他可以使用 ssh 连接并尝试使用常用密码以这些用户身份登录 - 如果这不起作用,他将采取完全暴力攻击。如果他以具有 sudo 访问权限的用户身份进入,那么整个系统都是他的。
现在,您可能会说这不太可能,或者这不是真正的黑客的工作方式。这是事实,但关键是,通过将文件设置为 chmod 777,您已经打开了一个安全漏洞,黑客可以随心所欲地利用它。
如果你遵循最小特权原则,那么这个漏洞就不会出现,你的系统就更难被破解了。尽管正确行事更加困难,但你仍然应该尽一切努力去做。