一、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
网友评论