在Linux中流传着这样一句话“Linux中一切皆文件”,足以看出文件的重要性,因此,我们首先了解一些Linux下文件的一些基本信息。
键入一条命令:ls -l(该命令会列出当前目录下除隐藏文件外的所有文件和目录的详细信息),如下:
我们详细来看一下每个部分的含义:
文件类型有七种:
- d 目录文件。
- L 符号链接(指向另一个文件,类似于瘟下的快捷方式)。
- s 套接字文件。
- b 块设备文件,二进制文件。
- c 字符设备文件。
- p 命名管道文件。
- - 普通文件
文件访问者的分类:
文件和文件目录的所有者:u—User
文件和文件目录的所有者所在的组的用户:g—Group
其他用户:o—Others
文件访问权限的种类:
读(r/4): Read对文件而言,具有读文件内容的权限:对目录而言,具有浏览该目录信息的权限;
写(w/2):Write对文件而言,具有修改文件内容的权限;对目录而言,具有删除移动目录内文件的权限;
执行(x/1):execute对文件而言,具有执行文件的权限;对目录而言,具有进入目录的权限;
文件权限值的表示方法:
字符表示法
八进制数表示法
文件访问权限的设置方法
chmod
功能: 设置文件的访问权限
格式:chmod[参数] 权限 文件名
①用户表示符+、-和=权限字符
+:向权限范围增加权限代号所表示的权限;
- :向权限范围取消权限代号所表示的权限;
=:向权限范围赋予(覆盖)权限代号所表示的权限;
用户符号:u:拥有者 g:拥有者同组用 o:其他用户 a:所有用户
举个例子: chmod u+x hello.c
②三位八进制数的方法
举个例子: chmod 664 hello.c
chown
功能:修改文件的拥有者
格式:chown 用户名 文件名
举个例子: chown tangseng hello.c
chgrp
功能:修改文件或目录的所属组
格式:chrp 用户组名 文件名
举个例子: chgrp tangseng hello.c
权限粘滞位 ——chmod o+t
权限粘滞位是针对目录而言的,当目录被设置了权限粘滞位之后,即便用户对该目录有写入权限,也不能删除这个目录中其他用户的文件数据。而是只有该文件的所有者和root用户才有权删除。设置了权限粘滞位之后,就保持了一种平衡,允许各用户在目录中任意的写入删除数据,但是不能删除其他用户的数据。设置了权限粘滞位的目录,它的属性中其他用户的可执行权限x将会变成t。
当一个目录被设置为“粘滞位”,则该目录下的文件只能由:
①超级管理员删除(root)
②该目录的所有者删除
③该文件的所有者删除
为什么需要粘滞位:
目录的可执行权限表示你是否可以在这个目录下执行命令。如果目录没有x权限,则就无法对目录执行任何命令,甚至无法cd进入目录,即使你仍然对目录有r权限。目录的rw权限表示的是你可以对目录里面的文件进行读写,因此对于任何访问者而言,只要他对一个目录有w权限,那么他就能删除这个目录里面的文件。
这样的的话,那文件的权限是不是就成摆设了,只要对一个目录有w权限的话,任何用户都可以随意删除目录里面的文件,针对linux这种多用户的操作系统而言,这是我们绝对不允许的。因此linux里面通过权限粘滞位来解决这种情况。