在一些例子中,我看到 somechown
代替了chmod
。我不知道在哪里使用chmod
和chown
。请向我解释它们之间的区别,以及何时以及为什么我应该使用其中之一。
答案1
简单来说,
chown
用于改变文件的所有权,而chmod
用于改变文件模式位。
chown
定义谁拥有该文件。chmod
定义谁可以做什么。
当你让某人成为某个文件的所有者时,他/她几乎可以对该文件进行任何他想做的事情,比如,他/她可以chmod
更改它的模式(即权限)来定义谁可以做什么。
$ 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
赋予所有人(包括所有者、组和其他所有人)读取、写入和执行的权利。
答案2
让我们创建一个文件
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 权限的速成课程。
答案3
在考虑文件(或目录等)的权限时,有两个因素:
- WHO拥有该文件的用户和组,以及
- 什么他们可以用它进行以下操作 – 读取、写入、执行或上述操作的组合。
chown
处理WHO。chmod
处理什么。您不能用其中一个来代替另一个。
简单的 Unix 权限将尝试访问文件的用户分为三类:
- 文件的所有者
- 属于该文件所属组的用户
- 其他人
chown
用于更改前两个。chmod
用于更改授予这些类型的权限。
答案4
已经有很好的答案了,但我想做出贡献,让权限非常容易理解
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
如果您想递归地更改权限。