使用 Samba 或 NFS 实现文件共享

一、Samba 文件共享服务

# yum install samba

………………省略部分输出信息………………

Installing:

samba                  x86_64      4.8.3-6.el7_6        updates      680 k

Installing for dependencies:

samba-common-tools      x86_64      4.8.3-6.el7_6        updates      448 k

Updating for dependencies:

libsmbclient            x86_64      4.8.3-6.el7_6        updates      134 k

libwbclient            x86_64      4.8.3-6.el7_6        updates      109 k

samba-client-libs      x86_64      4.8.3-6.el7_6        updates      4.8 M

samba-common            noarch      4.8.3-6.el7_6        updates      206 k

samba-common-libs      x86_64      4.8.3-6.el7_6        updates      164 k

samba-libs              x86_64      4.8.3-6.el7_6        updates      276 k

Transaction Summary

====================================================================

Install  1 Package  (+1 Dependent package)

Upgrade            ( 6 Dependent packages)

Total download size: 6.8 M

Is this ok [y/d/N]: y

Downloading packages:

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

………………省略部分输出信息………………

Installed:

  samba.x86_64 0:4.8.3-6.el7_6                                               

Dependency Installed:

  samba-common-tools.x86_64 0:4.8.3-6.el7_6                                 

Dependency Updated:

  libsmbclient.x86_64 0:4.8.3-6.el7_6                                       

  libwbclient.x86_64 0:4.8.3-6.el7_6                                         

  samba-client-libs.x86_64 0:4.8.3-6.el7_6                                   

  samba-common.noarch 0:4.8.3-6.el7_6                                       

  samba-common-libs.x86_64 0:4.8.3-6.el7_6                                   

  samba-libs.x86_64 0:4.8.3-6.el7_6                                         

Complete!

# cat /etc/samba/smb.conf

# See smb.conf.example for a more detailed config file or

# read the smb.conf manpage.

# Run 'testparm' to verify the config is correct after

# you modified it.

[global]

        workgroup = SAMBA

        security = user

        passdb backend = tdbsam

        printing = cups

        printcap name = cups

        load printers = yes

        cups options = raw

[homes]

        comment = Home Directories

        valid users = %S, %D%w%S

        browseable = No

        read only = No

        inherit acls = Yes

[printers]

        comment = All Printers

        path = /var/tmp

        printable = Yes

        create mask = 0600

        browseable = No

[print$]

        comment = Printer Drivers

        path = /var/lib/samba/drivers

        write list = @printadmin root

        force group = @printadmin

        create mask = 0664

        directory mask = 0775

Samba 服务程序中的参数以及作用:

[global]                        参数                                                            作用

                    workgroup = MYGROUP                         #工作组名称

                    server string = Samba Server                #服务器介绍信息,

                    Version %v                                                  参数%v为显示SMB 版本号

                  log file = /var/log/samba/log.%m        #定义日志文件的存放位置与名称,

                                                                                            参数%m为来访的主机名

                    max log size = 50                                  #定义日志文件的最大容量为 50KB

                    security = user                                    #安全验证的方式,总共有 4 种

                    #share:来访主机无需验证口令;比较方便,但安全性很差

                    #user:需验证来访主机提供的口令后才可以访问;提升了安全性

                    #server:使用独立的远程主机验证来访主机提供的口令(集中管理账户)

                    #domain:使用域控制器进行身份验证

                    passdb backend = tdbsam              #定义用户后台的类型,共有 3 种

                    #smbpasswd:使用 smbpasswd 命令为系统用户设置 Samba 服务程序的密码

                    #tdbsam:创建数据库文件并使用 pdbedit 命令建立 Samba 服务程序的用户

                    #ldapsam:基于 LDAP 服务进行账户验证

                    load printers = yes                      #设置在Samba服务启动时是否共享打印机设备

                    cups options = raw                      #打印机的选项

[homes]                                                                  #共享参数

                    comment = Home Directories      #描述信息

                    browseable = no                              #指定共享信息是否在“网上邻居”中可见

                    writable = yes                                    #定义是否可以执行写入操作,与“read only”相反

