/etc/fstab 参数详解及如何设置开机自动挂载

本文介绍如何在Linux系统中通过编辑/etc/fstab文件来设置分区的自动挂载。涉及分区标识、挂载点选择、文件系统类型指定及挂载选项设置等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

某些时候当Linux系统下划分了新的分区后,需要将这些分区设置为开机自动挂载,否则,linux是无法使用新建的分区的。 /etc/fstab 文件负责配置Linux开机时自动挂载的分区。

Windows的文件结构是多个并列的树状结构,最顶部的是不同的磁盘(分区),如:C,D,E,F等。Linux的文件结构是单个的树状结构。最顶部的为根目录,即/。在根目录下,分为多个子目录,包括/bin、/boot、/dev、/etc、/home、/lib、/media、/mnt、/opt、/proc、/root、/sbin、/tmp、/usr和/var等。

磁盘Linux分区都必须挂载到目录树中的某个具体的目录上才能进行读写操作,而fstab正是负责这一配置。显然,根目录是所有Linux的文件和目录所在的地方,需要挂载上一个磁盘分区。上面还提到,Linux分区交换也需要独立使用一个分区,因此,安装一个Linux至少需要两个分区。(事实上,只使用一个分区安装Linux也是可能的,而且,如果电脑的物理内存足够大,交换分区并不是必须的)

 

本文将以某一典型的debian系统为例。打开 /etc/fstab 文件

1 [root@www ~]# vi /etc/fstab

默认情况下,fstab中已经有了当前的分区配置,内容可能类似:

# <file system> <mount point> <type> <options> <dump> <pass>
proc              /proc              proc            defaults              0            0
/dev/hda1   /                       ext3        errors=remount-ro     0       1
/swapfile       swap               swap           defaults              0            0
/dev/hdc     /media/cdrom0   udf,iso9660   user,noauto        0         0

由上面的内容可以看出,系统的 /dev/hda1 分区被挂载在根目录,文件系统是ext3。此外,还有proc、swap等特殊的“分区”,与 /dev/hdc 被作为光驱挂载在了 /media/cdrom0

因此,如果希望将新分区 /dev/hda5 挂载在 /home/new 目录下,则只需在fstab文件中加入一行:

/dev/hda5       /home/new               ext3    default   0       1

即可。

 

第一列可以是实际分区名,也可以是实际分区的卷标(Lable)。

如果磁盘是SATA接口,且有多个磁盘,则每个磁盘被标记为 /dev/hda 、 /dev/hdb、 /dev/hdc 等以此类推;而每个磁盘的分区被标记为 /dev/hda1、 /dev/hda2等。

如果磁盘是SCSI类型,则多个磁盘会被分别标记为 /dev/sda、/dev/sdb等等。分区同理。

如果使用标签来表示,则格式如:

1 LABLE=/

 

第二列是挂载点。

挂载点必须为当前已经存在的目录,为了兼容起见,最好在创建需要挂载的目标目录后,将其权限设置为777,以开放所有权限。

 

第三列为此分区的文件系统类型。

Linux可以使用ext2、ext3等类型,此字段须与分区格式化时使用的类型相同。也可以使用 auto 这一特殊的语法,使系统自动侦测目标分区的分区类型。auto通常用于可移动设备的挂载。

 

第四列是挂载的选项,用于设置挂载的参数。

常见参数如下:

auto: 系统自动挂载,fstab默认就是这个选项
defaults: rw, suid, dev, exec, auto, nouser, and async.
noauto 开机不自动挂载
nouser 只有超级用户可以挂载
ro 按只读权限挂载
rw 按可读可写权限挂载
user 任何用户都可以挂载
请注意光驱和软驱只有在装有介质时才可以进行挂载,因此它是noauto

第五列是dump备份设置。

当其值设置为1时,将允许dump备份程序备份;设置为0时,忽略备份操作;

第六列是fsck磁盘检查设置。

其值是一个顺序。当其值为0时,永远不检查;而 / 根目录分区永远都为1。其它分区从2开始,数字越小越先检查,如果两个分区的数字相同,则同时检查。

当修改完此文件并保存后,重启服务器生效。



