chmod 命令
该命令用于改变文件或目录权限(只有 root 或拥有者才能修改权限),其语法如下:
chmod [{ugoa}{+-=}{rwx}] [文件或目录]
chmod [mode=421] [文件或目录]
加上选项 -R 表示递归修改。
我们先来解释第一个命令,u 表示所有者,g 表示所属组,o 表示其它人,a 则表示所有人(包括前面三类用户),+ 表示增加权限,- 表示减少权限,= 表示将原来的权限修改为现在指定的权限,r 表示读权限,w 表示写权限,x 表示可执行权限。
在之前我们创建了一个文件 /tmp/hello,这次用它来做一个关于权限的实验,首先我们先来查看一下该文件的权限:
可以清晰地看见, /tmp/hello 的所有者拥有读权限与写权限,而所属组与其他人都只有读权限。
现在我们有一个需求,要让 /tmp/hello 的所有者拥有可执行权限,这该怎么做呢?其实,看了上面我们对第一种 chmod 命令的剖析,写出修改权限的命令并不难:
然后我们来查看一下在修改权限之后,/tmp/hello 的所有者现在拥有的权限。
显然,现在该文件的所有者拥有了可执行权限,可见我们的修改权限命令执行成功。
我们再来看看 chmod 命令的第二种写法,为啥该写法不仅连什么用户所有者,用户所属组,其他人都没有,就连要修改的权限也没有?其实,这些东西都是有的,只不过比较隐蔽罢了。我们把权限抽象为数字进行表示,将 r 表示为4,将 w 表示为2,将 x 表示为1。在 chmod 的第二种命令中,mode 后面不是跟着三个数字吗?其实这三个数字分别代表用户所有者,用户所属组,其他人的权限。举个例子,如果我们想将所有者的权限修改为具有读权限与写权限,将所属组与其他人的权限修改为只有读权限,这应该怎么做呢?
由于所有者要具有读权限与写权限,那么就是 4+2=6,第一个数字填6,而所属组与其他人都只有读权限,也就是单单一个4就可以了,后两个数字均为4,那么结果就是 chmod 644 [文件或目录] ,是不是很直观,很简单呢!
下面我们在命令行测试一下:
我们再来看看现在文件的权限
显然,现在这个文件的权限又被我们修改回去了。
默认权限
新增目录,其默认权限为 rwxr-xr-x,新增文件,其默认权限为 rw-r–r--。
chown 命令
该命令用于改变文件或目录的所有者,其语法如下:
chown [用户] [文件或目录]
我们前面说过,改变文件的权限,root 跟文件拥有者都可以,但是如果是改变文件的所有者的话,只有 root 可以做这个操作。
下面我们来测试一下,首先我们先创建一个文件
然后我们再用 ls 命令看一下该文件的详细信息
显然,现在文件拥有者为 root
然后我们新增一个用户 ling,并将文件的拥有者改变为这个用户。
再打开 ls 命令来查看文件拥有者,可见现在已经变成了 ling,说明我们的 chown 命令测试成功。
chgrp 命令
该命令用于改变文件或目录的所属组,其语法如下:
chgrp [用户组] [文件或目录]