LinuxProbe 0x15 SAMBA文件共享服务、NFS网络文件系统、AutoFs自动挂载服务、DNS域名解析服务
配置网络文件系统(Network File System,NFS)服务来简化Linux系统之间的文件共享工作,
通过部署NFS服务在多台Linux系统之间挂载并使用资源。
在管理设备挂载信息时,使用autofs服务不仅可以正常满足设备挂载的使用需求,还能进一步提高服务器硬件资源和网络带宽的利用率。
SAMBA文件共享服务
1987年,微软公司和英特尔公司共同制定了SMB(Server Messages Block)服务器消息块协议,旨在解决局域网内的文件或打印机等资源的共享问题,这也使得在多个主机之间共享文件变得越来越简单。
1991年,Tridgwell为了解决Linux系统与Windows系统之间的文件共享问题,基于SMB协议开发出了SMBServer服务程序。这是一款开源的文件共享软件,经过简单配置就能够实现Linux系统与Windows系统之间的文件共享工作。 当时,Tridgwell想把这款软件的名字SMBServer注册成为商标,但却被商标局以SMB是没有意义的字符而拒绝了申请。后来Tridgwell不断翻看词典,突然看到一个拉丁舞蹈的名字—Samba,而且这个热情洋溢的舞蹈名字中又恰好包含了“SMB”,于是Samba服务程序的名字由此诞生。Samba服务程序现在已经成为在Linux系统与Windows系统之间共享文件的最佳选择。
# dnf install samba samba-client 安装samba服务
# vim /etc/samba/smb.conf 配置服务
1 # See smb.conf.example for a more detailed config file or
2 # read the smb.conf manpage.
3 # Run 'testparm' to verify the config is correct after
4 # you modified it.
5
6 [global] 共享唯一标识符 访问的名称
7 workgroup = SAMBA 工作组
8 security = user 登录方式(分4种:share、user、domain、server)
9
10 passdb backend = tdbsam 保存数据库
11
12 printing = cups 12-15行参数中所提到的cups全称叫做Common UNIX Printing System,中文名叫通用UNIX打印系统服务
13 printcap name = cups
14 load printers = yes
15 cups options = raw
16
17 [homes] 17至22行代表共享该登录用户的家目录内容(安全起见删除掉)
18 comment = Home Directories
19 valid users = %S, %D%w%S
20 browseable = No
21 read only = No
22 inherit acls = Yes
23
24 [printers] 24-29行是用SMB协议共享本地的打印机设备,方便局域网内的用户可以远程使用
25 comment = All Printers
26 path = /var/tmp
27 printable = Yes
28 create mask = 0600
29 browseable = No
30
31 [print$] 31至37行依然为共享打印机设备的参数
32 comment = Printer Drivers
33 path = /var/lib/samba/drivers
34 write list = @printadmin root
35 force group = @printadmin
36 create mask = 0664
37 directory mask = 0775# vim /etc/samba/smb.conf 配置服务 可以只保留以下几行
[global]workgroup = SAMBA 工作组security = user 登录方式(分4种:share、user、domain、server)passdb backend = tdbsam 保存数据库
删除掉不需要的代码是常规操作,能够让服务程序“轻装前进”,关闭非必要功能,实现更好的性能,把硬件资源用到刀刃上。
Samba服务程序中的参数以及作用
行数 |
参数 |
作用 |
1 |
# See smb.conf.example for a more detailed config file or |
注释信息 |
2 |
# read the smb.conf manpage. |
|
3 |
# Run 'testparm' to verify the config is correct after |
|
4 |
# you modified it. |
|
5 |
[global] |
全局参数 |
6 |
workgroup = SAMBA |
工作组名称 |
7 |
||
8 |
security = user |
安全验证的方式,总共有4种 |
9 |
||
10 |
passdb backend = tdbsam |
定义用户后台的类型,总共有3种 |
11 |
||
12 |
printing = cups |
打印服务协议 |
13 |
printcap name = cups |
打印服务名称 |
14 |
load printers = yes |
是否加载打印机 |
15 |
cups options = raw |
打印机的选项 |
16 |
||
17 |
[homes] |
共享名称 |
18 |
comment = Home Directories |
描述信息 |
19 |
valid users = %S, %D%w%S |
可用账户 |
20 |
browseable = No |
指定共享信息是否在“网上邻居”中可见 |
21 |
read only = No |
是否只读 |
22 |
inherit acls = Yes |
是否继承访问控制列表 |
23 |
||
24 |
[printers] |
共享名称 |
25 |
comment = All Printers |
描述信息 |
26 |
path = /var/tmp |
共享路径 |
27 |
printable = Yes |
是否可打印 |
28 |
create mask = 0600 |
文件权限 |
29 |
browseable = No |
指定共享信息是否在“网上邻居”中可见 |
30 |
||
31 |
[print$] |
共享名称 |
32 |
comment = Printer Drivers |
描述信息 |
33 |
path = /var/lib/samba/drivers |
共享路径 |
34 |
write list = @printadmin root |
可写入文件的用户列表 |
35 |
force group = @printadmin |
用户组列表 |
36 |
create mask = 0664 |
文件权限 |
37 |
directory mask = 0775 |
目录权限 |
security参数代表用户登录samba服务时的验证方式,总共有4种可用参数:
“share”代表主机无需验证口令
“user”代表登录samba服务时需要使用账号密码进行验证,默认
“domain”代表通过域控制器进行身份验证,限制用户的来源域;
“server”代表使用独立主机验证来访用户的提供的口令,相当于是集中管理账号
在最早期的Linux系统中,samba服务使用的是pam模块调用本地账号和密码信息,
后来在5、6版本时替换成了用smbpasswd命令设置独立的samba服务账号和密码口令。
到了RHEL 7/8版本时则又进行了一次改革,将传统的验证方式换成了tdbsam数据库,这是一个专门用于保存samba服务账号口令的数据库,用户需要用pdbedit命令进行独立的添加操作。
设置Samba服务程序的参数以及作用
参数 |
作用 |
[database] |
共享名称为database |
comment = Do not arbitrarily modify the database file |
警告用户不要随意修改数据库 |
path = /home/database |
共享目录为/home/database |
public = no |
关闭“所有人可见” |
writable = yes |
允许写入操作 |
第1步:创建用于访问共享资源的账户信息。
在RHEL 8系统中,Samba服务程序默认使用的是用户口令认证模式(user)。这种认证模式可以确保仅让有密码且受信任的用户访问共享资源,而且验证过程也十分简单。不过,只有建立账户信息数据库之后,才能使用用户口令认证模式。另外,Samba服务程序的数据库要求账户必须在当前系统中已经存在,否则日后创建文件时将导致文件的权限属性混乱不堪,由此引发错误。
pdbedit:用于管理samba服务程序的账户信息数据库,格式为“pdbedit [选项] 账户”。
参数 |
作用 |
-a 用户名 |
建立Samba用户 |
-x 用户名 |
删除Samba用户 |
-L |
列出用户列表 |
-Lv |
列出用户详细信息的列表 |
第2步:创建用于共享资源的文件目录。
在创建时,不仅要考虑到文件读写权限的问题,而且由于/home目录是系统中普通用户的家目录,因此还需要考虑应用于该目录的SELinux安全上下文所带来的限制。 文件上下文值samba_share_t
第3步:设置SELinux服务与策略,使其允许通过Samba服务程序访问普通用户家目录。
第4步:在Samba服务程序的主配置文件中,写入共享信息。
第5步:Samba服务程序的配置工作基本完毕。
Samba服务程序在Linux系统中的名字为smb,所以重启并加入到启动项中,保证在重启服务器后依然能够为用户持续提供服务。
将iptables防火墙清空,再把samba服务添加到firewalld防火墙中
第6步:在服务器本地检查samba服务是否启动可以用“systemctl status smb”进行查看,而如果想进一步看samba服务都共享出去了哪些共享目录,则可以用smbclient命令来查看共享详情,-U参数指定了用户名称,建议一会用哪位用户进行挂载,就用哪位用户身份进行查看;-L参数列举共享清单。
# id linuxprobe
# pdbedit -a -u linuxprobe
new password:此处输入该账户在Samba服务数据库中的密码
retype new password:再次输入密码进行确认# mkdir /home/database
# chown -Rf linuxprobe:linuxprobe /home/database
# semanage fcontext -a -t samba_share_t /home/database
# restorecon -Rv /home/database# getsebool -a | grep samba
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
# setsebool -P samba_enable_home_dirs on# vim /etc/samba/smb.conf
[global]workgroup = SAMBAsecurity = userpassdb backend = tdbsam
[database] 共享名称 唯一comment = Do not arbitrarily modify the database file 介绍path = /home/databasepublic = no 是否共享 no 需要账号才能访问writable = yes # systemctl restart smb
# systemctl enable smb
# systemctl tatus smb
# iptables -F
# iptables-save
# firewall-cmd --zone=public --permanent --add-service=samba
# firewall-cmd --reload另一台linux
# dns install samba-client cifs-utils
# smbclient -U linuxprobe -L 192.168.10.10
Enter SAMBA\linuxprobe's password: 此处输入该账户在Samba服务数据库中的密码
Windows挂载共享
Samba共享服务是部署Windows系统上还是部署在Linux系统上,通过Windows系统进行访问时,其步骤和方法都是一样的。
Linux挂载共享
第1步:安装服务
第2步:创建挂载点 用于挂载Samba服务共享资源的目录
mount命令的-t参数指定协议类型,-o参数指定用户命和密码,最后追加上服务器IP地址和共享名称和本地挂载目录即可。服务器IP地址后面的共享名称指的是配置文件中[database]的值,而不是服务器本地挂载的目录名称。
第3步:创建认证文件,避免每次重启都要挂载远程共享目录
按照Samba服务的用户名、密码、共享域的顺序将相关信息写入到一个认证文件中,然后让/etc/fstab文件和系统自动的加载它。为了保证不被其他人随意看到,最后把这个认证文件的权限修改为仅root管理员才能够读写
# dnf install cifs-utils# mkdir /database
# mount -t cifs -o username=linuxprobe,password=redhat //192.168.10.10/database /database
# df -h
//192.168.10.10/database 17G 3.9G 14G 23% /database# vim auth.smb
username=linuxprobe
password=redhat
domain=MYGROUP 工作组
# chmod 600 auth.smb
# vim /etc/fstab
//192.168.10.10/database /database cifs credentials=/root/auth.smb 0 0
# mount -a# ls /database
NFS网络文件系统
NFS网络文件系统服务可以将远程Linux系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机(Linux客户端)基于TCP/IP协议,像使用本地主机上的资源那样读写远程Linux系统上的共享文件。
RHEL 8系统中默认已经安装了NFS服务
首先请使用软件仓库检查自己的RHEL 8系统中是否已经安装了NFS软件包
# dnf install nfs-utils
Package nfs-utils-1:2.3.3-14.el8.x86_64 is already installed.
第1步:为了检验NFS服务配置的效果,我们需要使用两台Linux主机(一台充当NFS服务器,一台充当NFS客户端)
第2步:在NFS服务器上建立用于NFS文件共享的目录,并设置足够的权限确保其他人也有写入权限。
第3步:NFS服务程序的配置文件为/etc/exports,默认情况下里面没有任何内容。可以按照“共享目录的路径 允许访问的NFS客户端(共享权限参数)”的格式,定义要共享的目录与相应的权限。
例,如果想要把/nfsfile目录共享给192.168.10.0/24网段内的所有主机,让这些主机都拥有读写权限,在将数据写入到NFS服务器的硬盘中后才会结束操作,最大限度保证数据不丢失,以及把来访客户端root管理员映射为本地的匿名用户等,
第4步:启动和启用NFS服务程序。
由于在使用NFS服务进行文件共享之前,需要使用RPC(Remote Procedure Call,远程过程调用)服务将NFS服务器的IP地址和端口号等信息发送给客户端。因此,在启动NFS服务之前,还需要顺带重启并启用rpcbind服务程序,并将这两个服务一并加入开机启动项中。
参数 |
作用 |
ro |
只读 |
rw |
读写 |
root_squash |
当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户 |
no_root_squash |
当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员 |
all_squash |
无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户 |
sync |
同时将数据写入到内存与硬盘中,保证不丢失数据 |
async |
优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 |
# iptables -F
# iptables-save
# firewall-cmd --permanent --zone=public --add-service=nfs
# firewall-cmd --permanent --zone=public --add-service=rpc-bind 相应用到的软件包
# firewall-cmd --permanent --zone=public --add-service=mountd 远程用户访问
# firewall-cmd --reload# mkdir /nfsfile
# chmod -R 777 /nfsfile
# echo "welcome to linuxprobe.com" > /nfsfile/readme# vim /etc/exports
/nfsfile 192.168.10.*(rw,sync,root_squash) NFS客户端地址与权限之间没有空格。(可读可写,同步,映射用户:限制用户做超出共享之外的命令)# systemctl restart rpcbind
# systemctl enable rpcbind
# systemctl start nfs-server
# systemctl enable nfs-server
在NFS服务的配置文件中巧用通配符能够实现很多便捷功能,就比如匹配IP地址就有三种方法:
第一种是直接写*号,代表任何主机都可以访问;
第二种则是实验中采用的192.168.10.*通配格式,代表来自192.168.10.0/24网段的主机;
第三种则是直接写对方的IP地址,如192.168.10.20,代表仅允许某个主机进行访问。
NFS客户端的配置
第1步:先使用showmount命令查询NFS服务器的远程共享信息,其输出格式为“共享的目录名称 允许使用客户端地址”。
第2步: 在NFS客户端创建一个挂载目录。使用mount命令并结合-t参数,指定要挂载的文件系统的类型,并在命令后面写上服务器的IP地址、服务器上的共享目录以及要挂载到本地系统(即客户端)的目录。
第3步:将 NFS文件共享服务写入到fstab文件中,使其一直有效
参数 |
作用 |
-e |
显示NFS服务器的共享列表 |
-a |
显示本机挂载的文件资源的情况NFS资源的情况 |
-v |
显示版本号 |
# showmount -e 192.168.10.10# mkdir /nfsfile
# mount -t nfs 192.168.10.10:/nfsfile /nfsfile
# df -h
192.168.10.10:/nfsfile 17G 3.9G 14G 23% /nfsfile# cat /nfsfile/readme
# vim /etc/fstab
192.168.10.10:/nfsfile /nfsfile nfs defaults 0 0
AutoFs自动挂载服务
autofs服务程序是一种Linux系统守护进程,当检测到用户试图访问一个尚未挂载的文件系统时,将自动挂载该文件系统。
第1步:修改主配置文件。
在autofs服务程序的主配置文件中需要按照“挂载目录 子配置文件”的格式进行填写。挂载目录是设备挂载位置的上一级目录。
第2步:修改子配置文件。
在子配置文件中,应按照“挂载目录 挂载文件类型及权限 :设备名称”的格式进行填写。
例如,要把光盘设备挂载到/media/iso目录中,可将挂载目录写为iso,而-fstype为文件系统格式参数,iso9660为光盘设备格式,ro、nosuid及nodev为光盘设备具体的权限参数,/dev/cdrom则是定义要挂载的设备名称。
# dnf install autofs# vim /etc/auto.master 包含了最重要的参数,没有包含全部
/misc/ /etc/automisc
/media /etc/iso.misc 启用子配置iso名称,名称可随意写, 后缀建议misc结尾# vim /etc/iso.misc
iso -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
# systemctl start autofs
# systemctl enable autofs
将 NFS服务服务加入到AutoFs自动挂载服务中
首先应该把NFS共享目录先卸载掉,然后在autofs服务程序的主配置文件中会有一条“/misc /etc/auto.misc”参数,这个auto.misc相当于自动挂载的参考文件,而它默认就已经存在
填写本地挂载的路径和NFS服务器的挂载信息
重启autofs服务程序,进入到/misc/nfsfile目录时,共享信息便会自动挂载
# umount /nfsfile
# vim /etc/auto.master
/misc /etc/auto.misc 新增# vim /etc/auto.misc
nfsfile 192.168.10.10:/nfsfile# systemctl restart autofs
# cd /misc/nfsfile
192.168.10.10:/nfsfile 17G 3.9G 14G 23% /misc/nfsfile
- DNS域名解析服务
最高级、最权威的根DNS服务器总共有13台,分布在世界各地,其管理单位、具体的地理位置。
名称 |
管理单位 |
地理位置 |
IP地址 |
A |
INTERNIC.NET |
美国-弗吉尼亚州 |
198.41.0.4 |
B |
美国信息科学研究所 |
美国-加利弗尼亚州 |
128.9.0.107 |
C |
PSINet公司 |
美国-弗吉尼亚州 |
192.33.4.12 |
D |
马里兰大学 |
美国-马里兰州 |
128.8.10.90 |
E |
美国航空航天管理局 |
美国加利弗尼亚州 |
192.203.230.10 |
F |
因特网软件联盟 |
美国加利弗尼亚州 |
192.5.5.241 |
G |
美国国防部网络信息中心 |
美国弗吉尼亚州 |
192.112.36.4 |
H |
美国陆军研究所 |
美国-马里兰州 |
128.63.2.53 |
I |
Autonomica公司 |
瑞典-斯德哥尔摩 |
192.36.148.17 |
J |
VeriSign公司 |
美国-弗吉尼亚州 |
192.58.128.30 |
K |
RIPE NCC |
英国-伦敦 |
193.0.14.129 |
L |
IANA |
美国-弗吉尼亚州 |
199.7.83.42 |
M |
WIDE Project |
日本-东京 |
202.12.27.33 |
我们所提到的13台根域服务器并非真的是指只有13台服务器,没有那台服务器能独立承受住如此大的请求量,这是技术圈习惯的叫法而已。实际上用于根域名的服务器总共有504台,它们从A到M进行了排序,共用13个IP地址以此进行负载均衡,抵抗分布式拒绝服务攻击(DDoS)的影响。
随着互联网接入设备数量增长,原有 IPv4 体系已经不能满足需求,IPv6 协议在全球开始普及。基于 IPv6 的新型地址结构为新增根服务器提供了契机。下一代互联网国家工程中心于2013 年联合日本和美国相关运营机构和专业人士发起“雪人计划”,提出以 IPv6 为基础、面向新兴应用、自主可控的一整套根服务器解决方案和技术体系,在全球完成25台 IPv6(互联网协议第六版) 根服务器架设。
bound 也可以实现出dns服务
LinuxProbe 0x15 SAMBA文件共享服务、NFS网络文件系统、AutoFs自动挂载服务、DNS域名解析服务相关推荐
- 嵌入式成长轨迹33 【嵌入式学习阶段】【ARM环境调试】【在虚拟机下Ubuntu建立NFS网络文件系统】...
更新版 http://www.cnblogs.com/zeedmood/archive/2012/12/08/2808376.html (以防参考资料链接无效,将所有参考文章都附后了,所以非常长;实际 ...
- Linux运维系列总结-Linux系统启动过程、WEB工作原理、DHCP工作原理、DNS解析原理、NFS网络文件系统、FTP文件传输协议、PXE+KICKSTART自动安装系统
Linux运维系列总结-Linux系统启动过程.WEB工作原理.DHCP工作原理.DNS解析原理.NFS网络文件系统.FTP文件传输协议.PXE+KICKSTART自动安装系统 1.Linux系统的启 ...
- 嵌入式成长轨迹61 【智能家居项目】【ARM 飞凌ok6410】【在虚拟机Ubuntu下NFS网络文件系统建立】...
推荐阅读顺序: 基本环境搭建: [配置]在虚拟机Ubuntu下NFS网络文件系统建立 <ok6410 Qt移植百科全书> [配置]QT&QWT&sqlite3安装配置 这中 ...
- 如何在ubuntu 14.04系统下开启nfs网络文件系统
之前安装过ubuntu 11.04和ubuntu 12.04的系统时,分别研究过如何开启NFS网络文件系统.今天将系统更新到了ubuntu 14.04,发现之前的办法都不行了,有些步骤得更新一下,于是 ...
- Linux下的NFS网络文件系统
一.NFS概述 NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间共享资源.在NFS的应用中,本地NFS的客户端应用可以透 ...
- linux运维、架构之路-nfs网络文件系统
一.nfs介绍 NFS是Network File System的缩写,是网络文件系统,它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录,主要存储用户上传的图片附件等信息. ...
- linux通过网关挂在nfs,NFS 网络文件系统挂载在A8板子上
我承认自己是菜鸟,没什么网络知识就来搞挂载nfs网络文件系统,花费了5天的时间才把nfs网络文件系统成功挂载在A8板子上,实现了A8板子和虚拟机的文件共享.分享一下个人经验: 以下是基于nfs已经完成 ...
- L028-老男孩实效教育-nfs网络文件系统企业级优化实战-12节
通过命令:mount -t nfs -o nosuid,noexec,nodev,rw 10.0.0.7:data/ /mnt 将mnt挂载. 挂载的时候因为加了noexec参数,虽然有x ...
- NFS网络文件系统共享日志
最近搞了个日志收集 Server,但是遇到了几个问题 1.收集log的server上面有空间,却不让安装ftp.nginx及其他可提供访问的服务 2.可提供服务的server又没有磁盘空间 3.用什么 ...
最新文章
- 什么时候应该将花括号用于ES6导入?
- Swift - 闭包的介绍及用法(以数组排序为例)
- 测试服务搭建之centos7下安装java
- 利用事件冒泡和阻止事件冒泡的例子
- sed简单使用(二)编号
- python中进程池的应用
- MySQL 5.7基于GTID及多线程主从复制
- CDN - 域名解析错误排查
- yaourt下载安装dropbox提示curl ssl证书错误
- 查看jvm的full gc的频率
- oracle临时表空间自动清理,oracle清理临时表空间
- python3小游戏源代码_Python入门塔防小游戏,开发步骤和源码,带你轻松学python...
- 苹果 M1 Mac 安装系统后创建用户失败的解决方法
- gcc中使用rpath指定优先搜索路径
- 如何阅读Java源码
- 天才小毒妃 第878章 你喜欢孩子
- 什么是网点?印刷网点与CMYK色彩,彩色渐变色印刷原理。
- ImportError: /home/cyj/anaconda2/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found
- Kube-OVN:大型银行技术团队推荐的金融级云原生网络方案
- 基于QT实现的计算器(只需要简单的栈知识,不仅仅是四则运算,接近手机内置计算器功能)
热门文章
- linux进程控制(上)
- 空间索引--网格索引
- 一文理解分布式开发中的服务治理
- Android无障碍开发(AccessibilityService)入门
- 如何简单实现mysql数据库迁移
- git常用命令操作详解(gitblit自建服务器使用)
- android 空调遥控器——遥控器基本版(功能全部实现)
- 如何将Android Studio与华为软件开发云代码仓库无缝对接(二)
- 计算机作业微波炉工作的原理,微波炉工作原理是什么 微波炉使用方法【详解】...
- esp8266 html模板,01_ESP8266 NONO_SDK 创建工程模板