一、文件属性
Linux 系统是一个典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保证系统的安全性,Linux 系统对不同的访问用户访问同一个文件(包括目录文件)的权限做了不同的规定。在 Linux 中,我们可以使用 ll
或者 ls -l
命令来显示一个文件的属性以及文件所属的用户和组。
当我们使用 ll
或者 ls -l
指令查看文件时,文件信息开头的 10 个字符依次表示该文件的属性。如果没有权限,就会出现 -
号替代。从左到右这 10 个字符依次含义如下:
- 第
0
位表示 类型,在 Linux 中的一个字符代表这个文件是目录、文件或链接文件等,其中:-
代表 文件,d
代表 目录,l
代表 链接文档。 - 第
1-3
位 确定属主(该文件的所有者)拥有该文件的权限。 - 第
4-6
位 确定属组(所有者的同组用户)拥有该文件的权限。 - 第
7-9
位 确定其它用户拥有该文件的权限。 r
代表 可读,对于 文件 而言,可以 读取、查看该文件内容。对于 目录 而言,可以 使用 ls 查看目录内容。w
代表 可写,对于 文件 而言,可以 修改该文件内容,但是不代表可以删除该文件(删除一个文件的前提是对该文件所在的目录有写权限,才可以删除该文件)。对于 目录 而言,可以 在目录内创建、删除和重命名文件。x
代表 可执行,对于 文件 而言,可以 被系统执行。对于 目录 而言,可以 进入该目录。
二、修改文件的权限
我们可以使用 chmod
命令 对文件的权限进行修改。
chmod {[身份]}{权限操作符}{权限类型} 文件或目录
其中,身份 是指要修改权限的对象,u
表示 该文件的所有者(user),g
表示 所有者的同组用户(group),o
表示 其他用户(other),a
(可以省略)表示 所有用户(all)。权限操作符 是指对权限如何操作,+
表示 在原有权限的基础上新增该权限,-
表示 在原有的基础上移除该权限,=
表示 直接设置为该权限。权限类型可以是 r
表示 可读,w
表示 可写,x
表示 可执行。
如果我们要对文件的所有者、所有者所在的同组用户和其它用户分别赋予不同的权限,这需要使用 chmod
命令操作多次。此时,我们可以将三种身份各自的 读(0b100,即 4
)、写(0b010,即 2
)和 执行(0b001,即 1
)权限看作三位二进制数字表示,然后将 权限值累加 就可以看作当前身份的权限。
chmod 权限累加值 文件或目录
三、修改文件的所有者
我们可以使用 chown
命令 修改文件的所有者。
sudo chown [-R] 修改后的文件所有者 文件或目录
其中,-R
选项可以递归地对目录中所有文件修改所有者。
四、修改文件的所属组
我们可以使用 chgrp
命令 修改文件的所属组。
chgrp [-R] 修改后的文件所属组 文件或目录
其中,-R
选项可以递归地对目录中所有文件修改所属组。
同样,我们可以使用 chown
命令 修改文件所有者的同时修改文件的所属组。
sudo chown 修改后的文件所有者:修改后的文件所属组 文件或目录
我们在修改文件所属组时,文件的所有者要属于修改后的那个所属组。