AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 83
Accepted
guillermooo
guillermooo
Asked: 2010-07-29 12:05:50 +0800 CST2010-07-29 12:05:50 +0800 CST 2010-07-29 12:05:50 +0800 CST

文件权限如何工作?文件权限用户和组

  • 772

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

command-line permissions chmod
  • 2 2 个回答
  • 52060 Views

2 个回答

  • Voted
  1. Takkat
    2013-09-20T12:53:29+08:002013-09-20T12:53:29+08:00

    警告:更改文件和目录的权限可能有害,并可能使您的系统无法使用。当在错误的路径上以 root 身份递归运行时,我们可能会不得不重新安装 Ubuntu。因此,最好不要更改 HOME 目录之外的权限,并且应尽可能避免以 root 身份递归运行命令。

    文件权限

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

    • r(读取)文件/目录可以打开以进行读取访问。
    • w(写入)文件/目录可以打开以进行写入/编辑访问。
    • x(执行)文件可以被执行,因为程序/目录可以被遍历。

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

    此外,对于我们授予谁许可,我们有三种情况:

    • u (user) 文件的所有者被授予任何权限。
    • g (group) 文件所属的组被授予权限。
    • 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
    

    两个命令都会做同样的事情。

    我们家中新创建的文件的默认权限为 664 (-rw-rw-r--)。

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

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

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

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

    用户和组

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

    每次我们创建一个文件时,我们将是一个文件的所有者,文件的组也将是我们。通过ls -l以下示例输出,我们可以看到权限、所有权和组:

    -rw-rw-r--  1 takkat takkat    4096 Sep 12 20:25 test
    
    • 我们只能更改属于我们的文件的权限、组或所有权。

    如果我们不是文件所有者,我们将收到Permission denied错误消息。只有 root 可以为所有文件更改此设置。这就是为什么我们sudo在编辑不属于我们的文件的权限时必须使用的原因。有两个命令可以chown用于用户和组以及chgrp仅用于组。

    要将文件所有权从任何人更改为用户takkat和 - 可选地 -takkat我们可以发出以下命令的组:

    sudo chown takkat[:takkat] testfile
    

    仅将文件的组更改为takkat我们发出

    sudo chgrp takkat testfile
    

    阅读命令的手册页以获取更多详细信息和选项。还有一个很好的更详细的指南推荐进一步阅读:

    • Ubuntu 社区帮助:文件权限

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

    • 更改文件夹权限和所有权
    • 什么是“umask”,它是如何工作的?
    • 如何从命令行获取八进制文件权限?
    • 如何在 NTFS(或 FAT32)分区上使用“chmod”?
    • 'chmod u+x' 与 'chmod +x'
    • 我怎样才能成为来自另一个电脑/用户的文件的所有者?
    • 46
  2. Best Answer
    ParanoiaPuppy
    2010-07-29T12:17:28+08:002010-07-29T12:17:28+08:00

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

    • 文件的所有者,
    • 与文件关联的组,以及
    • 其他人。

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

    在 CLI 上,您可以

    • 更改所有者chown,例如chown guillermooo
    • 用 更改组chgrp,例如chgrp root
    • 更改权限chmod,例如chmod u+w filename.ext(添加文件所有者的写入权限filename.ext)

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

    • 30

相关问题

  • 如何在 Vim 中启用全彩支持?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何安装 .run 文件?

    • 7 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    如何获得 CPU 温度?

    • 21 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Marko Smith

    你如何重新启动Apache?

    • 13 个回答
  • Marko Smith

    如何卸载软件?

    • 11 个回答
  • Marko Smith

    如何删除 PPA?

    • 26 个回答
  • Martin Hope
    NES 如何启用或禁用服务? 2010-12-30 13:03:32 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    Olivier Lalonde 如何在结束 ssh 会话后保持进程运行? 2010-10-22 04:09:13 +0800 CST
  • Martin Hope
    David B 如何使用命令行将用户添加为新的 sudoer? 2010-10-16 04:02:45 +0800 CST
  • Martin Hope
    Hans 如何删除旧内核版本以清理启动菜单? 2010-08-21 19:37:01 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve