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 三种身份,借由u
、g
、o
来代表,采用a
表示所有身份权限,其余的r
、w
、x
分别代表读、写、执行权限。使用如下表的方法:
字符 | 含义 |
---|---|
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
有关。可以使用umask
或umask -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
是文件名或者目录。