[printers]                                                                  #打印机共享参数

有些版本的配置文件中含有大量的注释内容,可以用以下方法将注释去掉:

# mv /etc/samba/smb.conf /etc/samba/smb.conf.bak

# cat /etc/samba/smb.conf.bak | grep -v "#" | grep -v ";" | grep -v "^$" > /etc/samba/smb.conf

# cat /etc/samba/smb.conf

1.配置共享资源

Samba 服务程序的主配置文件与前面学习过的 Apache 服务很相似, 包括全局配置参数和区域配置参数。全局配置参数用于设置整体的资源共享环境,对里面的每一个独立的共享资源都有效。区域配置参数则用于设置单独的共享资源,且仅对该资源有效。创建共享资源的方法很简单,只要将下表中的参数写入到 Samba 服务程序的主配置文件中,然后重启该服务即可。

用于设置 Samba 服务程序的参数以及作用:

参数                                                                                                作用

[database]                                                                                        共享名称为 database

comment = Do not arbitrarily modify the database file        警告用户不要随意修改数据库

path = /home/database                                                              共享目录为/home/database

public = no                                                                                      关闭“所有人可见”

writable = yes                                                                                  允许写入操作

        (1)创建用于访问共享资源的账户信息。在 RHEL 7 系统中,Samba 服务程序默认使用的是用户口令认证模式(user) 。这种认证模式可以确保仅让有密码且受信任的用户访问共享资源,而且验证过程也十分简单。不过,只有建立账户信息数据库之后,才能使用用户口令认证模式。另外,Samba 服务程序的数据库要求账户必须在当前系统中已经存在,否则日后创建文件时将导致文件的权限属性混乱不堪,由此引发错误。

        pdbedit 命令用于管理 SMB 服务程序的账户信息数据库, 格式为 “pdbedit [选项] 账户” 。在第一次把账户信息写入到数据库时需要使用-a 参数,以后在执行修改密码、删除账户等操作时就不再需要该参数了。pdbedit 命令中使用的参数以及作用如下表所示。

用于 pdbedit 命令的参数以及作用:

参数                                            作用

-a                                                 用户名 建立 Samba 账户

-x                                                 用户名  删除 Samba 账户

-L                                                 列出账户列表

-Lv                                              列出账户详细信息的列表

# id linuxprobe

uid=1000(linuxprobe) gid=1000(linuxprobe) groups=1000(linuxprobe)

# pdbedit -a -u linuxprobe

new password:(此处输入该用户在Samba服务器数据库中的密码)

retype new password:(再次确认)

Unix username:        linuxprobe

NT username:         

Account Flags:        [U          ]

User SID:            S-1-5-21-3924194231-3242532620-1022939616-1000

Primary Group SID:    S-1-5-21-3924194231-3242532620-1022939616-513

Full Name:            linuxprobe

Home Directory:      \\linuxprobe\linuxprobe

HomeDir Drive:       

Logon Script:       

Profile Path:        \\linuxprobe\linuxprobe\profile

Domain:              LINUXPROBE

Account desc:       

Workstations:       

Munged dial:         

Logon time:          0

Logoff time:          Wed, 06 Feb 2036 23:06:39 CST

Kickoff time:        Wed, 06 Feb 2036 23:06:39 CST

Password last set:    Fri, 09 Aug 2019 09:45:28 CST

Password can change:  Fri, 09 Aug 2019 09:45:28 CST

Password must change: never

Last bad password  : 0

Bad password count  : 0

Logon hours        : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

        (2)创建用于共享资源的文件目录。 在创建时, 不仅要考虑到文件读写权限的问题,而且由于/home 目录是系统中普通用户的家目录,因此还需要考虑应用于该目录的 SELinux 安全上下文所带来的限制。

# mkdir /home/database

# chown -Rf linuxprobe:linuxprobe /home/database

# semanage fcontext -a -t samba_share_t /home/database

# restorecon -Rv /home/database

restorecon reset /home/database context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:samba_share_t:s0

        (3)设置 SELinux 服务与策略,使其允许通过 Samba 服务程序访问普通用户家目录。

# getsebool -a | grep samba

samba_create_home_dirs --> off

samba_domain_controller --> off

samba_enable_home_dirs --> off

samba_export_all_ro --> off

samba_export_all_rw --> off

samba_load_libgfapi --> off

samba_portmapper --> off

samba_run_unconfined --> off

samba_share_fusefs --> off

samba_share_nfs --> off

sanlock_use_samba --> off

tmpreaper_use_samba --> off

use_samba_home_dirs --> off

virt_use_samba --> off

        (4)在 Samba 服务程序的主配置文件中,根据上表所提到的格式写入共享信息。在原始的配置文件中,[homes]参数为来访用户的家目录共享信息,[printers]参数为共享的打印机设备。这两项如果在今后的工作中不需要,可以手动删除,这没有任何问题。

# vim /etc/samba/smb.conf

[global]

        workgroup = SAMBA

        security = user

        passdb backend = tdbsam

        printing = cups

        printcap name = cups

        load printers = yes

        cups options = raw

[homes]

        comment = Home Directories

        valid users = %S, %D%w%S

        browseable = No

        read only = No

        inherit acls = Yes

[printers]

        comment = All Printers

        path = /var/tmp

        printable = Yes

        create mask = 0600

        browseable = No

[print$]

        comment = Printer Drivers

        path = /var/lib/samba/drivers

        write list = @printadmin root

        force group = @printadmin

        create mask = 0664

        directory mask = 0775

[database]

        comment = Do not arbitrarily modify the database file

        path = /home/database

        public = no

        writable = yes

        (5)Samba 服务程序的配置工作基本完毕。接下来重启 smb 服务(Samba 服务程序在 Linux 系统中的名字为 smb)并清空 iptables 防火墙,然后就可以检验配置效果了。

# systemctl restart smb

# systemctl enable smb

Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.

# iptables -F

# service iptables save

iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

2.Windows访问文件共享服务

        无论 Samba 共享服务是部署 Windows 系统上还是部署在 Linux 系统上,通过 Windows系统进行访问时, 其步骤和方法都是一样的。 下面假设 Samba 共享服务部署在 Linux 系统上,并通过 Windows 系统来访问 Samba 服务。

主机名                            操作系统                IP地址                                    说明

linuxprobe.com            CentOS7            192.168.1.145                        Samba共享服务器

MS-20180828H        Windows7        192.168.1.101(DHCP)            客户端

        要在 Windows 系统中访问共享资源,只需在 Windows 的“运行”命令框中输入两个反斜杠,然后再加服务器的 IP 地址即可


在 Windows 系统中访问共享资源

        如果已经清空了 Linux 系统上 iptables 防火墙的默认策略(即执行 iptables -F 命令) ,现在就应该能看到 Samba 共享服务的登录界面了。在这里先使用 linuxprobe 账户的系统本地密码尝试登录,结果出现了如图所示的报错信息。由此可以验证,在 RHEL 7 系统中,Samba 服务程序使用的果然是独立的账户信息数据库。所以,即便在 Linux 系统中有一个 linuxprobe 账户, Samba 服务程序使用的账户信息数据库中也有一个同名的 linuxprobe 账户,大家也一定要弄清楚它们各自所对应的密码。

访问 Samba 共享服务时,提示出错

        正确输入 linuxprobe 账户名以及使用 pdbedit 命令设置的密码后,就可以登录到共享界面中了,如图所示。此时,我们可以尝试执行查看、写入、更名、删除文件等操作。

成功访问 Samba 共享服务

3.Linux 访问文件共享服务

        上面的实验操作可能会让各位读者误以为 Samba 服务程序只是为了解决 Linux 系统和Windows 系统的资源共享问题而设计的。其实,Samba 服务程序还可以实现 Linux 系统之间的文件共享。请各位读者按照下表来设置 Samba 服务程序所在主机(即 Samba 共享服务器) 和 Linux 客户端使用的 IP 地址, 然后在客户端安装支持文件共享服务的软件包 (cifs-utils) 。

