Linux的fstab文件

本文深入解析Linux系统中的fstab文件,包括文件的基本结构、各列的含义、常见文件系统类型、挂载选项及其作用,以及如何通过编辑fstab文件解决设备挂载问题。

注:本文的原文创建时间是2003年,最后更新时间是2009

Linux系统中,有一个/etc/fstab文件 。该文件是和mount命令结合使用的。该文件是一个配置文件,里面存储的是计算机上所有的存储设备和分区的信息,即这些设备以什么方式挂载到什么地方。如果在Linux上不能访问Windows的分区,或者不能挂载CD或软盘,或者不能使用CD-RW,则可能就是/etc/fstab文件配置错了(misconfigured)。因而,通常情况下可以通过编辑/etc/fstab文件来修复这些设备挂载问题。编辑/etc/fstab文件必须需要root权限。

不同机器的系统、设备或分区不同,fstab文件的内容就会不同,但是该文件的基本结构是一样的,下面是一个文件示例:

/dev/hda2/ext2defaults1 1
/dev/hdb1/homeext2defaults1 2
/dev/cdrom/media/cdromautoro,noauto,user,exec0 0
/dev/fd0/media/floppyautorw,noauto,user,sync0 0
proc/procprocdefaults0 0
/dev/hda1swapswappri=420 0

/dev/hda2

/dev/hda2/ext2defaults1 1
/dev/hdb1/homeext2defaults1 2
/dev/cdrom/media/cdromautoro,noauto,user,exec0 0
/dev/fd0/media/floppyautorw,noauto,user,sync0 0
proc/procprocdefaults0 0
/dev/hda1swapswappri=420 0

/

ext2

defaults

1

1

/dev/hdb1

/home

ext2

defaults

1

2

/dev/cdrom

/media/cdrom

auto

ro,noauto,user,exec

0

0

/dev/fd0

/media/floppy

auto

rw,noauto,user,sync

0

0

proc

/proc

proc

defaults

0

0

/dev/hda1

swap

swap

pri=42

0

0


可以看出,该文件每行包含了一个设备或分区的信息。其中,第一列是设备名,第二列是设备挂载点,第三列是文件系统类型,第四列是挂载选项,第五列是备份选项,第六列是文件系统检查选项.下面详细解读每一列:


  1. 第一、二列:设备名和挂载点

    第一、二列的内容是十分明确的(straightforward)。它们告诉了mount命令挂载的设备分区和挂载点,与你自己手动使用mount命令去挂载设备效果是一样的。在/etc/fstab中为设备指定的挂载点是该设备默认的挂载点,即在挂载该设备时,不指定其他挂载点的情况下会默认挂载到该/etc/fstab里指定的目录。

很多Linux发行版(不知道是不是这样翻译,Linuxdistros)会创建特殊的目录来作为 挂载点。大多数是用的目录/mnt,但有些(如SuSE)在/media下。上面的/etc/fstab 例中就是使用的SuSE的挂载点。

所以,命令:mount/dev/fd0 会把/dev/fd0挂载到/media/floppy,因为在/etc/fstab 指定该项。如果/etc/fstab中没有对应的项,则该命令执行时mount就会找不到挂载点。

用户可以自由地修改默认的挂载点,但该挂载点必须是系统上已存在的目录。如果不存 在,则可以自己创建它。


有些设备或分区是在Linux系统启动时自动挂载的,如下:

/dev/hda2/ ext2 defaults 1 1
/dev/hdb1 /home ext2 defaults 1 2

