什么是不同的文件权限代码,它们的含义是什么?

zec*_*ude 1 linux upload permissions php

我正在使用文件上传脚本。我目前正在上传一个文件,然后尝试回显链接到该文件的锚点,但是由于我使用了具有 0700 权限的 mkdir() 来上传文件,因此它不允许我访问查看该文件。

我很确定我遇到的问题是因为我使用的文件权限代码。问题是我只是不知道所有不同的文件权限代码是什么以及它们的含义。

有人可以列出所有不同的文件权限以及它们各自的作用吗?

And*_*ore 8

类 Unix 系统上的权限在三个不同的类中管理。这些类称为用户、组和其他类。

班级

文件和目录归用户所有。所有者确定文件的所有者类别。不同的权限适用于所有者。

文件和目录被分配了一个组,它定义了文件的组类。不同的权限适用于文件组成员的成员。所有者不必是文件组的成员。

既不是所有者也不是组成员的用户构成文件的其他类。不同的权限适用于其他人。

有效权限是根据用户的类别确定的。例如,作为文件所有者的用户将拥有授予所有者类的权限,而不管分配给组类或其他类的权限。

权限

在类 Unix 系统上有适用于每个类的三个特定权限:

  • 读取权限,授予读取文件的能力。为目录设置时,此权限授予读取目录中文件名称的能力(但不能查找有关它们的任何进一步信息,例如内容、文件类型、大小、所有权、权限等)。

  • 写入权限,授予修改文件的能力。为目录设置时,此权限授予修改目录中条目的能力。这包括创建文件、删除文件和重命名文件。

  • 执行权限,授予执行文件的能力。必须为可执行二进制文件(例如,已编译的 c++ 程序)或 shell 脚本(例如,Perl 程序)设置此权限,以允许操作系统运行它们。为目录设置时,此权限授予遍历其树以访问文件或子目录的能力,但不能查看目录中的文件(除非设置了 read)。

对目录(而不是文件)设置权限的效果是“最常被误解的文件权限问题之一”。

如果未设置权限,则会拒绝其授予的权限。在目录中创建的文件不一定与该目录具有相同的权限。要分配的权限是使用 umask 确定的。

八进制表示法

八进制表示法由三位数或四位数的 8 进制值组成。

使用三位八进制表示法,每个数字代表权限集的不同组成部分:分别是用户类、组类和“其他”类。

这些数字中的每一个都是其组成位的总和(另请参见二进制数字系统)。因此,特定位添加到总和中,因为它由数字表示:

  • 读取位在其总数上加 4(二进制 100),

  • 写入位将其总数加 2(二进制 010),并且

  • 执行位将其总数加 1(二进制 001)。

这些值永远不会产生模棱两可的组合;每个总和代表一组特定的权限。

下面总结了各个八进制数字值的含义:

0 --- no permission
1 --x execute 
2 -w- write 
3 -wx write and execute
4 r-- read
5 r-x read and execute
6 rw- read and write
7 rwx read, write and execute
Run Code Online (Sandbox Code Playgroud)

另请注意,您的文件可能归 user 所有foo,Apache 通常以不同的用户身份运行(我们称之为bar)。这意味着如果您希望 Apache 读取它,您需要授予groupother(取决于您的设置)读取您的文件的权限。

您可以在Wikipedia上找到有关 POSIX 文件系统权限的更多信息。