Samba 共享服务器和 Linux 客户端各自使用的操作系统以及 IP 地址:

主机名                            操作系统                IP地址                                    说明

linuxprobe.com            CentOS7            192.168.1.145                        Samba共享服务器

linuxprobe1.com          CentOS7            192.168.1.155                           客户端

# yum install cifs-utils

Loaded plugins: fastestmirror, langpacks, product-id, search-disabled-repos,

              : subscription-manager

Resolving Dependencies

--> Running transaction check

---> Package cifs-utils.x86_64 0:6.2-10.el7 will be installed

--> Finished Dependency Resolution

Dependencies Resolved

====================================================================

Package            Arch            Version              Repository    Size

====================================================================

Installing:

cifs-utils          x86_64          6.2-10.el7          base          85 k

Transaction Summary

====================================================================

Install  1 Package

Total download size: 85 k

Installed size: 175 k

Is this ok [y/d/N]: y

Downloading packages:

cifs-utils-6.2-10.el7.x86_64.rpm                        |  85 kB  00:01   

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

  Installing : cifs-utils-6.2-10.el7.x86_64                              1/1

  Verifying  : cifs-utils-6.2-10.el7.x86_64                              1/1

Installed:

  cifs-utils.x86_64 0:6.2-10.el7                                             

Complete!

        在 Linux 客户端,按照 Samba 服务的用户名、密码、共享域的顺序将相关信息写入到一个认证文件中。为了保证不被其他人随意看到,最后把这个认证文件的权限修改为仅 root 管理员才能够读写:

# vim auth.smb

username=linuxprobe

password=samba

domain=SAMBA

# chmod 600 auth.smb

        现在,在 Linux 客户端上创建一个用于挂载 Samba 服务共享资源的目录,并把挂载信息写入到/etc/fstab 文件中,以确保共享挂载信息在服务器重启后依然生效:

# mkdir /database

# vim /etc/fstab

#

# /etc/fstab

# Created by anaconda on Fri Aug  2 14:07:12 2019

#

# Accessible filesystems, by reference, are maintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

/dev/mapper/rhel-root  /                      xfs    defaults        1 1

UUID=a9e6a8db-0421-404c-bee7-524afd81afc6 /boot                  xfs    defaults        1 2

/dev/mapper/rhel-swap  swap                    swap    defaults        0 0

//192.168.1.145/database        /database      cifs    credentials=/root/auth.smb    0      0

# mount -a

        Linux 客户端成功地挂载了 Samba 服务的共享资源。进入到挂载目录/database 后就可以看到 Windows 系统访问 Samba 服务程序时留下来的文件了(即文件 readme.txt) 。当然,我们也可以对该文件进行读写操作并保存。

注意:如意访问报错,可能是客户端没有安装cifs-utils程序,安装好后,错误解除。

# ls -l /database

-rwxr-xr-x. 1 root root 0 Aug  9 10:11 新建文本文档.txt

二、NFS(网络文件系统)

        如果大家觉得 Samba 服务程序的配置太麻烦,而且恰巧需要共享文件的主机都是 Linux系统,推荐大家在客户端部署 NFS 服务来共享文件。NFS(网络文件系统)服务可以将远程 Linux 系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机(Linux 客户端)基于 TCP/IP 协议,像使用本地主机上的资源那样读写远程 Linux 系统上的共享文件。

        接下来,我们准备配置 NFS 服务。首先请使用 Yum 软件仓库检查自己的 RHEL 7 系统中是否已经安装了 NFS 软件包:

# yum install nfs-utils

Loaded plugins: fastestmirror, langpacks, product-id, search-disabled-repos,

                            : subscription-manager

Package 1:nfs-utils-1.3.0-0.61.el7.x86_64 already installed and latest version 

Nothing to do

        (1)为了检验 NFS 服务配置的效果,我们需要使用两台 Linux 主机(一台充当 NFS服务器,一台充当 NFS 客户端) ,并按照下表来设置它们所使用的 IP 地址。

主机名                            操作系统                IP地址                                    说明

linuxprobe.com            CentOS7            192.168.1.145                        Samba共享服务器

