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 个回答 Voted 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' 我怎样才能成为来自另一个电脑/用户的文件的所有者? 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.
文件权限
Ubuntu 继承了 Unix 的权限概念,对于文件或目录,我们可以允许或拒绝三个任务:
(遍历目录本质上意味着将其用作路径名的一部分。有关更多解释,请参见https://unix.stackexchange.com/a/13891或https://unix.stackexchange.com/questions/21251。)
此外,对于我们授予谁许可,我们有三种情况:
现在为了得到这些排序的组合,我们使用二进制系统,其中每个位定义一个权限。这可以最好地显示在下表中
现在,如果我们想要例如
a) 文件的所有者(= 用户)具有读取、写入和执行权限, b) 文件的组被授予读取和执行权限,以及c ) 所有其他人应该只有读取权限。
然后生成的文件权限将是:
用八进制数得到这个,例如。对于
chmod
命令或当我们必须了解错误消息时,我们需要填写上表,如下所示:用户(4+2+1=7)、组(4+0+1=5)、其他(4+0+0=4)需要每个权限数相加。然后得到的数字是:
我们现在有两个选项来更改权限位
chmod
:或者更简单
两个命令都会做同样的事情。
如果我们希望文件可以作为程序执行,我们将不得不更改此权限。
请注意,我们还必须更改此可执行文件所在目录的权限。只有同时设置了文件和目录的可执行位,我们才被允许将此文件作为程序运行。
将文件复制到我们的家时,它将失去它的权限,这将被我们自己的默认权限替换(除非我们使用高级选项进行复制,例如存档选项)。
另请注意,文件可能会从其挂载点继承其权限,resp。挂载选项。这在安装不支持 Unix 权限的 Windows 格式化驱动器时很重要。
用户和组
我们很快意识到这只是故事的一半。我们还需要整理物品。为此,每个文件或文件夹都有定义的所有者和定义的组成员身份。
每次我们创建一个文件时,我们将是一个文件的所有者,文件的组也将是我们。通过
ls -l
以下示例输出,我们可以看到权限、所有权和组:如果我们不是文件所有者,我们将收到
Permission denied
错误消息。只有 root 可以为所有文件更改此设置。这就是为什么我们sudo
在编辑不属于我们的文件的权限时必须使用的原因。有两个命令可以chown
用于用户和组以及chgrp
仅用于组。要将文件所有权从任何人更改为用户
takkat
和 - 可选地 -takkat
我们可以发出以下命令的组:仅将文件的组更改为
takkat
我们发出阅读命令的手册页以获取更多详细信息和选项。还有一个很好的更详细的指南推荐进一步阅读:
还可以在这里找到一些相关问题:
每个文件都具有三个不同类别的权限:
权限是指读取文件的权利,写入文件的权利,或者在脚本或程序的情况下执行文件的权利。
在 CLI 上,您可以
chown
,例如chown guillermooo
chgrp
,例如chgrp root
chmod
,例如chmod u+w filename.ext
(添加文件所有者的写入权限filename.ext
)如果您想了解有关这些工具的更多信息,请打开终端并输入
man [tool]
,例如man chmod
.