欢迎您访问我的笔记本站旨在于记录一些平时工作中遇到的一些问题和解决方法,方便查阅,部分内容来源于网络,如有侵权请联系我删除
  • 微信微信
您现在的位置是:首页 > PHP后端

linux 上运行Thinkphp提示权限问题-[原创]

日期:2019-07-24 17:34:12 作者:tanyi 来源:我的笔记 浏览:1439 次
TP部署在linux会有目录权限问题,这个我想很多人都已经很熟悉了,除非你还没接触过tp或者没有将它部署在linux的经历,当然不止TP,只要框架里面目录涉及到自由写的权限方面的都需要去给对应的目录给予相应的权限

然而今天遇到了一个新问题,就是runtime目录已经给予了777权限了,还是无法写入缓存文件的问题,这种问题在网上搜的话也不会有太多收获,因为百分之九十九都是说:chmod -R 777 runtime,当然,这个答案在初步阶段是没有问题的,但是现在是执行了这个命令后还是提示无权限,这就有点尴尬了,思考了几分钟后将同一套代码放在另一台linux服务器(暂且叫他服务器B)上调试(nginx+php 两台服务器是一样),在服务器B给相关目录赋予权限后,代码运行正常,因此可以断定此问题跟代码无关,只能从其他方面分析。


于是又在网上搜索了半天关于linux权限方面的东西,最后终于解决。原因是linux系统有这样一个东西: SELinux


SELinux是安全增强型 Linux(Security-Enhanced Linux)的简称,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。


DAC:


在没有使用 SELinux 的操作系统中,决定一个资源是否能被访问的因素是:某个资源是否拥有对应用户的权限(读、写、执行)。

只要访问这个资源的进程符合以上的条件就可以被访问。

而最致命问题是,root 用户不受任何管制,系统上任何资源都可以无限制地访问。

这种权限管理机制的主体是用户,也称为自主访问控制(DAC)。


MAC:

在使用了 SELinux 的操作系统中,决定一个资源是否能被访问的因素除了上述因素之外,还需要判断每一类进程是否拥有对某一类资源的访问权限。

这样一来,即使进程是以 root 身份运行的,也需要判断这个进程的类型以及允许访问的资源类型才能决定是否允许访问某个资源。进程的活动空间也可以被压缩到最小。

即使是以 root 身份运行的服务进程,一般也只能访问到它所需要的资源。即使程序出了漏洞,影响范围也只有在其允许访问的资源范围内。安全性大大增加。

这种权限管理机制的主体是进程,也称为强制访问控制(MAC)。

而 MAC 又细分为了两种方式,一种叫类别安全(MCS)模式,另一种叫多级安全(MLS)模式。


更多介绍可自行搜索,我想这个东西做运维的应该比较熟悉,这里不再多说。这里我们要做的就是关闭这个东西

修改/etc/selinux/config 文件

将SELINUX=enforcing改为SELINUX=disabled

重启机器即可

重启后代码运行正常,完美解决。

提交评论
评论列表