Linux文件系统的理解总结
前言:在比赛当中,我们获取的flag文件并不总是在根目录、工作目录下,而是隐藏在了Linux系统当中某些位置。
参考内容 : Linux中“一切皆文件”是什么意思?中刘长元大佬回答
万物皆文件
Linux中的一切对象都可以通过文件的方式访问、保存、管理。它体现了一种面向对象的设计思想。
在Linux下,
普通文件、目录、硬件设备、进程和资源甚至命令,都以文件的形式存在,如,我们可以通过读取文件的形式查看进程信息、管理设备或工具。
一个解释实例
观察下面的命令,
ls /var
实际上就是基于文件完成的,ls是存在于/bin下的工具,以64-bit ELF文件形式存在,我们可以通过file查看它的文件属性,
file /bin/ls
/bin/ls: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, BuildID[sha1]=de05fcef79d88af9cf9a71ed38e73af0b179bfb2, stripped
将它翻译为以下命令,
/cat/ls /var
同时,在Linux当中,目录文件存放了文件信息和指向文件的指针,执行
vim /var
你可能会惊奇的发现,目录同样是文件,皆由以上的实验,你会惊奇的发现,这个命令竟然完全是由文件完成的,这就是我们说的,Linux当中万物为文件。
常见的文件类型
我们使用ls -al命令即可查看所有文件的详细信息,
(1) 普通文件:第一列的字母为-,颜色为灰色。绿色标记可执行文件(即ELF),红色为压缩类文件。
(2) 目录文件:第一列的字母为d,颜色为(深)蓝色,目录文件保存目录下文件的文件名和inode(文件索引节点,ls -i可查看inode)。
(3) 链接文件:第一列的字母为l,颜色为(浅)蓝色,是指向文件的软连接或符号链接,可理解为win的快捷方式。
软链接的创建方式,
ln -s a SoftlinkOfa
另一种为硬链接,但是它不属于链接文件,是为原文件创建别名文件,指向相同的inode,删除原文件和硬链接其中之一互不影响,inode指向的文件不会被删除。
ln -s a HardlinkOfa
(4) 设备文件:第一列的字母为c或b,颜色为黄色,在Linux当中,一切物理设备均被表示为文件,分为块设备文件(c\一般为硬盘等存储设备\随机读取)和字符设备文件(b\字节流形式读取的设备,如串口\顺序读取)。设备有自己的目录结构,当我们想使用和设备进行数据交换时,我们要将其挂载。对设备我们可以open、close、read、write,不同设备具体表现形式不同。
(5) 管道文件:第一列的字母为p,管道文件主要用于进程间通信,读写普通文件是在磁盘上速度慢,而创建管道文件可以基于内存读写,在读取数据时,FIFO 管道中同时清除数据,随写随读。
以使用 mkfifo命令来创建一个管道文件:
mkfifo fifo_file
(6) 套接字文件:第一列的字母为s,用于进程间的网络通信。
进程
通过 /proc文件夹,我们可以查到进程信息,文件名即对应的进程号,
lsof -p [pid]可以查看对应进程打开的文件,
对于指定名称的进程信息,我们可以通过如下方式查找,
ps -ef|grep [名称关键字]
进入该进程的文件夹可以看到相关文件目录,对于文件可以直接cat。
这篇博客深入探讨了Linux文件系统的核心概念,包括‘一切皆文件’的哲学思想,解析了普通文件、目录、链接文件、设备文件、管道文件、套接字文件等不同类型的文件,并通过实例展示了如何通过命令行操作这些文件。此外,还介绍了如何通过/proc文件系统获取进程信息以及使用ls、vim等工具进行文件操作。

被折叠的 条评论
为什么被折叠?



