当前位置 主页 > 服务器问题 > Linux/apache问题 >

    理清PHP在Linxu下执行时的文件权限方法

    栏目:Linux/apache问题 时间:2018-09-29 13:41

    下面小编就为大家带来一篇理清PHP在Linxu下执行时的文件权限方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    一、文件权限及所属

    1、文件有三种类型的权限,为了方便期间,可以用数字来代替,这样可以通过数字的加减,用一个数字就能标识这个文件的权限了,例如7=4+2+1,表示读写执行3个权限都有,6=4+2,表示有读写权限没有执行权限等等

    2、联想web应用的rbac权限管理等,linux下同样有用户权限的管理,用户有用户名和用户组,一般创建用户时同时会创建同名的用户所属组。

    先root账号登录随便新建一个目录和一个文件

    #新建目录mkdir abc#新建文件touch abc.txt#查看ls -all

    查看时会发现:

    #d开头的为目录,-开头为文件,还有l开头的为连接等drwxr-xr-x  2 root root 4096 Jun 6 10:23 abc-rw-r--r--  1 root root  0 Jun 6 10:23 abc.txt

    先看上方蓝色的部分,第一位为标识符,去掉第一位,后面每三位分隔,以abc文件夹为例:d | rws | r-x | r-x

    所以abc文件夹中表示owner拥有rwx(7),group拥有rx(5),other拥有rx(5)。

    同样上方文件中红色的部分,依次为所有者的名称和所属组的名称,也就是abc文件夹的所有者为root,所属组为root。此时:

    a、如果是root用户来访问这个abc文件夹,相当与owner,拥有7的权限

    b、如果一个新的用户名test用户组为root来访问abc文件夹,则相当于group,拥有5的权限

    c、如果一个新的用户名test用户组为test的来访问abc文件夹,则相当与other,拥有5的权限

    二、文件各权限的作用

    本来还想边测试边说,但是太麻烦了,直接说结果吧。可以自己新建一个用户,然后修改权限来自己测试下。

    1、目录

      a、进入目录,即cd命令,所需要的权限为执行权限(x)

      b、查看目录内的文件,即ls命令,需要的权限为读取权限(r)

      c、创建删除目录内的文件夹/文件,即mkdir/touch命名,需要的权限为写如权限(w)

    顺便说下目录只影响下一级的,隔代不影响,好比一个目录abc/sub/,如果abc没有w权限,但sub有w权限,则可以在sub中创建文件,当然abc也需要有x权限,否则都进不去更不用说创建了,但只要能进去(可以通过切换root管理员的方法),就不会再受abc的影响,只会受sub的影响。

    一般我们目录会给5(rx)的权限,也就是读取和执行权限,只有图片上传或缓存等目录需要创建的才会给7(rwx)的权限

    2、文件

      a、文件打开,可以用cat/vim命令打开,所需权限为读取权限(r)

      b、文件修改,可以用cat/vim命令打开并保存,所需权限为写入权限(w)

      c、文件执行,可以直接./abc.out等执行,所需要权限为执行权限(x)

    这里需要说明的的是php(或者shell等)无论是命令行执行还是web端执行,名为执行,实际上是读取文件到php内核中取解析,所以只要有读取权限(r)就可以。

    一般我们文件会给4(r)权限,也就是读取权限,只有日志、缓存等需要向文件中写入内容的才会给6(rx)权限