上节我们学习了如何查看文件权限以及文件权限代码的含义,这节我们学习如何变更文件的权限。
我们先在桌面上创建一个secret.txt文件,使用命令:touchsecret.txt,如下图:
在桌面创建secret.txt这个文件后,我们看看这个文件的权限,使用命令:
ls-l,如下图:
我们看到新创建的secret.txt这个文件,它的权限代码是-rw-rw-r--。也就是对于我这个用户xiaozhi和xiaozhi用户组,具有可读可写的权限,不具有可执行权限,对于其他用户有读的权限,没有写和执行的权限。
那么我们想一想,这个secret.txt是我们自己写的一个文件,假如这个文件里面有一些秘密的东西,但是现在你创建之后,系统默认就给其他人读的权限了,这怎么行呢?这就需要改变这个文件的权限。
怎么办呢?
第一种方式:把Desktop/这个目录下面的所有文件的其他用户的可读权限都去掉(因为我们创建的secret.txt这个文件在Desktop这个目录里面)。
●修改文件权限的命令
那么我们返回到Desktop的上一级目录,然后使用命令:
chmod-Ro-rDesktop/*
说明:
chmod命令用于修改或设置文件的权限。
chmod命令修改文件权限主要有2种方式:字母法和数字法。我们这里先知道字母法就行,会用就行。
chmod命令字母法的语法:
chmod(ugoa)(+-=)(rwx)(文件名)
这个语法,每一个括号是chmod这个命令的一个参数,前三个括号在一起表示文件权限的设置模式,即整个命令就是chmod+设置模式+文件名。
chmod参数说明:
[ugoa]含义
uuser表示该文件的所有者,即用户。
ggroup表示与该文件的所有者属于同一组(group)者,即用户组
oother表示其它用户和用户组
aall表示这三者皆是
[+-=]含义
+增加权限
-撤销权限
=设定权限
[rwx]含义
rread表示可读取,对于一个目录,如果没有r权限,那么就意味着不能通过ls查看这个目录的内容。
wwrite表示可写入,对于一个目录,如果没有w权限,那么就意味着不能在目录下创建新的文件。
xexcute表示可执行,对于一个目录,如果没有x权限,那么就意味着不能通过cd进入这个目录。对于一个文件,意味着不能执行。
所以,chmod-Ro-rDesktop/*这个命令的意思就是:
去掉Desktop目录下的所有文件的可读权限。
*表示所有的东西,
o-r是参数,o代表其他的用户或用户组,-就是撤销,r就是可读权限。整体表示去掉其他用户的可去权限。
-R是chmod的option,即recursive的首字母,表示递归的,也就是说,如果一个文件里面有子文件,子文件里面又有子文件,无论有多少子文件,都一层一层往上找。在这里,就表示把Desktop目录下的所有文件以及它们的子文件全部都撤销可读取权限。
现在我们执行一下以上的操作,如下图:
然后我们看看Desktop里面的secret.txt这个文件的权限,操作如下:
我们看到,Desktop里面,包括secret.txt在内的所有文件的其他用户的权限,都没有r了,即都没有可读权限了。
上面第一种方式的命令是去掉了secret.txt这个文件所在目录下的所有文件的可读权限,所以也去掉了secret.txt的可读权限,这是一种方式,第二种方式就是直接修改去掉secret.txt这个文件的权限,还是遵循同样的语法,命令就是这样写:
chmodo-rsecret.txt
不过需要当前工作目录必须在Desktopdirectory里面,而上一个命令的目录是在homedirectory里面。