<think>好的,用户现在想了解如何在虚拟机中通过编辑/etc/fstab文件实现共享目录的持久化挂载,也就是开机自动挂载。用户之前已经询问过如何在VMware和VirtualBox中添加共享目录,现在需要更深入的指导,特别是关于fstab的配置。 首先,我需要回顾之前的回答。在之前的指南中,我提到了在VMware中编辑/etc/fstab来持久化挂载共享文件夹的步骤,用户现在可能遇到了问题,或者想更详细地了解这个过程。另外,用户提供的引用中,引用[2]详细解释了/etc/fstab的结构,这对回答当前问题很有帮助,需要结合这些信息。 接下来,我需要考虑用户可能的真实需求。用户可能已经按照之前的步骤设置了共享文件夹,但希望确保每次启动自动挂载,而不必手动操作。这可能涉及到权限问题、正确的文件系统类型以及挂载选项的正确使用。例如,在VMware中使用vmhgfs-fuse,而在VirtualBox中使用vboxsf,这些都是不同的文件系统类型,用户需要明确区分。 另外,用户可能遇到的一些常见问题,比如挂载失败、权限不足、或者配置错误导致系统无法启动。因此,在回答中需要包含详细的步骤、验证方法以及故障排除的建议,比如使用mount -a测试配置,备份fstab文件等防御性操作。 还需要参考用户提供的引用,特别是引用[2]中关于/etc/fstab各字段的说明,确保回答中的示例符合这些规范。例如,swap分区的参数设置为0,而普通文件系统可能需要不同的选项。同时,引用[3]提到内核参数调整,虽然不直接相关,但可能在某些情况下影响挂载,但用户当前的问题主要集中在fstab配置,所以可能不需要涉及。 此外,用户的问题提到了virtual machine,所以需要区分不同虚拟化平台(VMware和VirtualBox)的配置差异。例如,VMware可能需要使用fuse.vmhgfs-fuse,而VirtualBox使用vboxsf,并且挂载点路径不同。需要分别说明这两种情况,确保用户根据自己的环境选择正确的配置。 用户还可能对权限设置不太清楚,比如在VirtualBox中需要将用户加入vboxsf组,或者在VMware中处理allow_other选项。这些细节需要在步骤中明确指出,避免用户遇到权限问题。 最后,考虑到用户可能有不同的使用场景,比如渗透测试或开发环境,可能需要强调安全性和最佳实践,比如避免使用过于宽松的权限,或者建议使用特定的挂载选项来增强安全性。 总结来说,回答需要结构清晰,分步骤指导,涵盖VMware和VirtualBox的不同配置,结合引用中的信息,提供验证方法和常见问题解决,同时注意安全性和用户可能遇到的陷阱。</think>### **分步指南:通过/etc/fstab实现共享目录持久化挂载** --- #### **一、核心原理** 编辑`/etc/fstab`文件可定义系统启动自动挂载的存储设备或共享目录。其字段格式为: ``` <设备标识> <挂载点> <文件系统类型> <挂载选项> <dump备份标记> <fsck检查顺序> ``` 引用[2]中明确说明:`dump`标记通常设为`0`(无需备份),`fsck`顺序设为`0`(不检查文件系统完整性)。 --- #### **二、具体操作步骤** --- ##### **1. VMware虚拟机配置** ###### **(1) 确定共享文件夹标识** - VMware共享文件夹通过`.host:/共享名称`标识,例如: ``` .host:/Kali_Share ``` ###### **(2) 编辑/etc/fstab** 1. 创建挂载点目录(若未创建): ```bash sudo mkdir -p /mnt/hgfs/Kali_Share ``` 2. 打开`/etc/fstab`文件: ```bash sudo nano /etc/fstab ``` 3. **添加以下配置**: ```bash .host:/Kali_Share /mnt/hgfs/Kali_Share fuse.vmhgfs-fuse allow_other,defaults 0 0 ``` - **关键参数解析**: - `fuse.vmhgfs-fuse`: VMware共享文件夹专用文件系统类型[^1] - `allow_other`: 允许非root用户访问(需配合`/etc/fuse.conf`中的`user_allow_other`选项) ###### **(3) 验证配置** ```bash sudo mount -a # 立即应用配置,验证是否报错 ls /mnt/hgfs/Kali_Share # 确认文件可见 ``` --- ##### **2. VirtualBox虚拟机配置** ###### **(1) 确定共享文件夹标识** - VirtualBox共享文件夹通过`vboxsf`文件系统标识,默认挂载点为`/media/sf_共享名称`,例如: ``` /media/sf_Kali_Share ``` ###### **(2) 编辑/etc/fstab** 1. **添加以下配置**: ```bash Kali_Share /media/sf_Kali_Share vboxsf uid=1000,gid=1000,rw,dmode=755,fmode=644 0 0 ``` - **关键参数解析**: - `uid=1000,gid=1000`: 将挂载目录所有者设为当前用户(需通过`id -u`查询实际UID) - `dmode=755`: 目录权限设置为755 - `fmode=644`: 文件权限设置为644 ###### **(3) 权限修正** ```bash sudo usermod -aG vboxsf $USER # 将用户加入vboxsf组 sudo reboot # 重启生效 ``` --- #### **三、防御性操作建议** 1. **备份原文件**: ```bash sudo cp /etc/fstab /etc/fstab.bak # 修改前必须备份 ``` 2. **避免系统崩溃**: - 使用`nano`而非`vim`编辑,防止误触快捷键导致异常 - 添加`nofail`选项(例如:`defaults,nofail`),当共享目录不可用时仍允许系统正常启动 3. **日志监控**: ```bash journalctl -xe | grep mount # 排查挂载错误 ``` --- #### **四、故障排除** - **错误1:挂载失败提示"bad option"** 解决方案:检查文件系统类型是否拼写错误(如`vboxsf`写为`vboxfs`) - **错误2:权限不足("Permission denied")** 解决方案: - VMware:在`/etc/fuse.conf`中取消注释`user_allow_other` - VirtualBox:确认用户已加入`vboxsf`组 - **错误3:启动时卡住** 解决方案: 1. 进入单用户模式(GRUB菜单按`e`键编辑启动参数,追加`single`) 2. 注释有问题的`/etc/fstab`条目 --- ### **相关问题** 1. 如何通过UUID替代设备路径实现更安全的挂载? 2. 共享目录挂载后Windows主机文件修改无法实时同步怎么办? 3. 如何在Kali Linux中配置SMB共享替代虚拟机专用共享? --- 通过上述配置,共享目录将在每次系统启动自动挂载。对于渗透测试场景,建议限制共享目录的写入权限(如使用`ro`只读选项),避免意外修改关键数据[^1][^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值