Skip to main content Link Menu Expand (external link) Copy Copied

Linux文件属性

Table of contents

文件属性查看

Linux系统中,每个文件都有自己的属性,包括文件类型与权限、文件名链接数、文件所有者账号、文件的所属用户组、文件容量的大小、文件创建日期或最近修改日期以及文件名等。在终端中,使用命令”ls -l filename”可以查看文件的属性。

文件类型与权限

文件属性的第一栏是文件类型与权限,总共有十个字符。其中:

  • 第1个字符:文件类型,可以是l(链接文件)、c(字符文件)、-(普通文件)、b(块设备文件)等等。
  • 第2至4字符(rw-):文件拥有者权限,r表示可读(read),w表示可写(write),x表示可执行权限。如果没有权限,则出现**-。
  • 第5至7字符(r–):所属组权限,表示该文件所属组的用户的组权限,权限说明同上。
  • 第8至10字符(r–):其他用户权限,即非本人且没有加入本用户组的其他账号的权限,权限说明同上。

文件名链接数

每个文件都会将它的权限与属性记录在文件系统的inode中,操作系统就是根据inode号来识别不同的文件。每个文件都会有一个inode,但是在Linux系统允许多个文件名指向同一个inode,这意味着可以用不同的文件名访问同样的内容,对文件内容修改会影响所有文件名,并且删除一个文件名,不影响文件名的访问,这就是Linux中的硬链接机制。文件属性的第二栏记录的就是多少不同的文件名链接到相同的一个inode号码。

文件所有者账号和所属用户组

文件属性的第三栏是文件所有者账号,第四栏是文件的所属用户组。

文件容量大小和创建/修改日期

文件属性的第五栏是文件容量的大小,默认为Bytes;第六栏是文件创建日期或最近修改日期,记录了文件的日期(月、日)及时间,如果时间太久,可能仅会显示年份信息。

文件名

文件属性的第七栏是文件名。如果文件名前多一个**.,比如”.readme”文件,表示此文件是隐藏文件。可以使用”ls”和”ls -a”命令查看隐藏文件与普通文件的区别。

文件属性及权限

在Linux系统中,文件的属性和权限是非常重要的概念,本文将介绍Linux中的文件属性、权限、修改文件属性及权限、默认权限和文件隐藏属性。

文件属性

在Linux中,每个文件都有一些属性,包括以下几个方面:

  • 文件名:文件的名称。
  • 文件类型:文件是普通文件、目录、链接文件、设备文件等类型。
  • 文件大小:文件占据的磁盘空间大小。
  • 文件权限:文件的读、写、执行权限。
  • 文件所有者:文件的拥有者。
  • 文件所属组:文件所属的用户组。
  • 文件创建时间:文件创建的时间。
  • 文件修改时间:文件最后一次被修改的时间。
  • 文件访问时间:文件最后一次被访问的时间。

可以使用ls -l命令查看文件的属性信息。

文件权限

文件权限是文件属性中的一个重要方面,它用来限制文件的访问。在Linux中,文件权限有三个级别:文件所有者、文件所属组、其他用户。每个级别都有读、写、执行三种权限。

文件权限可以用字符或数字来表示,其中字符表示法包括:

  • r:读权限
  • w:写权限
  • x:执行权限
  • -:无权限

例如,-rw-r--r--表示文件所有者有读写权限,文件所属组和其他用户只有读权限。

数字表示法将每个权限用数字来表示,其中读权限为4,写权限为2,执行权限为1。文件权限由三个数字表示,分别代表文件所有者、文件所属组、其他用户的权限。例如,-rw-r--r--可以用数字表示为644,其中6表示文件所有者有读写权限,4表示文件所属组和其他用户只有读权限。

修改文件属性及权限

chgrp

chgrp命令用于修改文件的所属组。需要注意,修改后的所属组必须是在/etc/group文件中存在的,否则无法完成修改。可以使用以下命令格式:

chgrp users [-R] dirname/filename

其中,-R参数表示递归地修改组属性,表示连同目录及其下属文件和目录都进行更新成为此用户组。

chown

chown命令用于修改文件的所有者。需要注意,用户必须存在于/etc/passwd中,否则无法生效。chown甚至可以顺带把用户组名称改了,也可以连带目录下的所有子目录或文件同时更改文件拥有者。可以使用以下命令格式:

chown [-R] 所有者名称 文件或目录
chown [-R] 所有者名称:用户组名称 文件或目录

其中,-R参数表示递归地修改所有者属性。

chmod

chmod命令用于修改文件权限。文件的基本权限有9个,分别是拥有者、所属组、其他人,三种身份各有“读、写、执行”三种权限。

数字类型修改法

Linux使用数字来代表各个权限,其中:

  • r:4
  • w:2
  • x:1

每种身份的最终权限是需要累加的,例如,-rwxr-xr-x表示成数字则是:

  • owner: 4+2+1=7
  • group: 4+1=5
  • others: 4+1=5

这表示该文件的权限数字为“755”,而修改权限的命令语法为:

chmod [-R] xyz dir/filename

其中,xyz就是权限数字,dir/filename表示文件或者目录名。

符号类型修改法

我们把上述的九个权限分别是 user、group、others 三种身份,借由ugo来代表,采用a表示所有身份权限,其余的rwx分别代表读、写、执行权限。使用如下表的方法:

字符含义
r读权限
w写权限
x执行权限
-无权限

例如,我们要对一个文件权限为-rwxr-xr-x修改为-rwxrwxr-x,则需要对用户组身份的权限追加w权限,对其他用户追加x权限,所以这样执行:

chmod g+w, o+x filename

或者

chmod g=rwx, o=rx filename

默认权限

文件的默认权限是通过umask值来设定的。Linux会对新建的目录和文件设定一个最原始的权限值,这跟umask有关。可以使用umaskumask -S命令查看umask值。

默认情况下:

  • 如果用户建立文件,是没有可执行权限的,即权限表示为-rw-rw-rw-,换算成数字就是666。
  • 如果用户建立目录,默认是全开放的,即权限表示为drwxrwxrwx,换算成数字就是777。

umask的值,就是该默认值,需要减掉的权限。例如,建立文件时,(-rw-rw-rw-)- (--------w-)==-rw-rw-r--,即664;建立目录时,(drwxrwxrwx)- (d-------w-)==drwxrwxr-x,即775。这就是为什么我们再没有umask值时,默认创建的文件和目录权限分别为“664”和“775”的原因。

文件隐藏属性

chattr

chattr命令用于配置文件属性,可以用于设置文件是否可修改、删除等。语法为:

chattr [±=] [选项] filename/dir

其中,[选项]可以是多个,可以通过--help查看具体选项的含义,filename/dir是文件名或者目录。

lsattr

lsattr命令用于显示文件的隐藏属性。语法为:

lsattr [选项] filename/dir

其中,[选项]可以是多个,可以通过--help查看具体选项的含义,filename/dir是文件名或者目录。