LFCS 系列第五讲:如何在 Linux 中挂载/卸载本地文件系统和网络文件系统(Samba 和 NF

LFCS 系列第五讲:如何在 Linux 中挂载/卸载本地文件系统和网络文件系统(Samba 和 NF

Linux 基金会已经发起了一个全新的 LFCS(Linux 基金会认证系统管理员Linux Foundation Certified Sysadmin)认证,旨在让来自世界各地的人有机会参加到 LFCS 测试,获得关于有能力在 Linux 系统中执行中间系统管理任务的认证。该认证包括:维护正在运行的系统和服务的能力、全面监控和分析的能力以及何时向上游团队请求支持的决策能力。

LFCS 系列第五讲

请看以下视频,这里边介绍了 Linux 基金会认证程序。

本讲是系列教程中的第五讲,在这一讲里边,我们会解释如何在 Linux 中挂载/卸载本地和网络文件系统。这些都是 LFCS 认证中的必备知识。

挂载文件系统

在个硬盘分好区之后,Linux 需要通过某些方式对硬盘分区上的数据进行访问。Linux 并不会像 DOS 或者 Windows 那样给每个硬盘分区分配一个字母来作为盘符,而是将硬盘分区挂载到统一的目录树上的挂载点。

挂载点是一个目录,挂载是一种访问分区上文件系统的方法,挂载文件系统实际上是将一个确切的文件系统(比如一个分区)和目录树中指定的目录联系起来的过程。

换句话说,管理存储设备的第一步就是把设备关联到文件系统树。要完成这一步,通常可以这样:用 mount 命令来进行临时挂载(用完的时候,使用 umount 命令来卸载),或者通过编辑 /etc/fstab 文件之后重启系统来永久性挂载,这样每次开机都会进行挂载。

不带任何选项的 mount 命令,可以显示当前已挂载的文件系统。


  1. # mount

检查已挂载的文件系统

另外,mount 命令通常用来挂载文件系统。其基本语法如下:


  1. # mount -t type device dir -o options

该命令会指引内核将在设备上找到的文件系统(如已格式化为指定类型的文件系统)挂载到指定目录。像这样的形式,mount 命令不会再到 /etc/fstab 文件中进行确认。

除非像下面,挂载指定的目录或者设备:


  1. # mount /dir -o options
  2. # mount device -o options

mount 命令会尝试寻找挂载点,如果找不到就会查找设备(上述两种情况下,mount 命令会在 /etc/fstab 查找相应的设备或挂载点),最后尝试完成挂载操作(这个通常可以成功执行,除非你的挂载点或者设备正在使用中,或者你调用 mount 命令的时候没有 root 权限)。

你可以看到,mount 命令的每行输出都是如下格式:


  1. device on directory type (options)

例如:


  1. /dev/mapper/debian-home on /home type ext4 (rw,relatime,user_xattr,barrier=1,data=ordered)

读作:

设备 dev/mapper/debian-home 挂载在 /home 下,它被格式化为 ext4,并且有以下挂载选项: rw,relatime,user_xattr,barrier=1,data=ordered。

mount 命令选项

下面列出 mount 命令的常用选项

  • async:允许在将要挂载的文件系统上进行异步 I/O 操作
  • auto:标示该文件系统通过 mount -a 命令挂载,与 noauto 相反。
  • defaults:该选项相当于 async,auto,dev,exec,nouser,rw,suid 的组合。注意,多个选项必须由逗号隔开并且中间没有空格。倘若你不小心在两个选项中间输入了一个空格,mount 命令会把后边的字符解释为另一个参数。
  • loop:将镜像文件(如 .iso 文件)挂载为 loop 设备。该选项可以用来模拟显示光盘中的文件内容。
  • noexec:阻止该文件系统中可执行文件的执行。与 exec 选项相反。
  • nouser:阻止任何用户(除 root 用户外) 挂载或卸载文件系统。与 user 选项相反。
  • remount:重新挂载文件系统。
  • ro:只读模式挂载。
  • rw:读写模式挂载。
  • relatime:只要访问时间早于修改时间,就更新文件的的访问时间。
  • user_xattr:允许用户设置和移除可扩展文件系统属性。

以 ro 和 noexec 模式挂载设备


  1. # mount -t ext4 /dev/sdg1 /mnt -o ro,noexec

在本例中,我们可以看到,在挂载点 /mnt 中尝试写入文件或者运行可执行文件都会显示相应的错误信息。


  1. # touch /mnt/myfile
  2. # /mnt/bin/echo “Hi there”

可读写模式挂载设备

以默认模式挂载设备

以下场景,我们在重新挂载设备的挂载点中,像上例一样尝试你写入文件和运行可执行文件。


  1. # mount -t ext4 /dev/sdg1 /mnt -o defaults

挂载设备

在这个例子中,我们发现写入文件和命令都完美执行了。

卸载设备

使用 umount 命令卸载设备,意味着将所有的“在使用”数据全部写入到文件系统,然后可以安全移除文件系统。请注意,倘若你移除一个没有事先正确卸载的设备,就会有造成设备损坏和数据丢失的风险。

也就是说,你必须“离开”设备的块设备描述符或者挂载点,才能卸载设备。换言之,你的当前工作目录不能是需要卸载设备的挂载点。否则,系统将返回设备繁忙的提示信息。

卸载设备

离开需卸载设备的挂载点最简单的方法就是,运行不带任何选项的 cd 命令,这样会回到当前用户的家目录。

挂载常见的网络文件系统

最常用的两种网络文件系统是 SMB(服务器消息块Server Message Block)和 NFS(网络文件系统Network File System)。如果你只向类 Unix 客户端提供共享,用 NFS 就可以了,如果是向 Windows 和其他类 Unix 客户端提供共享服务,就需要用到 Samba 了。

扩展阅读

下面的例子中,假设 Samba 和 NFS 已经在地址为 192.168.0.10 的服务器上架设好了(请注意,架设 NFS 服务器也是 LFCS 考试中需要考核的能力,我们会在后边中提到)。

在 Linux 中挂载 Samba 共享

第一步:在 Red Hat 以 Debian 系发行版中安装 samba-client、samba-common 和 cifs-utils 软件包,如下:


  1. # yum update && yum install samba-client samba-common cifs-utils
  2. # aptitude update && aptitude install samba-client samba-common cifs-utils

然后运行下列命令,查看服务器上可用的 Samba 共享。


  1. # smbclient -L 192.168.0.10

并输入远程机器上 root 账户的密码。

挂载 Samba 共享

上图中,已经对可以挂载到我们本地系统上的共享进行高亮显示。你只需要与一个远程服务器上的合法用户名及密码就可以访问共享了。

第二步:当挂载有密码保护的网络文件系统时候,将你的访问凭证写入到 /etc/fstab 文件中并非明智的选择。你需要将这些信息写入到具有 600 权限的隐藏文件中,像这样:


  1. # mkdir /media/samba
  2. # echo “username=samba_username” > /media/samba/.smbcredentials
  3. # echo “password=samba_password” >> /media/samba/.smbcredentials
  4. # chmod 600 /media/samba/.smbcredentials

第三步:然后将下面的内容添加到 /etc/fstab 文件中。


  1. # //192.168.0.10/gacanepa /media/samba cifs credentials=/media/samba/.smbcredentials,defaults 0 0

第四步:现在可以挂载你的 Samba 共享了。手动挂载(mount //192.168.0.10/gacanepa)或者重启系统并应用 /etc/fstab 中相应行来用就挂载都可以。

挂载有密码保护的 Samba 共享

在 Linux 系统中挂载 NFS 共享

第一步:在 Red Hat 以 Debian 系发行版中安装 nfs-common 和 portmap 软件包。如下:


  1. # yum update && yum install nfs-utils nfs-utils-lib
  2. # aptitude update && aptitude install nfs-common

第二步:为 NFS 共享创建挂载点。


  1. # mkdir /media/nfs

第三步:将下面的内容添加到 /etc/fstab 文件中。


  1. 192.168.0.10:/NFS-SHARE /media/nfs nfs defaults 0 0

第四步:现在可以挂载你的 Samba 共享了。手动挂载(mount 192.168.0.10:/NFS-SHARE)或者重启系统并应用 /etc/fstab 中相应行来用就挂载都可以。

挂载 NFS 共享

永久性挂载文件系统

像前面两个例子那样,/etc/fstab 控制着Linux如何访问硬盘分区及可移动设备。/etc/fstab 由六个字段的内容组成,各个字段之间通过一个空格符或者制表符来分开。井号(#)开始的行只是会被忽略的注释。

每一行都按照这个格式来写入:


  1. <file system> <mount point> <type> <options> <dump> <pass>

其中:

  • <file system>: 第一个字段指定挂载的设备。大多数发行版本都通过分区的标卷(label)或者 UUID 来指定。这样做可以避免分区号改变时带来的错误。
  • <mount point>: 第二个字段指定挂载点。
  • <type> :文件系统的类型代码与 mount 命令挂载文件系统时使用的类型代码是一样的。通过 auto 类型代码可以让内核自动检测文件系统,这对于可移动设备来说非常方便。注意,该选项可能不是对所有文件系统可用。
  • <options>: 一个(或多个)挂载选项。
  • <dump>: 你可能把这个字段设置为 0(否则设置为 1),使得系统启动时禁用 dump 工具(dump 程序曾经是一个常用的备份工具,但现在越来越少用了)对文件系统进行备份。
  • <pass>: 这个字段指定启动系统是是否通过 fsck 来检查文件系统的完整性。0 表示 fsck 不对文件系统进行检查。数字越大,优先级越低。因此,根分区(/)最可能使用数字 1,其他所有需要检查的分区则是以数字 2.

Mount 命令例示

1、在系统启动时,通过 TECMINT 标卷来挂载文件系统,并具备 rw 和 noexec 属性,你应该将以下语句添加到 /etc/fstab 文件中。


  1. LABEL=TECMINT /mnt ext4 rw,noexec 0 0

2、若你想在系统启动时挂载 DVD 光驱中的内容,添加以下语句。


  1. /dev/sr0 /media/cdrom0 iso9660 ro,user,noauto 0 0

其中 /dev/sr0 为你的 DVD 光驱。

总结

不用怀疑,在命令行中挂载/卸载本地和网络文件系统将是你作为系统管理员的日常责任的一部分。同时,你需要掌握 /etc/fstab 文件的编写。希望本文对你有帮助。随时在下边发表评论(或者提问),并分享本文到你的朋友圈。

参考链接

本文来自合作伙伴“Linux中国”

原文发布时间为:2013-04-02.

时间: 2025-01-29 09:39:56

LFCS 系列第五讲:如何在 Linux 中挂载/卸载本地文件系统和网络文件系统(Samba 和 NF的相关文章

如何在 Linux 中根据国家位置来阻断网络流量

如何在 Linux 中根据国家位置来阻断网络流量 作为一名维护 Linux 生产服务器的系统管理员,你可能会遇到这样一些情形:你需要根据地理位置,选择性地阻断或允许网络流量通过. 例如你正经历一次由注册在某个特定国家的 IP 发起的 DoS 攻击:或者基于安全考虑,你想阻止来自未知国家的 SSH 登录请求:又或者你的公司对某些在线视频有分销权,它要求只能在特定的国家内合法发行:抑或是由于公司的政策,你需要阻止某个本地主机将文件上传至任意一个非美国的远程云端存储. 所有的上述情形都需要设置防火墙,

Linux有问必答:如何在Linux中直接挂载LVM分区

提问: 我有一个USB盘包含了LVM分区. 我想要在Linux中访问这些LVM分区.我该如何在Linux中挂载LVM分区? LVM是逻辑卷管理工具,它允许你使用逻辑卷和卷组的概念来管理磁盘空间.使用LVM相比传统分区最大的好处是弹性地为用户和程序分配空间而不用考虑每个物理磁盘的大小. 在LVM中,那些创建了逻辑分区的物理存储是传统的分区(比如:/dev/sda2,/dev/sdb1).这些分区必须被初始化为"物理卷 PV"并加上卷标(如,"Linux LVM")来使

如何在 Linux 中产生、加密或解密随机密码

如何在 Linux 中产生.加密或解密随机密码 我们一直积极地提供有关 Linux 技巧的系列文章,如果你错过了这个系列的最新文章,你或许可以去访问下面的链接. Linux 中 5 个有趣的命令行技巧 在这篇文章中,我们将分享一些有趣 Linux 技巧,内容是有关如何产生随机密码以及加密或解密这些经过加盐或没有加盐处理的密码. 安全是数字时代中的一个主要话题.在电脑,email,云端,手机,文档和其他的场合中,我们都会使用到密码.众所周知,选择密码的基本原则是 "易记,难猜".考虑过使

如何在Linux中列出通过RPM或者DEB包安装的文件

你是否想要了解安装包中各个文件在 Linux 系统中安装(位于)的位置?我们将在本文介绍如何列出文件的来源,或存在于某个特定包或者一组软件包中的文件. 这篇文章可以帮你轻松地找到重要的软件包文件,如配置文件.帮助文档等.我们来看看找出文件在哪个包中或者从哪个包中安装的几个方法: 如何列出 Linux 中全部已安装软件包的文件 你可以使用 repoquery 命令,它是 yum-utils 的一部分,用来列出给定的软件包在 CentOS/RHEL 系统上安装的文件. 要安装并使用 yum-util

逝去的纪念:如何在Linux中同步微软 OneDrive

逝去的纪念:如何在Linux中同步微软 OneDrive [编者注]:本文译文完成之后不久,OneDrive 就成了中国人的昨日黄花了.编者想了想,还是发出来罢,仅以此文纪念我们逝去的这个.那个.以及这些和那些.也许若干年后我们回忆起来,我们曾经有过那么多那些,而当时却挑三拣四,没有珍惜,如果再给我一次机会-- OneDrive(以前称为SkyDrive)是微软的一个广受欢迎的云存储产品.目前OneDrive为每一个新注册用户提供7GB免费存储空间.正如你所想,OneDrive与微软其他软件产品

Linux有问必答-如何在Linux中安装Go语言

Linux有问必答-如何在Linux中安装Go语言 Go (也叫 "golang")是一款由Google最初开发的编程语言.它自诞生就有几个设计原则:简单性.安全性和速度.Go语言发行版拥有各种调试.测试.调优和代码审查工具.如今Go语言和它的工具链在大多数Linux发行版的基础仓库都可用,用默认的包管理器就可以安装. 在Ubuntu.Debian 或者 Linux Mint上安装Go语言 下面是在基于Debian的发行版上使用apt-get来安装Go语言和它的开发工具. $ sudo

如何在Linux中压缩及解压缩.bz2文件

对文件进行压缩,可以通过使用较少的字节对文件中的数据进行编码来显著地减小文件的大小,并且在跨网络的文件的备份和传送时很有用. 另一方面,解压文件意味着将文件中的数据恢复到初始状态. Linux 中有几个文件压缩和解压缩工具,比如gzip.7-zip.Lrzip.PeaZip 等等. 本篇教程中,我们将介绍如何在 Linux 中使用 bzip2 工具压缩及解压缩.bz2文件. bzip2 是一个非常有名的压缩工具,并且在大多数主流 Linux 发行版上都有,你可以在你的发行版上用合适的命令来安装它

Linux 有问必答:如何在Linux 中修复“fatal error: x264.h: No such file or directo

Linux 有问必答:如何在Linux 中修复"fatal error: x264.h: No such file or directo 提问: 我想在Linux中从源码编译视频编码程序.到那时,在编译时,我遇到了一个错误"fatal error: x264.h: No such file or directory",我该如何修复? 下面的编译错误错明你系统中没有x264开发库文件. fatal error: x264.h: No such file or directory

Linux 有问必答:如何在Linux中修复“fatal error: lame/lame.h: No such file or dir

Linux 有问必答:如何在Linux中修复"fatal error: lame/lame.h: No such file or dir 提问: 我尝试着在Linux中编译视频编码器,但是编译提示出错:"fatal error: lame/lame.h: No such file or directory", 我该如何修复这个错误? 下面的编译错误说明你的系统没有安装LAME库和它的开发文件. fatal error: lame/lame.h: No such file or