文件权限是如何计算的?

文件权限是如何计算的?

使用chmod我可以设置文件的权限,但是如果父 ( ..) 目录具有冲突的权限,会发生什么情况?

如果我使用touch类似的东西创建一个新文件,初始权限是如何计算的?权限是从 继承的吗..

为什么当我删除权限标志时我不能在目录中执行任何操作executable

$ mkdir temp;
$ chmod -x temp;
$ touch temp/a;
$ ls temp;
touch: cannot touch `temp/a': Permission denied

答案1

  1. 严格来说,UNIX 中不存在“权限冲突”:文件系统条目(目录、文件等)的访问权限决定了您可以或不可以对该对象执行哪些操作。其他文件系统条目的权限不参与其中,路径中所有祖先目录上的“x”位除外到一个文件(最多/)——参见 3。

  2. 新创建的文件的默认权限由创建程序允许的权限(或系统调用mode的参数)和当前进程决定。具体来说,“umask”中设置 (1) 的任何位都会在新创建的文件权限中重置 (0):采用类似于 C 的表示法:。阅读(查找)并了解详细信息。opencreatumaskfile_permissions = open_mode & ! umaskman 2 creatO_CREATman umask

  3. 目录上的“x”(可执行文件)位控制是否可以遍历该目录:遍历目录意味着能够cd进入该目录并访问其中包含的文件。请注意,列出目录内容的能力由“r”位控制。

进一步阅读:

答案2

首先……在 Linux 中一切都是文件。我所说的一切是指一切......你的文件夹、鼠标或键盘......都是一个文件。

现在,我们来回答您的问题:

  1. 文件夹和包含的文件之间不存在冲突。如果您有一个仅具有读取权限的文件夹,但该文件夹中有一个具有写入权限的文件,则您可以写入该文件。但是您无法在该文件夹中创建/删除文件。所以,不用担心冲突。您还可以读取文件夹的内容(列出文件夹)。

  2. 默认权限通常为 644(含义:rw 代表用户,r 代表组和其他)

  3. 目录的“可执行”位意味着“列出”该目录。换句话说,如果您使用 -xa 文件夹,您将无法知道其内容,这意味着您无法对其进行任何操作。

相关内容