chmod和chown之间的主要区别是什么?


43

在某些示例中,我看到有人用chown代替chmod。我不知道在哪里使用chmodchown。请向我解释它们之间的区别,何时以及为什么要使用两者之一。


18
没有人的使它尚未明确:一个CH安格斯的MOD e和其他CH安格斯了自己的呃。此外,阅读的 UAL。
停止危害莫妮卡

1
虽然chown也可以CH昂热的GRp,有chgrp专门用于这项任务。
停止危害莫妮卡

6
香蕉和椅子之间的主要区别是什么?不要坐在香蕉上。
沙杜尔

Answers:


48

让我们创建一个文件

touch rainbow

让我们看一下文件的元数据

$ ls -l rainbow
-rw-rw-r-- 1 zanna zanna 0 May 24 10:09 rainbow

信息的第一部分是文件类型(-开头是常规文件)和权限位

之后,我们看到所有者(zanna)和组(zanna)。我们可以使用chown命令来更改这些内容:

$ sudo chown pixie rainbow
$ ls -l rainbow
-rw-rw-r-- 1 pixie zanna 0 May 24 10:09 rainbow

我们chmod用来更改权限位

$ sudo chmod 333 rainbow
$ ls -l rainbow
--wx-wx-wx 1 pixie zanna 0 May 24 10:09 rainbow

由于权限位是分别为所有者,组和其他用户设置的,因此您可以通过组合chown和来控制不同用户的文件权限chmod。有关Linux中权限的速成课程,请参见此简短指南


1
+1表示图像。虽然没有八进制清晰度?还是chmod a+w例子?这样做很耗时,但是却获得了更多的选票:D
WinEunuuchs2Unix

2
@ WinEunuuchs2Unix哈哈,谢谢...我特意选择了一个特别无用的权限设置。如果我真的开始解释何时以及为什么要使用的每一种可能的排列chmodchown(这是过于宽泛的一个问题是迄今为止)我的回答将永远继续下去。试图保持简单
Zanna

96

简而言之 chown,用于更改文件的所有权,而chmod用于更改文件模式位。

  • chown 定义谁拥有文件。
  • chmod 定义谁可以做什么。

当您使某人成为文件的所有者时,他几乎可以在该文件的任何位置进行操作,例如,他可以chmod用来更改其mod(例如权限)以定义谁可以执行操作。

$ ls -l file
-rwxrwxr-x  2  ravexina admins   26 May  9 12:49 file

在上面的行中,我们可以看到ravexina是文件的所有者,admins是组。我可以使用:sudo chown dave:sudo file将文件的所有者更改为dave,将组更改为sudo;现在,该文件属于“ dave”,并且属于“ sudo”组中的每个人。

但是,通过chmod我们定义谁可以做什么?谁有权读取文件,写入文件或执行文件。例如:

chmod 777 file

向所有人(包括所有者,小组和其他所有人)授予读取,写入和执行的权利。

turnoff.us在此处输入图片说明


1
所有者无法对文件执行任何操作-删除或移动需要包含目录的写许可权。
muru

2
@muru是真的;)我的意思是读/写/执行,还有chattr可能影响我猜到的文件。
拉韦西纳

1
@KamilMaciorowski您知道,我知道,Ravexina知道,但是大多数人不知道。
muru

2
@KamilMaciorowski我没有要求你假装什么。您所缺少的是,大多数人并不认为删除或重命名文件是对目录的操作,而是对文件的操作。这就是为什么我们有这样的问题:superuser.com/q/373115/334516unix.stackexchange.com/q/48579/70524askubuntu.com/q/240424/158442很明显,你知道这些都是对目录操作(祝贺!),但是对此有一个普遍的误解,因此我注意到重命名或删除涉及目录权限,而不是文件权限。...
大师

1
@KamilMaciorowski ...这个问题是由一个不知道chmod和chown之间的区别的用户提出的,因此对我来说他们不知道重命名文件需要该目录的权限似乎是合理的。
muru

19

考虑文件(或目录,或其他内容)的权限时,有两个因素:

  • 拥有文件-用户和组,以及
  • 什么,他们可以用它做-读,写,执行或它们的组合。

chown谁打交道chmod处理什么。您不能使用一个代替另一个。

简单的Unix权限将尝试访问文件的用户分为三种类型:

  1. 文件的所有者
  2. 拥有文件的组成员的用户
  3. 其他人

chown用于更改前两个。chmod用于更改授予这些类型的权限。


7

一些要点/技巧可以补充以前的出色答案:

  • 您必须具有目录(及其上所有目录)的执行权限才能访问它
  • 使用-R选项可将更改以递归方式应用于包括目标和目标以下的所有内容,例如 chown -R www-data files/
  • 您可以使用以下语法同时更改用户和组 chown user:group myfile
  • 通常,使用'+'和'-'选项比设置绝对权限更容易/更好,特别是在处理文件和目录的组合时。例如,如果您要授予组对目录及其下所有内容的写入权限,则chmod -R 775 files/将使“ files /”以及目录中及其下的所有内容都可执行并可读,这可能不是每个文件的理想结果。使用chmod -R g+w files/只会添加群组写入权限,而不会影响其他任何内容。

6

已经有很好的答案,但是我想在权限很容易理解的地方做一个贡献

chmod u=r+w,o=r-w,g=-r-w test.php

u = user
o = other
g = group

这样,您可以轻松地将权限附加到文件。在上面的例子中

user = read + write
other = read but not write
group = not read not write

而且,-R如果您要递归更改权限,请不要忘记。


1

chown将改变拥有该文件,哪些集团所属,而chmod变化如何所有者和组可以访问文件(或者,如果他们能在所有访问)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.