在Linux系统中,文件是存储数据的基本单位。Linux将所有东西都视为文件,包括文本文件、目录、设备、套接字等。文件权限是一个关键的概念,它决定了谁可以对文件执行哪些操作。当你创建一个文件的时候,系统保存了有关该文件的全部信息,包括: 文件的位置、文件类型、文件长度、哪位用户拥有该文件,哪些用户可以访问该文件、 i节点、文件的修改时间、文件的权限位。 让我们使用ls -l命令,来看一个典型的文件:
total 4:该目录中所有文件所占的空间。
-rwxrw-r--:文件权限位。其中rwxrw-r--前的横杠:文件类型有七种,其代表普通文件。
1 :该文件硬链接的数目。
RedQ: 文件的属主。
RedQ:文件的属主RedQ所在的缺省组(也叫做RedQ)。
80: 用字节来表示的文件长度,记住,不是 K字节!
Sep 14 16:59: 文件的更新时间。
a_file:文件名。
1、文件类型
d 目录(Directory):
目录文件用于组织和存储其他文件和子目录。
目录文件中包含了其他文件和目录的条目。
目录文件的权限控制着谁可以列出(读取)、创建、删除和访问其中的文件和子目录。
l 符号链接(Symbolic Link):
符号链接是一种特殊类型的文件,它包含对另一个文件或目录的引用。
符号链接可以用于创建文件和目录之间的链接。
权限控制着谁可以读取符号链接,而不是实际目标文件或目录。
s 套接字文件(Socket):
套接字文件用于进程间通信,特别是网络通信。
套接字允许不同进程通过网络进行通信。
这些文件通常与网络服务器和客户端应用程序相关。
b 块设备文件(Block Device):
块设备文件用于与块设备通信,如硬盘驱动器。
块设备通常按块(通常为512字节或更多)读取和写入数据。
例如,硬盘驱动器是块设备,用于存储和检索数据块。
c 字符设备文件(Character Device):
字符设备文件用于与字符设备通信,如终端设备、键盘等。
字符设备通常按字符(单个字节)读取和写入数据。
例如,终端设备是字符设备,用于文本输入和输出。
p 命名管道文件(Named Pipe):
命名管道是一种特殊类型的文件,用于进程间通信。
它们提供了一种在不同进程之间传递数据的机制。
命名管道通常用于将一个进程的输出连接到另一个进程的输入。
- 普通文件(Regular File):
普通文件是最常见的文件类型,包括文本文件、二进制文件、图像文件等。
可以包含文本、数据或程序代码。
普通文件的权限控制着谁可以读取、写入和执行这些文件。
2、文件权限
读取权限(Read,表示为r):
读取权限允许用户查看文件的内容。
对于目录文件,读取权限允许用户列出目录中的文件和子目录。
如果文件的读取权限被禁用,用户将无法查看文件的内容。
写入权限(Write,表示为w):
写入权限允许用户修改文件的内容。
对于目录文件,写入权限允许用户在目录中创建、删除和重命名文件和子目录。
如果文件的写入权限被禁用,用户将无法修改文件的内容或对目录进行更改。
执行权限(Execute,表示为x):
执行权限仅适用于可执行文件(二进制文件、脚本等)和目录。
对于可执行文件,执行权限允许用户运行该文件。
对于目录文件,执行权限允许用户进入目录,查看其中的文件和子目录。
如果文件的执行权限被禁用,用户将无法运行可执行文件或进入目录。
特殊权限(Set User ID,Set Group ID,Sticky Bit):
特殊权限是一种附加权限,通常用于可执行文件和目录。
Set User ID(SUID):当文件拥有SUID权限时,它将以文件所有者的权限运行,而不是运行它的用户的权限。
Set Group ID(SGID):当文件拥有SGID权限时,它将以文件所属组的权限运行。
Sticky Bit:对于目录,Sticky Bit权限可以防止其他用户删除不属于他们的文件。只有目录的所有者可以删除其中的文件。
文件所有者(Owner):
文件的所有者是创建文件的用户。
所有者可以更改文件的权限,也可以更改文件的所有者。
rwxrwxrwx前面三位
所属组(Group):
文件的所属组通常与创建文件的用户的默认组相关联。
所属组权限控制着属于同一组的用户对文件的访问。
rwxrwxrwx中间三位
其他用户(Others):
"其他用户" 权限适用于系统中的所有其他用户,不包括文件的所有者和所属组。
这些权限控制着未被列为文件所有者或所属组成员的用户对文件的访问。
rwxrwxrwx后面三位
3、改变权限位
基本语法: chmod命令的基本语法:chmod 权限文件名
权限表示:权限可以使用数字或符号来表示。数字表示权限:使用三个八进制数字,分别表示文件所有者、所属组和其他用户的权限。每个数字由三个位组成,分别表示读取4、写入2和执行1权限。例如,chmod 755 文件名 将文件权限设置为 -rwxr-xr-x。符号表示权限:使用符号表示,包括加号(+)、减号(-)和等号(=)。例如,chmod u+r 文件名 将文件所有者的读取权限打开。
文件所有者、所属组和其他用户:u:文件所有者。g:所属组。o:其他用户。a:所有用户(文件所有者、所属组和其他用户的组合)。
授予权限:使用加号(+)表示授予权限,例如,chmod u+r 文件名 将为文件所有者打开读取权限。可以一次添加多个权限,例如,chmod u+rw 文件名 将为文件所有者打开读取和写入权限。
撤销权限:使用减号(-)表示撤销权限,例如,chmod u-r 文件名 将从文件所有者那里撤销读取权限。可以一次撤销多个权限,例如,chmod u-rw 文件名 将从文件所有者那里撤销读取和写入权限。
设置权限:使用等号(=)表示设置权限,例如,chmod u=rw,g=rx,o= 文件名 将为文件所有者设置读取和写入权限,为所属组设置读取和执行权限,为其他用户设置没有权限。
递归更改权限:若要递归更改目录及其内容的权限,可以使用-R选项,例如,chmod -R 755 目录名 将递归更改目录及其内容的权限。
查看权限:使用ls -l命令可以查看文件的当前权限。
了解和正确管理文件权限是Linux系统中的重要任务,它有助于确保文件和目录的安全性,并控制着用户对系统资源的访问。请注意,更改文件的权限需要超级用户或文件所有者的权限。不正确的文件权限设置可能会导致安全问题或访问问题,因此在更改文件权限时要格外小心。
领取专属 10元无门槛券
私享最新 技术干货