php获取文件的权限信息(获取权限信息、返回字符串涵义、二进制的转换方式、权限修改)

news/2024/10/27 22:26:40/

php获取文件的权限信息

  • 说明
  • 1.获取文件的权限信息
  • 2.返回文件权限字符的解读
  • 3.转为二进制权限
  • 4.修改权限

说明

在这里插入图片描述
(图片来源于网络)

文件权限是指文件或目录对用户和其他进程的访问许可。在 Unix 和 Linux 系统中,文件和目录都有三个权限:读、写和执行。这三个权限分别用数字 1、2 和 4 表示。
例如,文件 file.txt 可能有以下权限:

-rwxr-xr-x 1 user group other

其中,rwx 表示用户可以读、写和执行文件;r-x 表示用户可以读和执行文件;r-- 表示用户只能读取文件;-x 表示用户不能执行文件。
文件权限通常用八进制数表示,例如 644,表示文件对用户和其他进程具有读、写和执行权限。在 Windows 系统中,文件权限通常用十六进制数表示,例如 0644。
在权限设置中,通常需要考虑以下几个方面:
用户:谁可以访问文件或目录?
组:哪些用户组可以访问文件或目录?
其他:如何控制其他进程对文件或目录的访问?
通过设置文件权限,可以保护文件和目录的安全性,同时也可以控制文件的使用方式。

1.获取文件的权限信息

PHP 中可以使用 fileperms() 函数来获取文件的权限信息。该函数可以接收一个文件名或者文件句柄作为参数,并返回一个表示当前文件权限的八进制数值。你可以利用八进制数对比对应的权限标记,来判断文件的读写权限。这是一段示例代码:

function getFilePermission($filename) {clearstatcache(true, $filename);$perms = fileperms($filename);if (($perms & 0xC000) === 0xC000) {$info = 's';} elseif (($perms & 0xA000) === 0xA000) {$info = 'l';} elseif (($perms & 0x8000) === 0x8000) {$info = '-';} elseif (($perms & 0x6000) === 0x6000) {$info = 'b';} elseif (($perms & 0x4000) === 0x4000) {$info = 'd';} elseif (($perms & 0x2000) === 0x2000) {$info = 'c';} elseif (($perms & 0x1000) === 0x1000) {$info = 'p';} else {$info = 'u';}$info .= (($perms & 0x0100) ? 'r' : '-');$info .= (($perms & 0x0080) ? 'w' : '-');$info .= (($perms & 0x0040) ? (($perms & 0x0800) ? 's' : 'x' ) : (($perms & 0x0800) ? 'S' : '-'));$info .= (($perms & 0x0020) ? 'r' : '-');$info .= (($perms & 0x0010) ? 'w' : '-');$info .= (($perms & 0x0008) ? (($perms & 0x0400) ? 's' : 'x' ) : (($perms & 0x0400) ? 'S' : '-'));$info .= (($perms & 0x0004) ? 'r' : '-');$info .= (($perms & 0x0002) ? 'w' : '-');$info .= (($perms & 0x0001) ? (($perms & 0x0200) ? 't' : 'x' ) : (($perms & 0x0200) ? 'T' : '-'));return $info;
}// 使用示例
echo getFilePermission('example.txt'); // 返回 "-rw-rw-r--"

该函数将根据文件权限设置返回一个字符串表示文件权限。其中,第一个字符代表文件类型,后面九个字符分别代表文件拥有者、群组及其他人的读写权限,‘r’ 表示只读权限,‘w’ 表示可写权限,‘x’ 表示可执行权限, ‘-’ 表示无某种权限,通过这些字符的组合可以用来表示文件的全部权限信息。

2.返回文件权限字符的解读

返回结果:-rwxr-xr-x

-rwxr-xr-x,在Linux 系统中权限是区分用户的,即用户、组用户、其他用户,第一位表示文件的类型,-代表文件,d代表目录,其他每个用户占三个字符,这里-rwxr-xr-x对应如下关系

第一位用户组用户其他用户
-rwxr-xr-x

这是一个文件或目录的权限表示,一共由10个字符组成,从左到右依次表示:

  • 第一个字符表示文件类型(-表示普通文件,d表示目录,l表示符号链接文件等);
  • 接下来的三个字符表示文件所有者的权限,r表示读权限,w表示写权限,x表示可执行权限;如果没有权限,用-表示;
  • 接下来的三个字符表示文件所有者所在组的权限,格式与前面一致;
  • 最后三个字符表示其他用户的权限(即不是文件所有者也不是所在组的用户),格式与前面一致。

