当前位置: 首页>>技术教程>>正文


文件权限如何工作?

, , ,

问题描述

您能简要解释一下用于管理文件权限的主要概念和命令行工具吗?

最佳解决方法

每个文件都有三个不同类别的权限:

  • 文件的所有者,

  • 与文件关联的组,和

  • 其他人。

权利是指在脚本或程序的情况下读取文件的权利,写入文件的权限或执行文件的权限。

在CLI上,您可以

  • 使用chown更改所有者,例如chown guillermooo

  • 使用chgrp更改组,例如chgrp root

  • 使用chmod更改权利,例如chmod u+w filename.ext(为文件filename.ext的所有者添加写入权限)

如果您想了解有关这些工具的更多信息,请打开终端并键入man [tool],例如: man chmod

次佳解决方法

Warning: Changing permissions of files and directories is potentially harmful and may render your system unusuable. When run recursively as root on the wrong path we may come to a point from where we will have to reinstall Ubuntu. It is therefore a good idea to not change permissions outside of HOME directories, and running the commands recursively as root should be avoided whenever possible.

文件权限

Ubuntu继承了Unix的权限概念,对于文件或目录,我们可以允许或拒绝三个任务:

  • 可以打开r(读取)文件/目录以进行读取访问。

  • 可以打开w(写)文件/目录以进行写/编辑访问。

  • 可以执行x(执行)文件,因为可以遍历程序/目录。

(遍历目录本质上意味着将其用作路径名的一部分。有关更多说明,请参阅https://unix.stackexchange.com/a/13891https://unix.stackexchange.com/questions/21251。)

此外,我们有三个案例,我们授予谁许可:

  • u(用户)文件的所有者被授予任何权限。

  • 该文件所属的g(组)组被授予权限。

  • o(其他)所有其他人都被授予许可。

现在要获得这些排序的组合,我们使用二进制系统,其中每个位定义一个权限。这可以在下表中得到最好的显示

    Permission | Binary | Octal  | User  | Group | Other |
    ======================================================
      r        |  100   |   4    |       |       |       |
      w        |  010   |   2    |       |       |       |
      x        |  001   |   1    |       |       |       |
    =======================================================
    Number

现在,如果我们想要的话

a)文件(=用户)的所有者具有读,写和执行权限,b)文件的组授予读和执行权限,c)所有其他人只应具有读访问权限。

然后生成的文件权限将是:

 u   g   o
rwx r-x r--

要在八进制数中得到这个,例如。对于chmod命令或当我们必须理解错误消息时,我们需要填写上表,如下所示:

    Permission | Binary | Octal  | User  | Group | Other |
    ======================================================
      r        |  100   |   4    |   4   |   4   |   4   |
      w        |  010   |   2    |   2   |   0   |   0   |
      x        |  001   |   1    |   1   |   1   |   0   |
    ======================================================
    Numbers add to                   7       5       4     

需要添加每个权限编号以总结用户(4 + 2 + 1 = 7),组(4 + 0 + 1 = 5)和其他(4 + 0 + 0 = 4)。结果数字是:

 u   g   o
 7   5   4

我们现在有两个选项可以使用chmod更改权限位:

chmod u+rwx g+rx o+r filename

或者更简单

chmod 751 filename

两个命令都会这样做。

The default permission of a newly created file in our home will be 664 (-rw-rw-r–).

如果我们希望文件可以作为程序执行,我们将不得不更改此权限。

  • 请注意,我们还必须更改此可执行文件所在目录的权限。只有同时设置了文件和目录的可执行位,我们才允许将此文件作为程序运行。

  • 将文件复制到我们家时,它将失去它的权限,这些权限将被我们自己的默认权限所取代(除非我们使用高级选项进行复制,例如存档选项)。

  • 另请注意,文件可以从其挂载点继承其权限。挂载选项。在安装不支持Unix权限的Windows格式化驱动器时,这很重要。

用户和组

我们很快意识到这只是故事的一半。我们还需要整理物品。为此,每个文件或文件夹都具有已定义的所有者和已定义的组成员身份。

每次我们创建文件时,我们都将成为文件的所有者,文件的组也将是我们。使用ls -l,我们可以看到权限,所有权和组,如以下示例输出所示:

-rw-rw-r--  1 takkat takkat    4096 Sep 12 20:25 test
  • We are only allowed to change permissions, groups or ownership of a file that is our’s.

如果我们不是文件所有者,我们将收到Permission denied错误。只有root可以为所有文件更改此值。这就是为什么我们必须在编辑非我们文件的权限时使用sudo。有两个内置命令可以为用户执行chown,为组执行chgrp

要将文件所有权从任何人更改为takkat,我们可以发出以下命令:

sudo chown takkat testfile

要将文件的组更改为takkat,我们会发出

sudo chgrp takkat testfile

阅读命令的联机帮助页以获取更多详细信息和选项。还有一个更好的更详细的指南建议进一步阅读:

还可以在这里找到一些相关问题

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/6332.html,未经允许,请勿转载。