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

在一些例子中,我看到一些使用chown而不是chmod 。 我不知道在哪里使用chmodchown 。 请向我解释它们之间的区别,何时以及为什么我应该使用它们。

我们来创建一个文件

 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 

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

简单来说, 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 filesudo chown dave:sudo file的所有者更改为dave ,将组更改为sudo ; 现在该文件属于“dave”,而“sudo”组中的每个人都属于。

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

 chmod 777 file 

赋予每个人(包括所有者,团体和其他人)读,写和执行的权利。

来自turnoff.us : 在此处输入图像描述

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

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

chown交易。 chmod处理什么 。 你不能使用一个而不是另一个。

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

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

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

一些要点/提示可以添加到以前的优秀答案中:

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

已经有很好的答案,但我想在权限很容易理解的情况下做出贡献

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

 u = user o = other g = group 

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

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

如果要以递归方式更改权限,请不要忘记-R

chown将更改拥有该文件及其所属的组,而chmod更改所有者和组可以访问该文件的方式(或者如果他们可以访问该文件)。