##参考文献:
https://askubuntu.com/questions/20105/why-shouldnt-var-www-have-chmod-777
https://blog.csdn.net/sinat_36118270/article/details/62899093
##1. 是否应该开放使用 chmod -R 777 /var/www 去开放全部权限给apache的默认目录?
不应该。因为,事实上这是一种非常危险方式。因为,777 的方式相当于赋予了陌生人读、写和执行的权限。这里给一个例子:
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
** 以上代码,20105文件夹被赋予了777的过度权限。
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用户能够对20105这个文件注入一些恶意的代码。
因此,针对这个的解决方案是 --- 给予适当的权限。针对 /var/www,我们只需要赋予755权限即可。这样,既保证了安全性,也保证了apache服务器下网页的可用性。至于为什么不用744,因为744会导致网页无法操作。
##2. 是否应该长期地使用root账户做所有操作呢?
root用户作为系统的最高权限者,由于权限地滥用,可能会导致系统奔溃和对系统安全造成威胁。所以,我们应该建立自己的用户,并只有在必要的时候才用su或者sudo对root用户的权限进行调用。
### 建立自己的用户
sudo adduser username //系统会提示以下信息: 正在添加用户“username”... 正在添加新组“username”(1001)... 正在添加新用户“username”(1001)到组“username”... 创建主目录“/home/username”... 正在从“/etc、skel”复制文件... 输入新的 UNIX 口令: your password
### 解决新用户sudo更改文件报错“xxx is not in the sudoers file. This incident will be reported.”的问题
--- 切换到root下:
su root
--- 给/etc/sudoer(默认只读)文件写权限
chmod u+w /etc/sudoers
--- 编辑sudoers文件,加入新建的用户
vi /etc/sudoers //添加信息 newuser ALL=(ALL) ALL //sudo要输入密码 newuser ALL=(ALL) NOPASSWD:ALL //sudo不需要密码
--- 撤销sudoers文件写权限
chmod u-w /etc/sudoers