linuxprobe1.com          CentOS7            192.168.1.155                           客户端

        另外,不要忘记清空 NFS 服务器上面 iptables 防火墙的默认策略,以免默认的防火墙策略禁止正常的 NFS 共享服务。

# iptables -F

# service iptables save

iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]

        (2)在 NFS 服务器上建立用于 NFS 文件共享的目录,并设置足够的权限确保其他人也有写入权限。

# mkdir /nfsfile

# chmod -Rf 777 /nfsfile

# echo "welcome to linuxprobe.com" > /nfsfile/readme

        (3)NFS 服务程序的配置文件为/etc/exports,默认情况下里面没有任何内容。我们可以按照“共享目录的路径 允许访问的 NFS 客户端(共享权限参数) ”的格式,定义要共享的目录与相应的权限。

        例如,如果想要把/nfsfile 目录共享给 192.168.10.0/24 网段内的所有主机,让这些主机都拥有读写权限,在将数据写入到 NFS 服务器的硬盘中后才会结束操作,最大限度保证数据不丢失,以及把来访客户端 root 管理员映射为本地的匿名用户等,则可以按照下面命令中的格式,将表中的参数写到 NFS 服务程序的配置文件中。

用于配置 NFS 服务程序配置文件的参数:

参数                                    作用

ro                                  只读

rw                                  读写

root_squash                当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的匿名用户

no_root_squash        当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的 root 管理员

all_squash                   无论 NFS 客户端使用什么账户访问,均映射为 NFS 服务器的匿名用户

sync                              同时将数据写入到内存与硬盘中,保证不丢失数据

async                           优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据

请注意,NFS 客户端地址与权限之间没有空格。

# vim /etc/exports

/nfsfile 192.168.10.*(rw,sync,root_squash)

        (4)启动和启用 NFS 服务程序。由于在使用 NFS 服务进行文件共享之前,需要使用 RPC(Remote Procedure Call,远程过程调用)服务将 NFS 服务器的 IP 地址和端口号等信息发送给客户端。因此,在启动 NFS 服务之前,还需要顺带重启并启用 rpcbind 服务程序,并将这两个服务一并加入开机启动项中。

# systemctl restart rpcbind

# systemctl enable rpcbind

# systemctl start nfs-server

# systemctl enable nfs-server

        NFS 客户端的配置步骤也十分简单。 先使用 showmount 命令 (以及必要的参数, 见下表) 查询 NFS 服务器的远程共享信息, 其输出格式为 “共享的目录名称 允许使用客户端地址” 。

showmount 命令中可用的参数以及作用:

参数        作用

-e              显示 NFS 服务器的共享列表

-a              显示本机挂载的文件资源的情况

-v              显示版本号

# showmount -e 192.168.1.145

Export list for 192.168.1.145:

/nfsfile 192.168.1.*

        然后在 NFS 客户端创建一个挂载目录。使用 mount 命令并结合-t 参数,指定要挂载的文件系统的类型,并在命令后面写上服务器的 IP 地址、服务器上的共享目录以及要挂载到本地系统(即客户端)的目录。

# mkdir /nfsfile

# mount -t nfs 192.168.1.145:/nfsfile /nfsfile

        挂载成功后就应该能够顺利地看到在执行前面的操作时写入的文件内容了。如果希望NFS 文件共享服务能一直有效,则需要将其写入到 fstab 文件中:

# cat /nfsfile/readme

welcome to linuxprobe.com

# vim /etc/fstab

#

# /etc/fstab

# Created by anaconda on Wed May 4 19:26:23 2017

#

# Accessible filesystems, by reference, are maintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

/dev/mapper/rhel-root / xfs defaults 1 1

UUID=812b1f7c-8b5b-43da-8c06-b9999e0fe48b /boot xfs defaults 1 2

/dev/mapper /rhel-swap swap swap defaults 0 0

/dev/cdrom /media/cdrom iso9660 defaults 0 0

192.168.1.145:/nfsfile /nfsfile nfs defaults 0 0

