chmod和chown之间的主要区别是什么?
在一些例子中,我看到一些使用chown
而不是chmod
。 我不知道在哪里使用chmod
和chown
。 请向我解释它们之间的区别,何时以及为什么我应该使用它们。
我们来创建一个文件
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权限的速成课程,请参阅此简短指南 。
简单来说, 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
将sudo chown dave:sudo file
的所有者更改为dave
,将组更改为sudo
; 现在该文件属于“dave”,而“sudo”组中的每个人都属于。
但是用chmod
我们定义谁可以做什么? 谁有权读取文件,写入文件或执行文件。 例如:
chmod 777 file
赋予每个人(包括所有者,团体和其他人)读,写和执行的权利。
来自turnoff.us :
在考虑文件(或目录或其他)的权限时,有两个因素:
- 谁拥有该文件 – 用户和组,以及
- 他们可以用它做什么 – 读,写,执行或其组合。
chown
与谁交易。 chmod
处理什么 。 你不能使用一个而不是另一个。
简单的Unix权限将尝试访问文件的用户分为三种类型:
- 文件的所有者
- 拥有该文件的组成员的用户
- 其他人
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
更改所有者和组可以访问该文件的方式(或者如果他们可以访问该文件)。