如果这些设备挂载不成功,则使用Linux系统就会出现问题,因为你无法访问/目录。 操作系统就是通过查找/etc/fstab文件来知道/dev/hda2/dev/hdb1的挂 载点的。(即根目录的挂载也是从该文件来制定的)


  1. 第三列:文件系统类型

    /etc/fstab文件的第三列指定了设备或分区的文件系统类型。系统支持很多种文件系统,但这里只考察一些最常用的。

  • Ext2ext3:通常情况下Linux系统的分区是ext3ext2曾是Linux的标准文件系统,后来ext3reiserfs变成了几乎所有的新Linux发行版的默认文件系统(我的ubuntu12.04上是ext4.Ext3是一个比ext2新的文件系统,不同之处就在于它的日志系统(journaled,意味着即使机器在不正常的情况下关闭了,数据也不会丢失,且系统在下次启动时不会花费时间来使用历史记录来检查文件系统。

  • Reiserfs:该文件系统很不错(原作者这样评价的)。和ext3一样,reiserfs也是一个日志文件系统,但是比ext3更高级。很多Linux发行版(包括SuSE)把它作为Linux分区的默认文件系统。

  • Swap:这个文件系统明是自己解释的(self-explanatory,是系统自己添加的?系统安装的时候确实是要指定的)。该文件系统类型(swap)是用在交换分区的。

  • Vfatntfs:USB这样的设备更可能格式化成vfat(也叫做FAT32)这样的格式.Windows的分区多可能是VfatNTFSWindows9x系列(9598ME)都使用的是Vfat,NT系列(NT2000XPVista,7)使用的是NTFS,但是也可以格式化成Vfat.

  • Auto:这不是文件系统类型。“auto”选项只是简单意味着文件系统类型会被自动检测到。如果看过很多fstab的示例,会发现floopyCD-ROM都是使用“auto”作为它们的文件系统。原因就在于它们的文件系统类型是多变的。一个floopy设备可以格式成windows的格式或在Linux EXT2下使用时又格式化成其他。因而诸如floopycdrom等媒体会让系统自己检测其文件系统类型。

  1. 第四列:挂载选项

    fstab的第四列列出了用于设备或分区的所有挂载选项。这是fstab里最麻烦的部分,但是熟悉一些常用的选项意义可以让你避免不少问题。下面会介绍一些常用的选项,更全的选项可以去参考mount

  • autonoauto:设置auto选项时,则该设备会被自己的挂载(是在系统引导时,或者使用了mount-a命令)。auto是默认的选项。如果不想让设备自动挂载,则可以使用noauto选项。设置了noauto时,则设备会在明确的挂载命令时挂载(即另外使用挂载命令来挂载这个设备)。

  • usernouser:这些是非常有用的选项。user选项允许常规用户去挂载该设备,而nouser选项只允许root用户挂载该设备。默认情况下是nouser。如果当前用户不能挂载cdromwindows分区或其他,则在/etc/fstab里添加user选项。

  • execnoexec:exec允许用户执行该分区上的二进制文件,而noexec就不允许了。noexec对那些包含有二进制文件,而你又不想让这些文件在系统里运行的分区有用,如windows分区。

  • ro:以只读方式挂载文件系统(read-only)

  • rw:以可读可写方式挂载文件系统。当挂载的设备或分区不能读写时,检查下是不是没设置该选项

  • syncasync:设置文件系统的I/O方式。sync意味着同步(synchronously)。在示例中,floppy设备用到了该选项。实际作用就是:当你向floppy盘中复制文件时,同时会把修改写到物理盘中。相反的,async选项就设置了异步I/O,这时,再向软盘复制文件时,则修改会在命令执行一段时间后才会写到物理设备中。这种方式有时是非常好的,但是可能会产生冲突,如在未umount软盘的情况下就移除了该设备,则复制的文件可能根本就没有写到软盘上。默认情况下,使用的是async。如果经常会在没有umount设备的情况下就移走设备,则最好设置sync

  • defaults:总的默认设置选项为:rw,suid,dev,exec,auto,nouserasync

  1. 第五、六列:备份和核对(check)选项

    dump是一个备份工具,fsck是一个文件系统核对工具。这里会简单地介绍下,详细的情况需要参考相关命令。

    dump工具检查fstab的第五列并使用对应的数子来决定文件系统是否该备份。如果是0,则不会对文件系统备份。该选项大多数情况下为0

    第六列是fsck选项。fsck会检查fstab第六列的数字,该数字决定了fsck核对文件系统的顺序,如果为0,则不核对该文件系统。


参考文献:http://www.tuxfiles.org/linuxhelp/fstab.html

<think>好的,我现在需要回答用户关于Linux fstab文件中suid挂载选项的具体作用的问题。首先,我得回忆一下fstab文件的基本结构和各个字段的含义。用户提到的引用[2]里提到了fstab的配置格式,包括文件系统、挂载点、类型、选项等部分。suid属于挂载选项中的一个,所以我要先明确suid选项的作用。 接下来,suid(Set User ID)是Linux中一个权限标志,通常用于可执行文件,允许用户以文件所有者的权限运行程序。当挂载文件系统时,默认情况下可能支持suid,但某些情况下可能需要显式设置。用户的问题是关于挂载选项中的suid,即是否允许挂载的文件系统上的suid生效。例如,如果使用nosuid选项,会禁用suid,而suid选项则是启用。但根据我的记忆,默认情况下大多数文件系统是启用suid的,所以suid可能作为默认选项存在,而nosuid是用来禁用它。 需要确认这一点,可能需要查阅相关文档或手册。比如,mount命令的man页中会说明各个选项的作用。根据知识,nosuid会忽略set-user-identifier和set-group-identifier位,而suid则允许它们。因此,在fstab中指定suid可能是为了覆盖之前的nosuid设置,或者确保即使有默认选项的情况下仍然启用suid。 用户提供的引用中并没有直接提到suid选项,但引用[3]提到了传递挂载选项的问题,这可能涉及到如何正确设置选项。例如,在NFS挂载时可能需要显式启用suid,尤其是在某些安全配置较严格的环境中。 另外,需要举一些实际例子说明suid的应用场景。比如,/usr/bin/passwd这个程序通常设置了suid位,以便普通用户修改自己的密码。如果挂载的文件系统禁止了suid,这些程序将无法正常工作。 同时,需要注意安全风险。启用suid可能带来安全隐患,因为恶意用户可能利用具有suid权限的程序提升权限。因此,在不可信的文件系统上通常会使用nosuid选项来增强安全性。 总结起来,suid挂载选项的作用是允许挂载的文件系统上的suid和sgid权限位生效,而nosuid则禁止它们。在fstab中指定suid通常是为了确保这些权限位正常工作,特别是在需要这些功能的场景下。</think>在Linux系统中,`/etc/fstab`文件中的`suid`挂载选项用于控制文件系统上`set-user-id`(suid)和`set-group-id`(sgid)权限位的生效。以下是具体解释: --- ### 1. **`suid`选项的作用** - **功能说明**: `suid`选项允许挂载的文件系统**支持suid/sgid权限位**。若未显式指定此选项,某些文件系统类型(如网络文件系统或特定安全配置的环境)可能默认禁用suid功能[^3]。 - **典型场景**: 当文件系统上的可执行文件需要以文件所有者权限运行时(例如`/usr/bin/passwd`修改用户密码),必须启用`suid`选项,否则程序会因权限不足而失败。 --- ### 2. **默认行为与显式配置** - **默认情况**: 大多数本地文件系统(如ext4)默认启用`suid`,无需额外配置。 - **需显式指定的场景**: - 覆盖先前的`nosuid`设置(如从父挂载点继承的选项)。 - 网络文件系统(如NFS)或特殊设备挂载时,需通过`suid`明确启用权限位支持[^3]。 --- ### 3. **安全性与`nosuid`对比** - **`nosuid`选项**: 禁用suid/sgid权限位,常用于提高安全性(如挂载外部存储或不可信文件系统),防止权限提升攻击。 - **风险权衡**: 若挂载的文件系统包含必需suid的程序(如系统工具),必须使用`suid`选项;否则应优先选择`nosuid`以增强安全性。 --- ### 4. **配置示例(`/etc/fstab`)** ```bash # 显式启用suid(通常无需手动添加,因默认启用) UUID=1234-ABCD /mnt/data ext4 defaults,suid 0 2 # 禁用suid UUID=5678-EFGH /mnt/untrusted ext4 defaults,nosuid 0 2 ``` --- ### 5. **验证方法** ```bash # 查看已挂载文件系统的选项 mount | grep /mnt/data # 输出示例:/dev/sda1 on /mnt/data type ext4 (rw,suid,...) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值