三、autofs 自动挂载服务

        无论是 Samba 服务还是 NFS 服务,都要把挂载信息写入到/etc/fstab 中,这样远程共享资源就会自动随服务器开机而进行挂载。虽然这很方便,但是如果挂载的远程资源太多,则会给网络带宽和服务器的硬件资源带来很大负载。如果在资源挂载后长期不使用,也会造成服务器硬件资源的浪费。可能会有读者说, “可以在每次使用之前执行 mount 命令进行手动挂载” 。这是一个不错的选择,但是每次都需要先挂载再使用,您不觉得麻烦吗?

        autofs 自动挂载服务可以帮我们解决这一问题。与 mount 命令不同,autofs 服务程序是一种 Linux 系统守护进程,当检测到用户视图访问一个尚未挂载的文件系统时,将自动挂载该文件系统。 换句话说, 我们将挂载信息填入/etc/fstab 文件后, 系统在每次开机时都自动将其挂载,而 autofs 服务程序则是在用户需要使用该文件系统时才去动态挂载,从而节约了网络资源和服务器的硬件资源。

# yum install autofs

Loaded plugins: fastestmirror, langpacks, product-id, search-disabled-repos,

              : subscription-manager

Loading mirror speeds from cached hostfile

base                                                  | 3.6 kB    00:00   

centosplus                                            | 3.4 kB    00:00   

extras                                                | 3.4 kB    00:00   

file:///media/cdrom/repodata/repomd.xml: [Errno 14] curl#37 - "Couldn't open file /media/cdrom/repodata/repomd.xml"

Trying other mirror.

updates                                                | 3.4 kB    00:00   

Resolving Dependencies

--> Running transaction check

---> Package autofs.x86_64 1:5.0.7-99.el7 will be installed

--> Processing Dependency: libhesiod.so.0()(64bit) for package: 1:autofs-5.0.7-99.el7.x86_64

--> Running transaction check

---> Package hesiod.x86_64 0:3.2.1-3.el7 will be installed

--> Finished Dependency Resolution

Dependencies Resolved

====================================================================

Package        Arch            Version                  Repository    Size

====================================================================

Installing:

autofs          x86_64          1:5.0.7-99.el7          base          814 k

Installing for dependencies:

hesiod          x86_64          3.2.1-3.el7              base          30 k

Transaction Summary

====================================================================

Install  1 Package (+1 Dependent package)

Total download size: 843 k

Installed size: 5.1 M

Is this ok [y/d/N]: y

Downloading packages:

(1/2): hesiod-3.2.1-3.el7.x86_64.rpm                    |  30 kB  00:22   

(2/2): autofs-5.0.7-99.el7.x86_64.rpm                    | 814 kB  00:36   

------------------------------------------------------------------------------

Total                                            23 kB/s | 843 kB  00:36   

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

  Installing : hesiod-3.2.1-3.el7.x86_64                                  1/2

  Installing : 1:autofs-5.0.7-99.el7.x86_64                              2/2

  Verifying  : hesiod-3.2.1-3.el7.x86_64                                  1/2

  Verifying  : 1:autofs-5.0.7-99.el7.x86_64                              2/2

Installed:

  autofs.x86_64 1:5.0.7-99.el7                                               

Dependency Installed:

  hesiod.x86_64 0:3.2.1-3.el7                                               

Complete!

        处于生产环境中的 Linux 服务器,一般会同时管理许多设备的挂载操作。如果把这些设备挂载信息都写入到 autofs 服务的主配置文件中,无疑会让主配置文件臃肿不堪,不利于服务执行效率,也不利于日后修改里面的配置内容,因此在 autofs 服务程序的主配置文件中需要按照“挂载目录 子配置文件”的格式进行填写。挂载目录是设备挂载位置的上一级目录。例如,光盘设备一般挂载到/media/cdrom 目录中,那么挂载目录写成/media 即可。对应的子配置文件则是对这个挂载目录内的挂载设备信息作进一步的说明。子配置文件需要用户自行定义,文件名字没有严格要求,但后缀建议以.misc 结束。

# vim /etc/auto.master

#

# Sample auto.master file

# This is a 'master' automounter map and it has the following format:

# mount-point [map-type[,format]:]map [options]

# For details of the format look at auto.master(5).

#

/media  /etc/iso.misc

/misc  /etc/auto.misc

#

# NOTE: mounts done from a hosts map will be mounted with the

#      "nosuid" and "nodev" options unless the "suid" and "dev"

#      options are explicitly given.

#

/net    -hosts

#

# Include /etc/auto.master.d/*.autofs

# The included files must conform to the format of this file.

#

+dir:/etc/auto.master.d

#

# Include central master map if it can be found using

# nsswitch sources.

#

# Note that if there are entries for /net or /misc (as

# above) in the included master map any keys that are the

# same will not be seen as the first read key seen takes

# precedence.

#

+auto.master

        在子配置文件中,应按照“挂载目录 挂载文件类型及权限 :设备名称”的格式进行填写。例如,要把光盘设备挂载到/media/iso 目录中,可将挂载目录写为 iso,而-fstype 为文件系统格式参数,iso9660 为光盘设备格式,ro、nosuid 及 nodev 为光盘设备具体的权限参数,/dev/cdrom 则是定义要挂载的设备名称。配置完成后再顺手将 autofs 服务程序启动并加入到系统启动项中:

# vim /etc/iso.misc

iso -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom

# systemctl start autofs

# systemctl enable autofs

Created symlink from /etc/systemd/system/multi-user.target.wants/autofs.service to /usr/lib/systemd/system/autofs.service.

        接下来将发生一件非常有趣的事情。我们先查看当前的光盘设备挂载情况,确认光盘设备没有被挂载上,而且/media 目录中根本就没有 iso 子目录。但是,我们却可以使用 cd 命令切换到这个 iso 子目录中,而且光盘设备会被立即自动挂载上。我们也就能顺利查看光盘内的内容了。

# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/rhel-root  18G  4.5G  14G  26% /

devtmpfs              470M    0  470M  0% /dev

tmpfs                  487M    0  487M  0% /dev/shm

tmpfs                  487M  8.2M  479M  2% /run

tmpfs                  487M    0  487M  0% /sys/fs/cgroup

/dev/sda1              497M  183M  314M  37% /boot

tmpfs                  98M  12K  98M  1% /run/user/42

tmpfs                  98M    0  98M  0% /run/user/0

# cd media

# ls

# cd iso

# ls -l

total 812

dr-xr-xr-x.  4 root root  2048 May  7  2014 addons

dr-xr-xr-x.  3 root root  2048 May  7  2014 EFI

-r--r--r--.  1 root root  8266 Apr  4  2014 EULA

-r--r--r--.  1 root root  18092 Mar  6  2012 GPL

dr-xr-xr-x.  3 root root  2048 May  7  2014 images

dr-xr-xr-x.  2 root root  2048 May  7  2014 isolinux

dr-xr-xr-x.  2 root root  2048 May  7  2014 LiveOS

-r--r--r--.  1 root root    108 May  7  2014 media.repo

dr-xr-xr-x.  2 root root 774144 May  7  2014 Packages

dr-xr-xr-x. 24 root root  6144 May  7  2014 release-notes

dr-xr-xr-x.  2 root root  4096 May  7  2014 repodata

-r--r--r--.  1 root root  3375 Apr  1  2014 RPM-GPG-KEY-redhat-beta

-r--r--r--.  1 root root  3211 Apr  1  2014 RPM-GPG-KEY-redhat-release

-r--r--r--.  1 root root  1568 May  7  2014 TRANS.TBL

# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/rhel-root  18G  4.5G  14G  26% /

devtmpfs              470M    0  470M  0% /dev

tmpfs                  487M    0  487M  0% /dev/shm

tmpfs                  487M  8.2M  479M  2% /run

tmpfs                  487M    0  487M  0% /sys/fs/cgroup

/dev/sda1              497M  183M  314M  37% /boot

tmpfs                  98M  12K  98M  1% /run/user/42

tmpfs                  98M    0  98M  0% /run/user/0

/dev/sr0              3.5G  3.5G    0 100% /media/iso

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容