所以,-rwxr-xr-x 就表示这个文件的所有者有读、写、执行权限,所在组和其他用户有读、执行权限。这是一个非常常见的权限设置,表示这个文件所有者对它有完全控制权,而其他用户只能读和执行它。

3.转为二进制权限

在Linux系统中,文件权限用三个八进制数字来表示,分别对应文件所有者权限、所在组权限、其他用户权限。每个八进制数字由三个比特位构成,一共有八个比特位,每个比特位可以是0或1,表示各自的权限情况。

其中,r表示读权限,w表示写权限,x表示执行权限,对应的二进制数分别为:r=100, w=010, x=001。

因此,-rwxr-xr-x对应的三个八进制数字分别为: 755,对应每个比特位的权限如下:

文件所有者 : 7 (二进制 111)

  • rwx (即 4+2+1 = 7)

所在组: 5 (二进制 101)

  • r-x (即 4+0+1 = 5)

其他用户: 5 (二进制 101)

  • r-x (即 4+0+1 = 5)

其中,数字7表示所有权限都开启,即rwx;数字5表示读和执行权限开启,但是写权限关闭,即r-x。

4.修改权限

function chmod($file, $permissions) {if (file_exists($file)) {$permissions = octdec($permissions);chmod($file, $permissions);return true;} else {return false;}
}

这个函数接受两个参数:文件名和要修改的权限。首先,它会检查文件是否存在,如果存在,则使用 octdec() 函数将权限转换为十进制数,然后使用 chmod() 函数修改权限。如果文件不存在,则返回 false。

$file = '/path/to/file.txt';
$permissions = 0644; // 将权限设置为 640
if (chmod($file, $permissions)) {echo '文件权限已修改。';
} else {echo '文件权限修改失败。';
}

注:如果文件不存在,则无法使用 chmod() 函数修改其权限


@漏刻有时


http://www.ppmy.cn/news/216194.html

相关文章

【Web】云安全之元数据服务

前言 最近再挖SRC的时候,遇到了一处疑似SSRF的接口,并且尝试访问元数据服务,通的,但由于之前接触的较少,暂时没有思路,所以有了如下的文章。 本文详细介绍了元数据相关的一些知识点,以及如何通…

法规标准-UN R158标准解读

UN R158是做什么的? UN R158全名为针对驾驶员识别车辆后方弱势道路使用者,联合国对倒车系统和机动车的统一规定,该法规涉及批准倒车和机动车辆的装置,主要为保证倒车时避免碰撞,方便驾驶员观察了解车辆后部人员和物体…

完美解决小米笔记本风扇乱转的问题

在平衡模式下更改高级电源设置--->处理器电源管理--->最大出来状态 改成88%,或者改成低于88%; 转载于:https://my.oschina.net/u/1385936/blog/1815100

笔记本风扇声音大(处理器电源管理)

首先打开控制面板,打开“电源选项”, 点击“更改计划设置”, 点击“更改高级电源设置”, 点击“处理器电源管理”前的号, 系统散热方式全部改为“被动”, 最大处理器状态改99%。 Tips:如果没有…

戴尔笔记本——减低风扇声音的一种办法

1.在windows搜索框中,搜索Dell Power Manager,并打开其软件。 2.打开“散热管理”,选中“静音模式”,这样就可以长期风扇声音小了。若想让电脑风扇声音瞬间消失,则可以选择“疾速模式”,但这种模式下&…

笔记本更换散热风扇及硅胶

注意事项: 1:拆机更换有开不了机的风险 2:一定要单买导热系数高的散热硅胶 一:买一对风扇,cpu跟显卡散热风扇一对。 二:买散热系数高的硅胶,不要用送的 三:拆机更换 四&#xf…

笔记本计算机风扇声音大怎么办,教你怎么从解决笔记本风扇狂转、噪音过大!-电脑风扇声音大怎么办...

我刚买了战神Z7-KP7D1回来,但是刚买回来遇到问题,最不满的就是间歇性发作的风扇,这几天自己测试了许多方法终于总结出来。 1.如何从软件上解决风扇噪音过大的问题:首先最重要的是保证你的风扇没有物理上的问题(磨损、异响等)&…

笔记本计算机风扇声音大怎么办,怎么解决笔记本风扇声音大 笔记本风扇声音大解决办法【图文】...

在生活中笔记本对于大家来说并不陌生,有时大家在使用笔记本工作和看视频的时候会发现笔记本风扇声音大,这是什么原因导致笔记本风扇声音过大的呢?对于不懂电脑的人人来说就是问题, 笔记本风扇声音大怎么办呢?要不要去维修笔记本电…