文件和目录权限

​ 文件是操作系统用来存储信息的基本结构,是一组信息的集合。与其他操作系统相比,Linux系统最大的不同点是没有“扩展名”的概念,也就是说文件的名称和该文件的种类并没有直接的关联。例如,1.txt可能是一个运行文件,1.exe也有可能是一个文本文件,甚至可以不使用扩展名。在Linux系统中,如果文件名以“.”开始,表示该文件为隐藏文件,需要使用“ls -a”命令才能显示。

​ 一个Linux目录或者文件都会有一个所属主(user)和所属组(group)。所属主是指文件的拥有者,而所属组是指该文件的所属主所在的一个组。Linux这样设置文件属性的目的是保证文件的安全。例如,1.txt文件的所属主是zs,而2.txt文件的所属主是ls,那么ls是不能查看1.txt文件的,相应的zs也不能查看2.txt文件。有时我们也会有这样的需求,即使一个文件同时让zs和ls来查看,这如何实现呢?

​ 这时,先创建一个群组shares,让zs和ls同属于shares组,然后建立一个文件3.txt,且其所属组为shares,那么zs和ls都可以访问3.txt文件。Linux文件属性不仅规定了所属主和所属组,还规定了所属主、所属组及其他用户(others)对该文件的权限,可以通过“ ls -l”命令来查看这些属性。

1
2
3
4
5
6
7
8
9
10
在当前目录下用touch命令创建一个普通文件2.txt,用mkdir命令创建一个BB目录,用ln命令为2.txt创建软链接到BB目录里,再用“ ls -l”命令查看刚才创建的3个文件,代码如下。
[root@fishyoung~]# touch 2.txt
[root@fishyoung~]# mkdir BB
[root@fishyoung~]# ln -s ~/2.txt BB
[root@fishyoung~]# ls -l 2.txt; ls -ld BB; ls -l BB/2.txt
-rw-r--r--.1 root root 0Apr7 15:42 2.txt
Drwxr-xr-x.2 root root 19 Apr7 15:43 BB
lrwxrwxrwx.1 root root 11 Apr7 15:43 BB/2.txt-> /root/2.txt
[root@fishyoung~]#

image-20230125103018879

1
2
3
4
5
6
7
8
9
10
(1)第1列:文件类型权限,包含文件所属类型及用户对该文件的权限。第1列共11位,有的文件是10位,即没有最后面的一位“.”(此位与selinux和acl有关)。
①第1位用来描述该文件的类型,有
“-”“d”“l”“b”“c”“s”等。
a.“-”表示该文件为普通文件。
b.“d”表示该文件为目录。
c.“l”表示该文件为软链接文件。
d.“b”表示该文件为块设备,如 /dev/sda。
e.“c”表示该文件为串行端口设备,如键盘、鼠标等。
f.“s”表示该文件为套接字文件(socket),用于进程间通信。

​ ②后边的9位,每3位为一组,均是“r”“w”“x”三个参数的组合,其中“r”代表可读,“w”代表可写,“x”代表可执行。前三位为所属主(user,u)的权限,中间3位为所属组(group,g)的权限,最后3位为其他非本群组(others,o)的权限。

​ a.“-rw-r–r–.”代表该文件为普通文件,文件拥有者可读可写不可执行,文件所属组可读不可写不可执行,其他用户可读不可写不可执行。

​ b.“drwxr-xr-x.”代表该文件为目录。文件拥有者可读可写可执行,文件所属组可读不可写可执行,其他用户可读不可写可执行。

​ 对于一般文件来说,权限比较容易理解:“可读”表示能够读取文件的实际内容;“可写”表示能够编辑、新增、修改、删除文件的实际内容;“可执行”则表示能够运行一个脚本程序。但是,对于目录文件来说,“可读”表示能够读取目录内的文件列表;“可写”表示能够在目录内新增、删除、重命名文件;而“可执行”则表示能够进入该目录。

​ 文件的读、写、执行权限可以简写为rwx,也可分别用数字4、2、1来表示,文件所属主、所属组及其他用户权限之间无关联,具体见表3-6。

image-20230125103231852

​ 文件权限的数字法表示基于字符表示(rwx)的权限计算而来,其目的是简化权限的表示。例如,若某个文件的权限为7,则代表可读、可写、可执行(4+2+1);若权限为6,则代表可读、可写(4+2)。

​ 现在有这样一个文件,其所有者拥有可读、可写、可执行的权限,其文件所属组拥有可读、可写的权限,而其他人只有可读的权限。那么,该文件的权限就是rwxrw-r–,用数字法表示即为764。Linux系统的文件权限相当复杂,但是用途很广泛,建议读者把它彻底搞清楚之后再学习后面的内容。

练一练:

请分别计算数字表示法744、632、453、751所对应的字符表示法,然后把rwxrw-rw-、rw-rw–wx、rw-r-xr–转换成数字表示法。

1
2
3
4
5
(1)chown命令用来更改文件的所属主和所属组,该命令操作的语法格式为

chown[-R ]账户名[:组名]文件名

如果文件名是目录,并要求同时更改目录下的所有文件,则需要加入“-R”参数递归更改。