命令名:chmod
语法:chmod? [{ugoa} {+-=} {rwx}]? [文件或目录]
?????????? ??????????? [mode=421]? [文件或目录]
?????????? ??????????? -R? (递归修改)
功能:改变文件或目录权限
文件或目录的权限只有所有者或root能够更改。
首先对该命令的语法中的第一行进行介绍,u指文件或目录的所有者,g指所属组,o指其它用户,a指所有用户(a代表all)。可以通过{+-=}分别给{ugoa}赋予rwx权限,rwx分别表示可读、可写和可执行权限。
例子1
如上图所示,命令chmod u+x file1 使file1文件的所有者增加了对该文件的执行权限。
例子2
如上图所示,同时执行两个或以上操作时,中间用逗号分隔。
例子3
可以用等号直接指定所有者、所属组或其它用户对该文件或目录的权限,如上图所示,g=rwx使文件file1所属组中的用户对该文件的权限变为rwx。
权限的数字表示:
r:4
w:2
x:1
这样的话 rwx=4+2+1=7,r-- = 4+0+0=4等。因此rwxr--r-- 的数字表示就是744
例子4
比如现在file1的权限为rwxrwx---,现在想要将它的权限修改为rwxr--r--,根据上面的介绍,则对应的数字为744,实现结果如下图所示。
然后是-R,如果我们改变一个目录的权限,那么该目录下面的目录或文件的权限不会改变,而一旦加了-R之后,则该目录下的所有文件或目录的权限都会改变。实验如下图所示。
如上图所示,先用mkdir -p d1/d2在当前目录下递归地创建目录,即在当前目录下创建目录d1,目录d1下又创建了目录d2。可以发现改变d1的权限后目录d2的权限并没有改变,而一旦加上-R之后,目录d1下的目录d2的权限也被修改了,即-R能递归修改目录d1下所有文件或目录的权限。
下面来深入地理解rwx权限
文件或目录的权限总结
符号 | 权限 | 对文件的含义 | 对目录的含义 |
---|
r | 读权限 | 可以查看文件内容 | 可以列出目录中的内容 | w | 写权限 | 可以修改文件内容 | 可以在目录中创建或删除文件 | x | 执行权限 | 可以执行文件 | 可以进入目录 |
现在假设一种场景,root用户创建了一个目录test,并在test目录下创建了一个文件file0,其中test目录的权限是rwxr-xr-x,file0的权限是rw-r--r--。现在另外创建一个用户user1,如果user1尝试删除文件file0,那么user1能删除该文件吗?答案是可以删除,我们可能会好奇,不是只有root用户才拥有对file0的写权限吗,这样说的话应该只有root才能删除file0,用户user1为什么能删除文件file0呢?这就是我们存在的一个认识误区,观察上表可以发现,能删除文件file0的前提是对file0所在的目录拥有写权限,而不是对file0拥有写权限。因为所有用户都拥有对test的写权限,所有用户user1能删除test目录下的file0文件。
|