宝哥软件园

明确在Linxu下执行PHP时的文件权限方法

编辑:宝哥软件园 来源:互联网 时间:2021-09-04

一、文件权限和归属

1.一个文件有三种权限,为了方便可以用数字代替,这样这个文件的权限就可以通过加减数字用一个数字来标识。比如7=4 2 1表示读写执行的权限全部有三个,6=4 2表示有读写权限但没有执行权限等。

2.联想web应用的rbac权限管理等。linux下还有用户权限管理。用户有用户名和用户组。通常,在创建用户时,会同时创建同名用户所属的组。

首先使用root帐户登录,然后随意创建一个新的目录和文件

#创建新目录mkdir abc#创建新文件触摸abc.txt#查看ls -all时,您会发现:

#d以目录开始,-以文件开始,以连接开始,等等。DRWXR-XR-X2ROOT ROOT 4096 jun 6 10:23 ABAC-RW-R-R-1 ROOT 0jun 6 10336023 ABAC。TXT先看上面的蓝色部分,第一位是标识符,第一位去掉,每隔三位分开。

因此,abc文件夹指示所有者拥有rwx(7),组拥有rx(5),其他拥有rx(5)。

同样,上部文件中的红色部分是所有者的名称和组的名称,即abc文件夹的所有者是root,组是root。这时:

a、如果根用户访问此abc文件夹,则相当于所有者,拥有7个权限

b、如果一个新的用户名,测试用户组,是root访问abc文件夹,它就相当于group,拥有5个权限

c、如果一个新的用户名测试用户组被测试为访问abc文件夹,则它等同于其他,具有5个权限

二、文件权限的作用

我想边测试边聊,但是太麻烦了。我们就说说结果吧。您可以自己创建一个新用户,然后自己修改权限进行测试。

1.目录

a、输入目录,即cd命令,所需权限是执行权限(x)

b、检查目录中的文件,也就是ls命令,需要的权限是读权限(r)

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

对了,下一个目录只影响下一级,每一代都不影响。例如,一个目录abc/sub/,如果abc没有W权限,但是sub有W权限,可以在sub中创建文件。当然abc也需要X权限,否则进不去,更别说创建了,但只要能进(通过切换根管理员),就不会再受abc影响,只受Sub影响。

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

2.文档

A.可以使用cat/vim命令打开文件,所需的权限是读取权限(r)

b文件修改可以用cat/vim命令打开保存,需要的权限是写权限(w)

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

这里需要说明的是php(或者shell等。),无论是在命令行执行还是在web端执行,都叫做execution,它实际上是将文件读入php内核进行解析,所以只要它有read权限(r)。

一般来说,我们的文件会被赋予4(r)权限,即读取权限,并且只有日志、缓存等。需要将内容写入文件的用户将被授予6(rx)权限

之所以上面没有提到755、777、644的权限,而只提到个人权限,是因为你网站目录的权限不能保证与执行中使用的用户有任何关系,也就是说执行中使用的用户可能是所有者、群体或者其他。

第三,php执行的权限

当我们通过ssh连接到linux时,我们必须有一个用户名才能登录。同样,如果php想要处理与php相关的文件,也是由某个用户操作的。用户是在哪里创建或定义的?一般是在安装php环境的时候创建的。比如apache、nginx等环境默认会创建用户和用户组,而php会被这个用户读取,这可以通过查看配置文件来确认。

#apache在配置文件httpd中。confoser www group www # nginx并在配置文件nginx . mucier www或通过命名查看过程:

#查看apache进程PS-ef | grep http PD #查看nginx进程ps -ef|grep nginx#查看php-pfm获取ps -ef|grep php-pfm将显示apache为常规会议:

根1663 1 0 09:14?00:000:00/www/wd Linux/Apache/bin/httpd//主进程www 1697 1663 0 09:14?00:000:05/www/wd Linux/Apache/bin/httpd//子进程www 1698 1663 0 09:14?00:00:05/www/wd Linux/Apache/bin/httpd第一行显示是哪个用户在执行,主要是非root下。上面的描述是www用户正在运行apache进程来处理php文件。

这里需要注意的是,如果安装了php-pfm,那么在执行php-pfm时还应该检查用户名和用户组。(未安装,所以未实践)

默认值可能是其他用户和用户组,如nobody或apache,最上面的一个已被修改。此时,您应该在网站目录中使用ls-all来确认网站文件属于哪个用户,并在几种情况下进行解释:

一、例如,网站所有者是这样的:

index.php。网站的所有者是W. Ww,php executor是www,这意味着它拥有所有者权限。上面系统文件夹中的55 in 755根本不起作用,只要是7xx,就会在7(rwx)权限下执行。

b、如果网站所有者是这样的:

drwxr-xr-x2测试.用户为test,组属于www,php executor为www,执行组为www,表示在同一个组中,有组权限,上面系统文件夹中755中的7和5不工作,只要是x5x,就用5(rx)权限执行。

c、如果网站所有者是这样的:

DRWXR-XR-X2测试测试4096Jun 6 10:23系统DRWXR-XR-X2测试测试4096Jun 6 10:23 TMP-RW-R-1测试测试0Jun 6 10336023指标。服务器端编程语言(Professional Hypertext Preprocessor的缩写).站的主人是test,它所属的组是test,php executor是www,执行组是www,也就是说完全没关系,还有其他权限。上面系统文件夹中的755中的75不起作用,只要是xx5,就会以5(rx)权限执行。

所以不能简单的说修改权限是755,644,需要确认程序的执行者和网站的所有者才能确定权限。

目前为了省事(嗯,lanmpv3等。),很多集成环境将php的执行权限和网站所在的目录设置为www。此时一般是创建目录后755,创建文件后644。执行php时,有效的目录权限是7(所有目录都有创建和删除权限)和文件权限6(所有文件都有写权限)。这样不安全吗?通常,目录应该是5,文件应该是4。当有特殊要求时,权限应设置为7。出现上述情况,修改方式是修改apache/nginx用户和用户组,修改网站文件的所有者和所有组,以保证网站的安全。

以上只是基本的权限描述。

以上在Linxu下执行PHP时明确文件权限的方法,都是边肖分享给大家的内容,希望能给大家一个参考和支持。

更多资讯
游戏推荐
更多+