安全设置
上传网站后建议执行以下命令对网站目录进行权限设置,/path/to/dir替换为你网站目录。为了安全可以将一些不需要PHP运行的上传文件之类的目录去掉执行权限,参考:https://www.vpser.net/security/lnmp-remove-nginx-php-execute.html
1 |
chown www:www -R /path/to/dir |
当执行chown或chmod对网站目录属主属组或权限进行操作时可能会提示
1 |
chown: changing ownership of `/home/wwwroot/default/.user.ini' Operation not permitted |
解决方案是对.user.ini文件先进行chattr -i的操作。
1 |
chattr -i /home/wwwroot/yoursite/.user.ini |
如果是需要修改文件,记得修改完以后运行:
1 |
chattr +i /home/wwwroot/yoursite/.user.ini |
防跨目录设置
LNMP 1.2及更高版本防跨目录功能使用.user.ini,该文件在网站根目录下,可以修改.user.ini 里面的open_basedir的值来设置限制访问的目录或删除来移除防跨目录的设置。
LNMP 1.4上如果不想用防跨目录或者修改.user.ini的防跨目录的目录还需要将 /usr/local/nginx/conf/fastcgi.conf 里面的fastcgi_param PHP_ADMIN_VALUE “open_basedir=$document_root/:/tmp/:/proc/”; 在该行行前添加 # 或删除改行,需要重启nginx。/etc/init.d/nginx
chattr命令
有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了。chattr命令的作用很大,通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录。lsattr命令是显示chattr命令设置的文件属性。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
语法 chattr [-RV] [-+=AacDdijsSu] [-v version] 文件或目录 参数 描述 -R 递归处理所有的文件及子目录。 -V 详细显示修改内容,并打印输出。 – 失效属性。 + 激活属性。 = 指定属性。 A Atime,告诉系统不要修改对这个文件的最后访问时间。 S Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。 a Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。 i Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。 D 检查压缩文件中的错误。 d No dump,在进行文件系统备份时,dump程序将忽略这个文件。 C Compress,系统以透明的方式压缩这个文件。从这个文件读取时,返回的是解压之后的数据;而向这个文件中写入数据时,数据首先被压缩之后才写入磁盘。 s Secure Delete,让系统在删除这个文件时,使用0填充文件所在的区域。 u Undelete,当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件。 |
例子:
1 2 3 4 5 6 7 8 9 10 |
# 用chattr命令防止系统中某个关键文件被修改: chattr +i /etc/resolv.conf # 用lsattr查询文件属性: lsattr /etc/resolv.conf # 显示如下 ----i-------- /etc/resolv.conf # 让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件: chattr +a /var/log/messages |