项目6 Linux文件系统
6.1 文件类型和文件系统
-
文件类型及表示符号
文件类型 符号 用途 普通文件 - 用于存放数据、程序等信息的一般文件,包括文本文件和二进制文件 目录文件 d 相当于Windows系统的文件夹,由该目录所包含的目录项所组成的文件 字符设备文件 c 存取数据时是以单个字符为单位的。/dev/audio是字符设备文件,对audio的存取是以字节流方式来进行的。 块设备文件 b 存取是以一个字块为单位。普通文件的处理是不必要对硬件进行过多操作的,而字符型设备和块设备就不同了,所以是以特别形式文件现。/dev/cdrom,/dev/fd0,/dev/hda都是磁盘(光驱,软驱,主硬盘),它们的存取是通过数据块来进行的。 套接字文件 s 套接字文件系统是一个用户不可见的,高度简化的,用于汇集网络套接字的内存文件系统,它没有块设备、子目录、文件缓冲,借用虚拟文件系统的框架来使套接字与文件描述字具有相同的用户接口。当用户用socket(family,type,protocol)创建一个网络协议族为family,类型为type,协议为protocol的套接字时,系统就在套接字文件系统中为其创建了一个名称为其索引节点编号的套接字文件 命名管道文件 p 负责将一个进程的信息传递给另一个进程,从而使该进程的输出成为另一个进程的输入。 符号链报文件 l 符号链接又叫软链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。 -
使用find命令查找指定类型的文件
格式:find /地址 -type [f d b c s p l] [-ls] [| wc -l]
-ls选项可以显示出找到的文件的详细信息
使用 ll [地址] 可以查看指定目录下的文件类型情况 -
文件命名规则
- 除字符“ / ”外,所有的字符都可以使用,但应避免使用特殊字符,如?@#$&()|;' ' " " < >
- 长度不超过255个字符
- 同一目录下不能有相同的文件名,不同目录下可以同名
- 若文件名的第1个字符为" . ",表示该文件为隐藏文件
- 目录名、文件名是区分大小写的
- 文件的属性与取名无关,文件名可以不使用扩展名(1 , 1.txt)
-
文件或目录的相关操作
- 创建目录:mkdir 目录名
- 创建文件:touch 文件名
- 查看文件:cat 文件名
-
目录、路径基础
- 目录:指包含许多文件项目的一类特殊文件;父目录、子目录、工作目录、用户主目录(Home Directory)
- 路径:由目录名加“ / “(作为目录名间的分隔符)组成一个”字符串“,表示文件或目录在文件系统中所处的层次;路径又分绝对路径和相对路径(绝对路径指由根目录 / 开始;相对路径则是由当前目录开始)
- ” . “ 表示当前目录;” .. “ 表示父目录(上一级目录);” ~ “ 表示用户主目录
-
文件系统类型
Linux的最重要特征之一就是支持多种文件系统,可以和许多操作系统共存。Virtual File System(虚拟文件系统)使得Linux可以支持多个不同的文件系统。
- Minix:最古老、最可靠的文件系统。
- Xia:minix的修正版。
- Ext:ext2的老版本。
- Ext2:ext2诞生于1993年,功能强大,方便安全。
- Ext3:ext2+log是linux通用的文件系统,是ext2的增强版本,它强化了系统的日志功能。
- ext4是一种针对ext3系统的扩展日志式文件系统,是专门为Linux 开发的原始的扩展文件系统(ext或extfs)的第四版。ext3升级到ext4能为系统提供更高的性能,消除存储限制,获取新的功能,并且不需要重新格式化分区,ext4会在新的数据上用新的文件结构,旧的文件保留原状。
- Smb:是一种支持Windows for Workgroups、Windows NT和Lan Manager的基于SMB协议的网络文件系统。
- NFS:网络文件系统。
- Msdos:与Msdos、OS/2等FAT文件系统兼容。
- Vfat:与windows中通用的fat16或fat32文件系统兼容。
- Umsdos:Linux下的扩展msdos文件系统。
- ISO9660:CD-ROM 标准文件系统。
- HPFS:OS/2文件系统。
- SYSV:UNIX最常用的System V文件系统 。
- Linux文件系统结构
Linux采用与Windows完全不同的独立文件系统存储方式。Linux的文件系统采用分层结构。其顶层为根目录,用符号“/”表示,在根目录下是不同的子目录。这个树状结构构成Linux中的文件系统,从而管理组织系统的所有文件。
Linux文件系统常用目录说明:
/:Linux系统目录树的起点。
/root:系统管理员(也叫超级用户)的主目录。
/boot:这里存放的是启动Linux时使用的一些核心文件。
/bin:bin是binary的缩写。这个目录存放着使用者最经常使用的命令。例如cp、ls、cat等等。
/home:用户的主目录,比如说有个用户叫sy,那么他的主目录就是/home/sy。注意:root用户的目录不在这里,而在/root里。
/dev:dev是device(设备)的缩写。这个目录下是Linux所有的外部设备,在Linux中设备也是文件,使用访问文件的方法访问设备。例如:/dev/sda代表第一个物理SCSI硬盘。
/lib:这个目录里存放着系统最基本的动态链接共享库,其作用类似于Windows里的.dll文件。几乎所有的应用程序都需要用到这些共享库。
/etc:这个目录用来存放系统管理所需要的配置文件和子目录。
/mnt:这个目录在刚安装好系统时是空的,系统提供这个目录的目的是让用户临时挂载别的文件系统。
/usr:这是最庞大的目录,我们要用到的应用程序和文件几乎都存放在这个目录下。
/sbin:s就是Super User的意思,也就是说这里存放的是系统管理员使用的管理命令和管理程序。
/tmp:用来存放临时文件的地方。
/var:这个目录中存放着那些不断在扩充着的东西,为了保持/usr的相对稳定,那些经常被修改的目录可以放在这个目录下,系统的日志文件就在/var/log目录中。
/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘上而是在内存里。
- 文件的链接
- Linux允许一个物理文件有一个以上的逻辑名,即可为一个文件创建一个链接文件,用来表示该文件的另一个名字。链接不同的文件可为之指定不同的访问权限,达到既可共享,又可控制安全的目的。链接分为硬链接和软链接。
- 硬链接:硬链接复制文件i-node,也就是保留所链接文件的索引节点(磁盘的物理位置)信息,即使文件更名或改变、移动,硬链接文件仍然存在。
- 软(符号)链接:软(符号)链接仅仅是指向目的文件的路径,类似于Windows下的快捷方式,如果被链接的文件更名或移动,符号链接文件就无任何意义。
- ln链接命令
硬链接格式:ln 源文件 链接文件
软链接格式:ln -s 源文件 链接文件
例如:
ln result.txt result1
ln –s result.txt result2
ls -il
注意:软链接可以指向目录,不允许将硬链接指向目录。
6.2 文件和目录权限管理
- 文件、目录访问权限
1)文件
读(r):允许读文件的内容
写(w):允许向文件中写入数据
执行(x):允许将文件作为程序执行
2)目录
读(r):允许查看目录中有哪些文件和目录
写(w):允许在目录下创建(或删除)文件、目录,修改文件名字或者目录名字
执行(x):允许访问目录(用 cd 命令进入该目录,并查看目录中可读文件的内容)
-
文件用户
文件所有者owner:也就是文件创建者
文件的同组用户group:同组用户对属于该组的文件有相同的访问权限
其他用户others:既非以上两种用户,也非root用户 -
文件权限表示法
- 字母表示法:rwx- 四位分别对应表示的是文件可读、可写、可执行、不可操作;如某文件的权限为rwxrw-r-x,以三位为分隔,所有者权限为rwx,同组用户权限为rw-,其他用户权限为r-x
- 数字表示法:r对应二进制的100,即十进制的4;w对应二进制的010,即十进制的2;x对应二进制的001,即十进制的1;-对应于二进制的000,即十进制的0
-
文件权限的相关命令
- 文件权限的查看:ls -l [文件名]
- 改变文件所有权:chown和chgrp
chown:改变文件的所有权,可改变文件的所有者和文件所在的组;格式:chown [-R] <用户[:组]> <文件或目录>,-R:对目录及其子目录进行递归设置。例如:chown sjh:sjh result.txt
chgrp:改变文件所在的组,chgrp [选项] [组名][文件名] - 修改文件的权限:chmod
数字修改法格式,chmod n1n2n3 <文件/目录>,其中n1代表所有者权限,n2代表同组用户权限,n3代表其他用户权限。例如:chmod 711 a.txt
字母修改法,通过给用户或组加减权限的方式来增减相应权限,chmod [ugoa][=+-][rwxugo] <文件/目录>(选项:(1)用户标识:所有者(u),同组(g),其他人(o),所有的人员(a);(2)设定方法:+ 增加权限,- 删除权限,= 分配权限,同时删除旧的权限;(3)权限字符:r(读),w(写),x(执行),u(和所有者的权限相同),g(和所同组用户的权限相同),o(和其他用户的权限相同)。)例如:chmod u=rwx,go=x a.txt
-
默认权限、隐藏属性、特殊权限
- 默认权限
umask命令
格式:umask [mask]
功能:设置文件或目录的默认权限。当用户创建文件或目录后,系统将设置一个默认权限,可通过命令umask查看或设置系统默认的权限。umask用一个3位2进制数来指定,由命令的mask可看出这是要屏蔽部分权限。当创建文件时,文件的权限就设置为创建程序请求的任何权限去掉umask屏蔽的权限。由于系统默认屏蔽的权限为022,因此新创建的目录权限就为777-022=755,即新创建的目录的权限为755(用字符表示就是rwxr-xr-x),表示所有者具有所有权限,同组用户和其他用户具有读和执行权限,没有写的权限。新创建的普通文件权限为666-022=644,即rw--r--r--。
- 文件隐藏属性
1)查看文件隐藏属性:lsattr
2)修改文件隐藏属性:chattr
chattr [+-=] [ ai] 文件或目录名称
a: 当设置a之后,这个文件将只能增加数据,而不能删除也不能修改数据,必须要为root才能设置这个属性。
i:不能删除,不能修改,不能改名。必须要为root才能设置这个属性。
举例:touch attrtest (此时,文件attrtest能改名,能删除,能修改)
lsattr attrtest
chattr +a attrtest(此时,文件attrtest不能改名,不能删除,不能修改,只能在文件尾追加内容)
cat >>attrtest
chattr +i attrtest
cat >>attrtest (此时还能不能追加数据???)
- 文件特殊权限有以下三种:
SUID ,SGID,SBIT
1)SUID:Set UID (只对二进制程序有效,对shell script无效)
例如:ls –l /usr/bin/passwd
注意:当用户执行passwd命令的时候,需要修改/etc/shadow文件。
2)SGID:Set GID
例如:ls –l /usr/bin/locate
注意:当用户执行locate命令的时候,需要读取/var/lib/mlocate/mlocate.db文件。
3)SBIT:Sticky Bit (只对目录有效)
例如:ls –dl /tmp (当用户在该目录下创建文件或目录时,仅有自己与root才有权利删除该文件)
6.3 文件的归档与压缩
-
文件压缩/解压命令
压缩/解压缩命令 压缩后的后缀名 打开压缩文件的命令 gzip/gunzip(gzip -d) * .gz zcat compress/uncompress * .z zcat bzip2/bunzip2(bzip2 -d) * .bz2 bzcat -
文件归档
压缩文件格式 说明 .tar 打包但未压缩的文件 .tar.bz2;.tbz;.tbz2 用bzip2压缩的打包文件 .tar.gz;.tgz 用gzip压缩的打包文件 -
tar命令
格式:tar <选项> 备份后的文件名 源文件或目录
功能:为文件和目录作备份,归档为tar文件,如设置选项还可以进行文件的压缩
选项(不可少,规定tar 命令要完成的操作):
-c 创建一个新文档。
-f 当与-c一起使用时,创建的tar文件使用该选项指定的文件名;当与-x一起使用时,则解除该选项指定的归档文件。
-t 显示包括在tar文件中的文件列表。
-v 显示文件的归档进度。
-x 从归档中抽取文件。
-z 使用gzip来压缩tar文件。
-j 使用bzip2来压缩tar文件。
-C 目录:指定解压缩后的目录
如打包dabao目录下的所有文件:tar -cvf dabao.tar dabao/
解包dabao目录下的所有文件:tar -xvf dabao.tar dabao/
打包dabao目录下指定文件:tar -cvwf dabao.tar dabao/
解包dabao目录下指定文件:tar -xvwf dabao.tar dabao/
彩蛋(因后续随笔内容更新,思维图并没有同步更新,读者自行注意)
未完,待续 ~