七天掌握Linux-第二天

52 阅读6分钟

Linux学习教程:第2天 - 文件系统、基本操作与权限管理

1. 引言

在Linux系统中,文件系统是存储和组织数据的基础结构。了解文件系统的组成和目录结构,掌握文件的基本操作,以及理解文件权限和所有权的概念,是使用Linux系统的基本技能。今天,我们将详细讲解这些内容,并通过表格、例子代码和代码运行流程图来辅助理解。

2. Linux文件系统的组成和目录结构

Linux文件系统采用树状结构,根目录为/。以下是Linux文件系统的基本组成和目录结构:

目录/文件描述
/根目录,所有文件和目录的起点
/bin基本命令的二进制文件,如ls、cp、mv等
/boot启动加载程序所需的文件,如内核、引导加载器等
/dev设备文件,如硬盘、终端、打印机等
/etc系统配置文件,如passwd、group、fstab等
/home用户的主目录,每个用户都有一个独立的目录
/lib库文件,包括系统调用接口和内核模块
/media可移动媒体设备的挂载点,如CD-ROM、USB设备等
/mnt临时挂载点,用于挂载文件系统
/opt可选的应用程序和第三方软件安装目录
/proc虚拟文件系统,包含系统信息和进程信息
/rootroot用户的主目录
/run系统运行时生成的数据,如进程ID、锁文件等
/sbin系统管理命令的二进制文件,如shutdown、fsck等
/srv服务数据目录,用于存放服务所需的数据
/sys系统硬件信息的虚拟文件系统
/tmp临时文件目录,系统重启后通常会清空
/usr用户应用程序和文件,包括bin、lib、share等子目录
/var经常变化的文件,如日志文件、邮件队列等

3. 文件的基本操作

在Linux系统中,文件的基本操作包括创建、删除、复制、移动等。以下是这些操作的详细讲解和例子代码。

3.1 创建文件

可以使用touch命令来创建一个空文件,或者使用文本编辑器(如vinano)来创建一个包含内容的文件。

bash复制代码
	# 使用touch命令创建一个空文件

	touch example.txt

	 

	# 使用echo命令和重定向符号创建一个包含内容的文件

	echo "Hello, World!" > example.txt

	 

	# 使用vi编辑器创建一个文件并编辑内容

	vi example.txt
3.2 删除文件

可以使用rm命令来删除文件。如果希望强制删除文件而不提示确认,可以使用-f选项。

bash复制代码
	# 删除文件example.txt

	rm example.txt

	 

	# 强制删除文件example.txt,不提示确认

	rm -f example.txt
3.3 复制文件

可以使用cp命令来复制文件。如果希望复制文件时保留其属性(如时间戳、权限等),可以使用-p选项。

bash复制代码
	# 复制文件example.txt到example_copy.txt

	cp example.txt example_copy.txt

	 

	# 复制文件example.txt到example_copy.txt,并保留其属性

	cp -p example.txt example_copy.txt
3.4 移动文件

可以使用mv命令来移动文件或重命名文件。

bash复制代码
	# 将文件example.txt移动到/tmp目录

	mv example.txt /tmp/

	 

	# 将文件example.txt重命名为new_example.txt

	mv example.txt new_example.txt

4. 文件权限和所有权的概念

在Linux系统中,每个文件和目录都有权限和所有权的概念。权限决定了谁可以读取、写入或执行文件,而所有权决定了文件的拥有者和所属组。

4.1 文件权限

文件权限分为三类:读取(r)、写入(w)和执行(x)。每类权限可以应用于文件的拥有者(user)、所属组(group)和其他用户(others)。

可以使用ls -l命令来查看文件和目录的权限。

bash复制代码
	# 查看当前目录下文件和目录的权限

	ls -l

输出示例:

plaintext复制代码
	-rw-r--r-- 1 user group 0 Oct  4 12:34 example.txt

在这个例子中,-rw-r--r--表示文件example.txt的权限:

  • - 表示这是一个普通文件(如果是目录则为d
  • rw- 表示拥有者(user)有读取(r)和写入(w)权限,但没有执行(x)权限
  • r-- 表示所属组(group)有读取(r)权限,但没有写入(w)和执行(x)权限
  • r-- 表示其他用户(others)有读取(r)权限,但没有写入(w)和执行(x)权限
4.2 文件所有权

文件所有权包括文件的拥有者和所属组。可以使用ls -l命令来查看文件和目录的所有权。

输出示例:

plaintext复制代码
	-rw-r--r-- 1 user group 0 Oct  4 12:34 example.txt

在这个例子中,user是文件的拥有者,group是文件的所属组。

5. 使用chmod、chown等命令修改文件权限和所有权

5.1 使用chmod命令修改文件权限

chmod命令用于修改文件或目录的权限。可以使用符号模式或数字模式来设置权限。

5.1.1 符号模式

符号模式使用u(拥有者)、g(所属组)、o(其他用户)和a(所有人)来指定权限,以及+(添加权限)、-(删除权限)和=(设置权限)来修改权限。

bash复制代码
	# 为拥有者添加执行权限

	chmod u+x example.txt

	 

	# 为所属组和其他用户删除写入权限

	chmod go-w example.txt

	 

	# 设置拥有者具有读写权限,所属组具有读取权限,其他用户没有任何权限

	chmod u=rw,g=r,o= example.txt
5.1.2 数字模式

数字模式使用三个八进制数字来表示权限,每个数字对应一个权限类别(拥有者、所属组、其他用户)。每个数字的范围是0到7,其中:

  • 4 表示读取(r)权限
  • 2 表示写入(w)权限
  • 1 表示执行(x)权限
  • 0 表示没有权限
bash复制代码
	# 设置拥有者具有读写权限(6),所属组具有读取权限(4),其他用户没有任何权限(0)

	chmod 640 example.txt
5.2 使用chown命令修改文件所有权

chown命令用于修改文件或目录的拥有者和所属组。

bash复制代码
	# 修改文件example.txt的拥有者为new_user

	chown new_user example.txt

	 

	# 修改文件example.txt的拥有者为new_user,所属组为new_group

	chown new_user:new_group example.txt
5.3 使用chgrp命令修改文件所属组

chgrp命令用于修改文件或目录的所属组。

bash复制代码
	# 修改文件example.txt的所属组为new_group

	chgrp new_group example.txt

6. 例子代码和运行流程图

6.1 例子代码

以下是一个完整的例子,演示了如何创建文件、修改权限和所有权,以及删除文件。

bash复制代码
	# 创建一个新文件

	touch example.txt

	 

	# 查看新文件的权限和所有权

	ls -l example.txt

	 

	# 修改文件权限,使拥有者具有读写执行权限,所属组具有读取执行权限,其他用户具有读取权限

	chmod 755 example.txt

	 

	# 查看修改后的权限和所有权

	ls -l example.txt

	 

	# 修改文件拥有者为new_user,所属组为new_group

	sudo chown new_user:new_group example.txt

	 

	# 查看修改后的权限和所有权

	ls -l example.txt

	 

	# 删除文件

	rm example.txt
6.2 代码运行流程图

以下是上述例子代码的运行流程图:

plaintext复制代码
	开始

	  |

	  V

	创建文件 example.txt

	  |

	  V

	查看文件权限和所有权 (ls -l example.txt)

	  |

	  V

	修改文件权限 (chmod 755 example.txt)

	  |

	  V

	查看修改后的权限和所有权 (ls -l example.txt)

	  |

	  V

	修改