1. 查看权限
2.1 ll 命令与文件属性
当我们使用ll
命令查看文件列表时,大致会有如下的输出:
输出的前十个字符是文件的属性,例如-rwxrwxrwx
。其中第一个字符是文件的类型(本文就不去讨论了),后续的九个字符是文件模式,代表文件所有者(owner)、文件组所有者(group)、其他人(world)的读(r)、写(w)、执行(x)权限:
2.2 文件模式
设置文件模式,对文件和目录会产生以下的效果:
模式 | 文件 | 目录 |
---|---|---|
r | 允许打开并读取文件内容。 | 允许列出目录中的内容,前提是目录必须设置了可执行属性(x)。 |
w | 允许写入文件内容或截断文件。但是 不 允 许对文件进行重命名或删除,重命名或删除是由目录的属性决定的。 | 允许在目录下新建、删除或重命名文件,前提是目录必须设置了可执行属性(x) |
x | 允许将文件作为程序来执行,使用脚本语言编写的程序必须设置为可读才能被执行。 | 允许进入目录,例如:cd directory 。 |
2.3 举点栗子
文件属性 | 含义 |
---|---|
-rwx-––- | 一个普通文件,对文件所有者来说可读、可写、可执行。其他人无法访问。 |
-rw-––– | 一个普通文件,对文件所有者来说可读可写。其他人无法访问。 |
-rw-r–r– | 一个普通文件,对文件所有者来说可读可写,文件所有者的组成员可以读该文件,其他所有人都可以读该文件。 |
-rwxr-xr-x | 一个普通文件,对文件所有者来说可读、可写、可执行。也可以被其他的所有人读取和执行。 |
-rw-rw-–- | 一个普通文件,对文件所有者以及文件所有者的组成员来说可读可写。 |
lrwxrwxrwx | 一个符号链接,符号链接的权限都是虚拟的,真实的权限应该以符号链接指向的文件为准。 |
drwxrwx-– | 一个目录,文件所有者以及文件所有者的组成员可以访问该目录,并且可以在该目录下新建、重命名、删除文件。 |
drwxr-x-– | 一个目录,文件所有者可以访问该目录,并且可以在该目录下新建、重命名、删除文件,文件所有者的组成员可以访问该目录,但是不能新建、重命名、删除文件。 |
2. chmod命令
使用chmod命令可以更改文件或目录的模式(权限)。命令格式为chmod <权限> <文件/目录>
注意:只有文件的所有者或超级用户才能修改文件或目录的模式。
chmod命令支持两种不同的表示法来改变文件模式:
- 八进制数字表示法
- 符号表示法
2.1 八进制表示法
上文中说过,文件模式可以分成3 * 3个部分(3种用户 * 3种权限),而一个八进制数代表了3个二进制数字(每个二进制数字可以表示一个权限开关),那么使用三个八进制数就可以完美代表文件权限!
八进制数与文件权限的对应关系如下:
举点例子:
命令 | 文件模式 |
---|---|
chmod 777 file_name | rwxrwxrwx |
chmod 666 file_name | rw-rw-rw- |
chmod 600 file_name | rw------- |
chmod 744 file_name | rwxr–r– |
不知道有没有人还是不能理解,这里举个例子来讲解如何去设置这三个数吧:
- 假设现在有一个文件(xxx.txt),我们需要设置它的权限为:
- 文件所有者可以读、写、执行。
- 文件组所有者可以读、写。
- 其他人只能读。
- 根据上面的假设,我们需要设置的文件模式最终为:
rwxrw-r--
- 将这9个权限字符用9个二进制数(1表示有权限,0表示没权限)来表示:
111110100
- 将上面的9个二进制数转换成八进制数(每三个二进制数表示一个八进制数):
764
- 那么最终命令就是:
chmod 764 xxx.txt
2.2 符号表示法
chmod 命令支持一种符号表示法,来指定文件模式。符号表示法分为三部分:更改会影响
谁,要执行哪个操作,要设置哪种权限。
- 更改会影响谁
符号 影响谁 u ”user” 的简写,意思是文件或目录的所有者。 g 用户组。 o ”others” 的简写,意思是其他所有的人 a ”all” 的简写,是”u”, ”g” 和“o”三者的联合。 没有指定字符 等同于使用 “all”。 - 要执行哪个操作
字符 操作 + 加权限 - 删权限 = 只有指定的权限可用,其它所有的权限被删除 - 要设置什么权限
权限由“r”、“w”和“x”来指定(这应该不需要解释了吧)~
符号表示法应该比较好理解,这里就只写一下示例好了:
chmod u+x file_name
为文件所有者添加可执行权限。chmod u-x file_name
删除文件所有者的可执行权限。chmod +x file_name
为文件所有者,用户组,和其他所有人添加可执行权限。等价于 a+x。chmod o-rw file_name
除了文件所有者和用户组,删除其他人的读权限和写权限。chmod go=rw file_name
给文件所属的组和文件所属者/组以外的人读写权限。如果文件所属组或其他人已经拥有执行的权限,执行权限将被移除。chmod u+x,go=rw file_name
给文件拥有者执行权限并给组和其他人读和执行的权限。多种设定可以用逗号分开。