2 Linux网络基础
21.1 DHCP 简介
DHCPDynamic Host Configuration Protocol ,动态主机配置协议)是一个 工作在应用层的 局域网网络协议, 数据传输时 使用 UDP 不可靠传输 协议工作,
通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配 网络资源 ,使网络环境中的主机 能 动态的获得 IP 地址、 Gateway 地址、 DNS 服务器地址等信息,并能够提升地址的使用率 。
21.2 DHCP 工作原理(租约四部曲+续租)
动态主机设置协定(DHCP)是一种使网络管理员能够集中管理和自动分配IP网络地址的通信协议。在IP网络中,每个连接Internet的设备都需要分配唯一的IP地址。DHCP使网络管理员能从中心结点监控和分配IP地址。当某台计算机移到网络中的其它位置时,能自动收到新的IP地址。
DHCP使用了租约的概念,或称为计算机IP地址的有效期。租用时间是不定的,主要取决于用户在某地联接Internet需要多久,这对于教育行业和其它用户频繁改变的环境是很实用的。通过较短的租期,DHCP能够在一个计算机比可用IP地址多的环境中动态地重新配置网络。DHCP支持为计算机分配静态地址,如需要永久性IP地址的Web服务器。
21.2.1 DHCP 客户端进行 IP 请求
当一个DHCP 客户机启动时,会自动将自己的 IP 地址 配置 成 0.0.0.0 ,由于使用 0.0.0. 0 不能进行正常通信,所以客户机就必须通过 DHCP 服务器来获取一个合法的地址。由于客户机不知道 DHCP 服务器的 IP 地址。
所以它 使用 0.0.0.0 的地址作为源地址,使用 255.255.255.255 作为目标地址,使用 UDP 67 端口作为目的端口来广播请求 IP 地址信息。 广播信息 DHCP Discover 中包含了 DHCP 客户机的 MAC 地址和计算机名,以便使 DHCP 服务器能确定是哪个客户机发送的请求。
21.2.2 DHCP 服务器响应请求
当DHCP 服务器接收到客户机请求 IP 地址的信 息时 ,它 就在自己的 IP 地址池中查找是否有合法 的 IP 地址提供给客户机。如果有, DHCP 服务器就将此 IP 地址做上标记,加入到 DHCP OFFER 的消息中,然后 DHCP 服务器就广播一则包括下列信息的 DHCP OFFER 消息:
DHCP客户机的 MAC 地址; DHCP 服务器提供的合法 IP 地址;子网掩码;默认网关(路由);租约的期限; DHCP 服务器的 IP 地址 MAC 。
因为DHCP 客户机还没有 IP 地址,所以 DHCP 服务器使用自己的 IP 地址作为源地址,使用 255.255.255.255 作为目标地址,使用 UDP 68 端口作为 源 端 口 来广播 DHCP OFFER 信息
21.2.3 DHCP 客户机选择 IP
DHCP客户机从接收到的第一个 DHCP OFFER 消息中选择 IP 地址,发出 IP 地址的 DHCP 服务器将该地址保留,这样该地址就不能提供给另一个 DHCP 客户机。当客户机从第一个 DHCP 服务器接收 DHCP OFFER 并选择 IP 地址后, DHCP 租约的第三过程发生。客户机将 DHCP REQUEST 消息广播到所有的 DHCP 服务器,表明它接受提供的内容。 DHCP REQUEST 消息包括为该客户机提供 IP 配置的服务器的服务标识符( IP 地址)。
DHCP 服务器查看 服务 器标 识符字段,以确定它自己是否被选择为指定的客户机提供 IP 地址,如果那些 DHCP OFFER 被拒绝, 则 DHCP 服务器会取消提供并保留其 IP 地址以用于下一个IP 租约请求。
在客户机选择IP 的过程中,虽然客户机选择了 IP 地址,但是还没有配置 IP 地址,而在一个网络中可能有几个 DHCP服务器,所以 客户机仍然使用 0.0.0.0 的地址作为源地址,使用 255.255.255.255 作为目标地址,使用UDP 67 端口作为目的端口来广播 DHCP REQUEST 信息
21.2.4 DHCP 服务器确认租约
服务器确认租约:DHCP ACK
DHCP服务器接收到 DHCP REQUEST 消息后,以 DHCPACK 消息的形式向客户机广播成功的确认,该消息包含有 IP 地址的有效租约和其他可能配置的信息。虽然服务器确认了客户机的租约请求,但是客户机还没有收到服务器的 DHCPACK消息,所以 服务器仍然使用自己的 IP 地址作为源地址,使用 255.255.255.255 作为目标地址,使用 UDP 68 端口作为 源端口来广播 DHCP ACK 信息。 当客户机收到 DHCP ACK 消息时,它就配置了 IP 地址,完成了 TCP/IP 的初始化。
服务器拒绝租约:DHCP NACK(DHCP NAK)
如果DHCP REQUEST 不成功,例如客户机试图租约先前的 IP 地址,但该 IP 地址不再可用,或者因为客户机移到其他子网,该 IP 无效时, DHCP 服务器将广播否定确认消息 DHCP NA C K 。当客户机接收到不成功的确认时,它将重新开始 DHCP租约过程。
注1:如果DHCP客户机无法找到DHCP服务器,它将从TCP/IP的B类网段169.254.0.0/16中挑选一个IP地址作为自己的IP地址,继续每隔5分钟尝试与DHCP服务器进行通讯,一旦与DHCP服务器取得联系,则客户机放弃自动配置的IP地址,而使用DHCP服务器分配的IP地址。
注2:DHCP客户机收到DHCP服务器回应的ACK报文后,通过地址冲突检测(arp)发现服务器分配的地址冲突或者由于其他原因导致不能使用,则发送DECLINE报文,通知服务器所分配的IP地址不可用。
21.2.5 DHCP 客户机续租
DHCP客户机会在租期过去 50% 的时候,直接向为其提供 IP 地址的 DHCP 服务器发送 DHCP REQUEST 消息包。如果客户机接收到该服务器回应的 DHCP ACK 消息包,客户机就根据包中所提供的新的租期以及其它已经更新的 TCP/IP 参数,更新自己 的配 置, IP 租用更新完成。如果没有收到该服务器的回复,则客户机继续使用现有的 IP 地 址,因为当前租期还有50% 。
如果在租期过去50% 的时候没有更新,则 DHCP 客户机将在租期过去 87.5% 的时候再次向为其提供 IP 地址的 DHCP 服务器联系。如果还不成功,到租约的 100% 时候, DHCP 客户机必须放弃这个 IP 地址,重新申请。 如果此时无 DHCP 服务器可用, DHCP 客户 机会使用 169.254.0.0/16 中随机的一个地址,并且每隔 5 分钟再进行尝试。
21.3 DHCP 服务 搭建
21.3.1 准备 实验 环境
两台机器,网络连接模式设为自定义VMnet*模式,先关闭服务器和客户机上的防火墙和SELinux
21.3.2 DHCP 相关 信息
软件名:
dhcp # DHCP服务软件包 dhcp-common # DHCP命令软件包(默认已安装)
服务名:
dhcpd # DHCP服务名 dhcrelay # DHCP中继服务名
端口号:
udp 67 # 作为客户端的目标端口,接收客户端的请求DHCP请求 udp 68 # 作为服务器的源端口,用来向客户端回复数据包
配置文件:
dhcpd /etc/dhcp/dhcpd.conf # 此配置文件默认是空的,需要找模板文件重新生成 dhcpd.conf.sample /usr/share/doc/dhcp-4.*.*/dhcpd.conf.sample # DHCP的模板配置文件 dhcrelay /etc/sysconfig/dhcrelay # 该文件时中继配置文件,中继实验中用到
21.3.3 DHCP 配置文件详解
subnet 192.168.88.0 netmask 255.255.255.0{ #声明要分配的网段和子网掩码 range 192.168.88.3 192.168.88.254; #声明可用IP地址池 option domain-name "atguigu.com" ; #设置DNS域 option domain-name-servers 8.8.8.8 ; #设置DNS服务器地址 option routers 192.168.88.2; #默认网关的地址 option broadcast-address 192.168.88.255; #广播地址(可不写) default-lease-time 600; #默认租约(s) max-lease-time 7200; #最大租约(s) }
21.4 DHCP 实验 部署
21.4.1 DHCP 基本 功能实验
1)生成配置文件
cp -a /usr/share/doc/dhcp-4.*.*/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
2)修改配置文件
将配置文件的前几个subnet声明注释掉。修改最后一个subnet声明
注:注意配置文件中每行结尾的分号和结束大括号,
subnet 192.168.88.0 netmask 255.255.255.0{ range 192.168.88.3 192.168.88.254; option domain-name "atguigu.com" ; option domain-name-servers 8.8.8.8 ; option routers 192.168.88.2; option broadcast-address 192.168.88.255; default-lease-time 600; max-lease-time 7200; }
3)重启服务
service dhcpd start
4)重启客户机的网卡
ifdown eth0;ifup eth0
21.4.2 保留地址(固定地址分配)
1)获取客户端的mac地址
arp -a # 查看客户机的mac地址
2)修改/etc/dhcp/dhcpd.conf文件
host fantasia{ hardware ethernet mac地址; # 客户机的mac地址 fixed-address IP地址; # 固定分配给客户机的ip地址(可以使用地址池以外的IP) }
3)重启DHCP服务
service dhcpd restart
4)重启客户机网卡验证IP获取是否成功
ifdown eth0;ifup eth0
21.4.3 超级作用域(同一局域网)
1)超级作用域介绍
DHCP服务器可为单个物理网络上的客户端提供多个作用域租约地址
2)实验环境准备
三台虚拟机同一网络模式,一个DHCP服务器,两个客户机
3)实验步骤
设置DHCP服务器的单臂路由所需子网卡:
cp -a ifcfg-eth0 ifcfg-eth0:0 #编辑此文件,修改网卡名和IP地址即可
开启路由转发:
vim /etc/sysctl.conf net.ipv4.ip_forward = 1 #此选项修改为1即可 sysctl -p #刷新内核参数配置文件
修改/etc/dhcp/dhcpd.conf文件
#之前的网段声明和主机声明全都注释掉! shared-network public { subnet 192.168.88.0 netmask 255.255.255.0{ option routers 192.168.88.10; range 192.168.88.100 192.168.88.100;} subnet 192.168.99.0 netmask 255.255.255.0{ option routers 192.168.99.10; range 192.168.99.100 192.168.99.110;} }
重启DHCP服务
service dhcpd restart
分别重启两台机器的网卡,查看获取的地址
ifdown eth0;ifup eth0
21.4.4 DHCP中继
1)DHCP中继介绍
DHCP Relay(DHCPR)DHCP中继是一个小程序,可以实现在不同子网和物理网段之间处理和转发dhcp信息的功能。
2)实验环境准备
注:关闭所有防火墙:iptables、SELinux
DHCP服务器: eth0(192.168.10.10) VMnet10 DHCP中继: eth0(192.168.10.20) VMnet10 eth1(100.100.100.20) VMnet11 外网客户机: eth0(IP地址自动获取) VMnet11
3)配置DHCP服务器
软件安装:
yum -y install dhcp
修改/etc/dhcp/dhcpd.conf文件:
#声明两个subnet,其他无关可以不做操作或删除 subnet 192.168.10.0 netmask 255.255.255.0 { #实验中并未用到该地址池分配IP range 192.168.10.100 192.168.10.110; option routers 192.168.10.20; } subnet 100.100.100.0 netmask 255.255.255.0 { range 100.100.100.100 100.100.100.110; option routers 100.100.100.20; }
重启dhcpd服务:
service dhcpd start
指定网关:
只能中继器的内网IP为网关地址
4)配置DHCP中继服务器
网卡配置
一块网卡ip=192.168.10.20 一块网卡ip=100.100.100.20
软件安装
yum -y install dhcp
修改中继配置文件
vim /etc/sysconfig/dhcrelay INTERFACES=“eth0 eth1” DHCPSERVERS=”192.168.10.10”
开启路由转发
vim /etc/sysctl.conf netipv4.ip_forward = 1 sysctl -p
重启中继服务
service dhcrelay start
5)测试外网主机
重启网卡 ifdown ifup ifconfig
6)拓展实验
注:此图和实验规划有所区别,实验规划只是用一台测试机,此图使用了两台
22 Linux-网络基础-DNS服务
22.1 DNS 介绍
22.1.1 什么是域名?
域名(Domain Name ),简称域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台 计算机 或计算机组的名称,用于在数据 传 输 时 标 识计算机的电子方位 。具有独一无二,不可重复的特性。
22.1.2 什么是DNS?
域名系统(Domain Name System ,缩写 DNS )是互联网的一项服务。 域名解析是把域名指向网站空间 IP ,让人们通过注册的域名可以方便地访问到网站的一种服务。 IP 地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替 IP 地址标识站点地址。
域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。 可以理解为DNS 就是翻译官。
正向解析:域名 → IP 地址
反向解析:IP 地址 → 域名
22.1.3 域名的组成 和分类
常见格式:
完整格式:
. :根域,可省略不写 com:顶级域,由 I CANN 组织指定和管理 分类 国家地区域名 cn 中国 、 hk 香港 、 sg 新加坡 等 通用顶级域名 com 商业机构 、 org 非营利组织 、 edu 教育机构 等 新通用顶级域名 red 红色 、 热 情 、 top 顶级 、 高端 等
atguigu:二级域 (注册域 ),可由个人或组织申请注册
www:三级域 子域 )),服务器 网站名 代表
主机名:s1.
拓展com.cn 属于 二级 域名 ””,是 cn 顶级域的子域
22.2 域名解析过程
-
客户机首先查看查找本地hosts 文件,如果有则返回,否则进行下一步
-
客户机查看本地缓存,是否存在本条目的缓存,如果有则直接返回,否则进行下一步。
-
将请求转发给指向的DNS 服务器。
-
查看域名是否本地解析,是则本地解析返回,否则进行下一步。
-
本地DNS 服务器首先在缓存中查找,有则返回,无则进行下一步。
-
向全球13 个根域服务器发起DNS 请求,根域返回org 域的地址列表。
-
使用某一个org 域的IP 地址,发起DNS 请求,org 域返回kernel 域服务器地址列表。
-
使用某一个kernel 域IP 地址,发起DNS 请求,kernel 域返回
22.3 DNS软件信息
软件名称:
bind
服务名称:
named
软件端口: UDP 53 数据通信(域名解析)
TCP 53 数据同步(主从同步)
配置文件:
主配置文件:/etc/named.conf(服务器运行参数)
区域配置文件:/etc/named.rfc1912.zones(服务器解析的区域配置,正反向区域定义信息)
数据配置文件:/var/named/xx.xx(主机名和IP 地址的对应解析关系,及主从同步信息)
记录类型:
记录类型 | 描述 |
---|---|
A: | 地址记录,用来指定域名的IPv4 地址的记录 |
AAAA: | 地址记录,用来指定域名的IPv6 地址的记录 |
NS: | 将域名指向另一个域名,再由另一个域名提供ip 地址,就需要添加CNAME 记录 |
CNAME: | 域名服务器记录,如果需要把子域名交给其他DNS 服务商解析,就需要添加NS 记录。 |
MX: | 邮件交换记录如果需要设置邮箱,让邮箱能收到邮件,就需要添加 MX 记录。 |
TXT: | 可填写任何东西,长度限制255。绝大多数的TXT 记录是用来做SPF 的(反垃圾邮件) |
22.4 DNS实验搭建
22.4.1 DNS服务 搭建
先关闭服务器和客户机上的防火墙和SELinux
1)软件安装
yum -y install bind
2)配置主配置文件(/etc/named.conf)
3)配置区域文件 (/etc/named.rfc1912.zones)
注:先对区域文件进行备份,删除多余的模板,只留下一个正向和一个反向(反向修改时,网络位的反写格式 如 192.168. 100 .2 100)
4)配置数据文件 /var/nam ed/ A. 先复制生成正向解析文件和反向解析文件 B. 编辑正向解析文件( 注意域名结尾的",") C. 编辑反向解析文件( 注意域名结尾的".")
5)重启DNS服务
service named restart
6)客户端测试
在网卡配置文件中添加DNS 服务器的地址,然后用 nslookup测试 。
22.4.2 主 从DNS服务器
先关闭服务器和客户机上的防火墙和SELinux
实验目的:
减轻主服务器的压力
实验准备:
一台主服务器、一台 从服务器 、一 台测试机
搭建过程:
1)搭建主服务器步骤
-
安装 bind 软件
-
主配置文件的修改
-
区域配置文件的修改
-
配置数据文件
正向数据文件
反向数据文件(可选做)
-
启动 named 服务
注意:主DNS 的区域配置文件中 allow-updata 参数添加从服务器 IP 地址。
2)搭建从服务器步骤
-
安装 bind 软件
-
修改主配置文件 /etc/name d. conf
-
配置区域文件( (/etc/named.rfc1912.zones)
注意:从配置文件的 类型需要修改为 slave ,并且需要填写主服务器的地址 ,如下
type slave master s 192.168. 0.10 # 大括号两侧留有空格 文件保存位置修改为 file slaves atguigu .localhost
-
重启服务
-
在测试机上 填 写从服务器的 IP ,并使用 nslookup 测试
22.4.3 DNS缓存服务器
先关闭服务器和客户机上的防火墙和 SELinux
实验目的:
加快解析 速度 提高 工作效率
实验软件:
dnsmasq
配置文件:
/etc/dnsmasq.conf domain= # 域名 需要解析的域名 server=ip # 主DNS服务器 IP cache size=15000 # 声明缓存条数
重启服务:
service dnsmasq restart
测试效果:
在测试机上填写 DNS 缓存服务器的 ip 地址
22.4.4 智能DNS分离解析
实验原理:
DNS 分离解析即将 相同域名解析为不同的 IP 地址 。现实网络中一些 网站为了让用户有更好的体验效果解析 速度更快,就把来自不同运营商的用户解析到相 对应的服务器这样就大大提升了访问速度
实验环境:
一台 内网 测试机 (单网卡)
一台网关+DNS (双网卡)
一台外网测试机 (单网卡)
一台web 服务器(双网卡)
实验步骤:
1)安装 bind 软件
2)内核配置文件开启路由转发 ,修改 /etc/sysctl.conf
3)修改主配置文件 /etc/named.conf
注意不同的解析放在了各自的区域配置文件 便于 区分 和维护更新
4)生成 自己定 义的区域文件 反向解析 省略掉了
cp -a named.rfc1912.zones lan
cp -a named.rfc1912.z ones wan
5)配置数据文件
配置内网的正向解析 文件
配置外网的正向解析 文件
6)重启服务 service named restart
7)效果 测试 内网客户端网卡配置
将 dns 和网关都指为 网关服务器的内网口地址
外网客户端网卡配置
将 dns 和网关 都指为 网关服务器的 外网口地址
23 Linux-网络基础-VSFTP服务
24.1 VSFTP 概述
FTP 是 File Transfer Protocol (文件传输协议)的英文简称,用于 Internet 上的文件的双向 传输。 使用 FTP 来传输时, 是具有一定程度的 危险性 因为数据在因特网上面是完全没有受到保护 的 明文传输方式!
VSFTP 是一个基于 GPL 发布的类 Unix 系统上使用的 FTP 服务器软件,它的全称是 Very Secure FTP 从名称定义上基本可以看出,这是为 了 解决 ftp 传输安全性问题的 。
安全特性:
-
vsftp 程序的运行者一般是普通用户 ,降低了相对 应 进 程 的 权限 ,提高了安全 性
-
任何需要执行较高权限的指令都需要上层程序许可
-
ftp 所需要使用的绝大多数命令都被整合到了 vsftp 中,基本不需要系统额外提供命令
-
拥有 chroot 功能,可以改变用户的根目录,限制用户只能在自己的家目录
24.2 VSFTP 连接类型
控制连接(持续连接) → TCP 21(命令信道) → 用户收发FTP命令
数据连接(按需连接) → TCP 20(数据信道) → 用于上传下载数据
24.3 VSFTP 工作模式
Port 模式
FTP 客户端首先和服务器的TCP 21端口建立连接,用来发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。FTP server必须和客户端建立一个新的连接用来传送数据。
Passive 模式
FTP 客户端首先和服务器的TCP 21端口建立连接,用来建立控制通道发送命令,但建立连接后客户端发送Pasv命令。服务器收到Pasv命令后,打开一个临时端口(端口大于1023小于65535)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器的临时端口,然后FTP服务器将通过这个端口传输数据。
24.4 VSFTP 传输模式
Binary模式:不对数据进行任何处理,适合进行可执行文件、压缩文件、图片等
ASCII模式:进行文本传输时,自动适应目标操作系统的结束符,如回车符等
Linux的红帽发行版中VSFTP默认采用的是Binary模式,这样能保证绝大多数文件传输后能正常使用
切换方式:在ftp>提示符下输入ascii即转换到ACSII方式,输入bin,即转换到Binary方式。
24.6 VSFTP 软件信息
服务端软件名:vsftpd
客户端软件名:ftp
服务名:vsftpd
端口号:20、21、指定范围内随机端口
配置文件:/etc/vsftpd/vsftpd.conf
24.6 登录验证方式
匿名用户验证:
-
用户账号名称:ftp或anonymous
-
用户账号密码:无密码
-
工作目录:/var/ftp
-
默认权限:默认可下载不可上传,上传权限由两部分组成(主配置文件和文件系统)
本地用户验证:
-
用户账号名称:本地用户(/etc/passwd)
-
用户账号密码:用户密码(/etc/shadow)
-
工作目录:登录用户的宿主目录
-
权限:最大权限(drwx------)
虚拟(virtual) 用户验证:
-
创建虚拟用户用来代替本地用户,减少本地用户曝光率
-
使用本地用户作为虚拟用户的映射用户,为虚拟用户提供工作目录和权限控制
-
能够设置严格的权限(为每一个用户生成单独的配置文件)
24.7 VSFTP 实验部署
注:先关闭服务器和客户机上的防火墙和 SELinux
安装VSFTP
yum -y install vsftpd
24.7.1 匿名用户验证实验:
匿名权限控制:
anonymous_enable=YES # 启用匿名访问 anon_umask=022 # 匿名用户所上传文件的权限掩码 anon_root=/var/ftp # 匿名用户的 FTP 根目录 anon_upload_enable=YES # 允许上传文件 anon_mkdir_write_enable=YES # 允许创建目录 anon_other_write_enable=YES # 开放其他写入权 删除、覆盖、重命名 anon_max_rate=0 # 限制最大传输速率( 0 为不限速, 单位: bytes/ 秒)
实验需求与流程:
注意:在客户端登录后,默认情况下是可以下载的,但不能上传
1)实现可以上传
anon_upload_enable=YES 在/var/ftp/下创建上传目录 修改上传目录的权限或所有者,让匿名用户有写入权限
2)实现创建目录和文件其他操作
anon_mkdir_write_enable=YES #允许创建目录 anon_other_write_enable=YES #删除文件、文件改名、文件覆盖
3)用户进入某个文件夹时,弹出相应的说明
在对应目录下创建 .message 文件,并写入相应内容 确认dirmessage_enable=YES是否启用 尝试却换目录查看效果(同一次登录仅提示一次)
4)实现上传的文件可下载
默认情况下开放上传权限后,上传的文件是无法被下载的,因为文件的其他人位置没有r权限设置anon_umask=022,可以让上传的文件其他人位置拥有r权限,然后才能被其他人下载
24.7.2 本地用户验证实验:
本地用户权限控制:
local_enable=YES # 是否启用本地系统用户 local_umask=022 # 本地用户所上传文件的权限掩码 local_root=/var/ftp # 设置本地用户的 FTP 根目录 chroot_local_user=YES # 是否将用户禁锢在主目录 local_max_rate=0 # 限制最大传输速率 ftpd _banner=Welcome to blah FTP service # 用户登录时显示的欢迎信息 userlist_enable=YES & userlist_deny=YES # 禁止 /etc/vsftpd/user_list 文件中出现的用户名登录 FTP userlist_enable=YES & userlist_deny=NO # 仅允许 /etc/vsftpd/user_list 文件中出现的用户名登录 FTP 配置文件:ftpusers # 禁止 /etc/vsftpd/ftpusers 文件 中 出现的用户名登录 FTP, 权限比 user_list 更高,即时生效
实验需求与流程:
1)服务端需要创建用户并设置密码(所创建的用户,不需要登录操作系统,仅用来登录VSFTP)
useradd -s /sbin/nologin username
2)将所有用户禁锢在自己的家目录下
注:默认没有禁锢用户时,客户端登录后可以随意切换目录,查看文件所在位置和文件名 chroot_local_user=YES # 开启用户家目录限制,限制所有用户不能随便切换目录
3)将部分用户禁锢在自己的家目录下
chroot_list_enable=YES # 开启白名单功能,允许白名单中的用户随意切换目录 chroot_list_file=/etc/vsftpd/chroot_list # 白名单文件所在位置(需自己创建)
4)配置文件:/etc/vsftpd/ftpusers
所有写入此文件内的用户名都不允许登录ftp,立刻生效。
5)修改被动模式数据传输使用端口
pasv_enable=YES pasv_min_port=30000 pasv_max_port=35000
24.7.3 虚拟用户验证实验:
1)建立FTP的虚拟用户的用户数据库文件(在/etc/vsftpd)
vim vsftpd.user 注:该文件名可以随便定义,文件内容格式:奇数行用户,偶数行密码 db_load -T -t hash -f vsftpd.user vsftpd.db #将用户密码的存放文本转化为数据库类型,并使用hash加密 chmod 600 vsftpd.db #修改文件权限为600,保证其安全性
2)创建FTP虚拟用户的映射用户,并制定其用户家目录
useradd -d /var/ftproot -s /sbin/nologin virtual #创建virtual 用户作为ftp的虚拟用户的映射用户
3)建立支持虚拟用户的PAM认证文件,添加虚拟用户支持
cp –a /etc/pam.d/vsftpd /etc/pam.d/vsftpd.pam #使用模板生成自己的认证配置文件,方便一会调用 编辑新生成的文件vsftpd.pam (清空原来内容,添加下列两行) auth required pam_userdb.so db=/etc/vsftpd/vsftpd account required pam_userdb.so db=/etc/vsftpd/vsftpd 在vsftpd.conf文件中添加支持配置 修改: pam_service_name=vsftpd.pam 添加: guest_enable=YES guest_username=virtual user_config_dir=/etc/vsftpd/dir
4)为虚拟用户建立独立的配置文件,启动服务并测试
注:做虚拟用户配置文件设置时,将主配置文件中自定义的匿名用户相关设置注释掉。
用户可以上传: anon_upload_enable=YES # 允许上传文件 用户可以创建目录或文件: anon_mkdir_write_enable=YES # 允许创建目录 用户可以修改文件名: anon_upload_enable=YES # 允许上传文件(为了覆盖开启的) anon_other_write_enable=YES # 允许重名和删除文件、覆盖
注:给映射用户的家目录 设置 o+r 让虚拟用户有读权限。
24.7.4 openssl+vsftpd 加密验证方式:
拓展:使用tcpdump 工具进行指定端口抓包,抓取ftp登录过程中的数据包
tcpdump -i eth0 -nn -X -vv tcp port 21 and ip host 来源ip -i # interface:指定tcpdump需要监听的接口 -n # 对地址以数字方式显式,否则显式为主机名 -nn # 除了-n的作用外,还把端口显示为数值,否则显示端口服务名 -X # 输出包的头部数据,会以16进制和ASCII两种方式同时输出 -vv # 产生更详细的输出
1)查看是否安装了openssl
rpm -q openssl
2)查看vsftpd 是否支持openssl
ldd /usr/sbin/vsftpd | grep libssl
3)生成加密信息的秘钥和证书文件
位置:/etc/ssl/certs/ a. openssl genrsa -out vsftpd.key 1024 # 建立服务器私钥,生成RSA密钥 b. openssl req -new -key vsftpd.key -out vsftpd.csr # 需要依次输入国家,地区,城市,组织,组织单位,Email等信息。最重要的是有一个common name,可以写你的名字或者域名。如果为了https申请,这个必须和域名吻合,否则会引发浏览器警报。生成的csr文件交给CA签名后形成服务端自己的证书 c. openssl x509 -req -days 365 -sha256 -in vsftpd.csr -signkey vsftpd.key -out vsftpd.crt # 使用CA服务器签发证书,设置证书的有效期等信息
注意1:生成完秘钥和证书文件后,将本目录{/etc/ssl/certs/}的权限修改为500.
注意2:在实验环境中可以用命令生成测试,在生产环境中必须要在https证书厂商注册(否则浏览器不识别)
4)修改主配置文件/etc/vsftpd/vsftpd.conf
ssl_enable=YES #启用ssl认证 ssl_tlsv1=YES ssl_sslv2=YES ssl_sslv3=YES #开启tlsv1、sslv2、sslv3都支持 allow_anon_ssl=YES #允许匿名用户{虚拟用户} force_anon_logins_ssl=YES force_anon_data_ssl=YES #匿名登录和传输时强制使用ssl force_local_logins_ssl=YES force_local_data_ssl=YES #本地登录和传输时强制使用ssl rsa_cert_file=/etc/ssl/certs/vsftpd.crt #rsa格式的证书 rsa_private_key_file=/etc/ssl/certs/vsftpd.key #rsa格式的密钥
注:密钥文件要在配置文件中单独声明(写入配置文件时,注释要单独一行,否则会报错)
5)重启服务
service vsftpd restart
6)测试(使用第三方客户端连接)
FileZilla-FTP(第三方客户端工具)
连接测试时选择:
服务器类型:显式 TLS/SSL
登录类型: 一般或匿名
24.8 vsftpd配置文件详解
24.8.1 默认配置:
1)允许匿名用户和本地用户登陆。
anonymous_enable=YES local_enable=YES
2)匿名用户使用的登陆名为 ftp 或 anonymous ,口令为空;匿名用户不能离开匿名用户家目录 /var/ 且只能下载不能上传。
3)本地用户的登录名为本地用户名,口令为此本地用户的口令;本地用户可以在自 己家目录中进行 读写操作;本地用户可以离开自家目录切换至有权限访问的其他目录,并在权限允许的情况下进行上 传 下载。
write_enable=YES
4)写在文件 /etc/vsftpd.ftpusers 中的本地用户禁止登陆。
24.8.2 配置文件格式:
vsftpd.conf的内容非常单纯,每一行即为一项设定。若是空白行或是开头为 的一行,将会被忽略。内容的格式只有一种,如下所示
option=value # 要注意的是,等号两边不能加空白。
24.8.3 匿名用户( anonymous )设置
anonymous_enable=YES/NO(YES) # 控制是否允许匿名用户登入,YES 为允许匿名登入, NO 为不允许。默认值为 YES 。 write_enable=YES/NO(YES) # 是否允许登陆用户有写权限。属于全局设置,默认值为YES 。 no_anon_password=YES/NO(NO) # 若是启动这项功能,则使用匿名登入时,不会询问密码。默认值为NO 。 ftp_username=ftp # 定义匿名登入的使用者名称。默认值为ftp 。 anon_root=/var/ftp # 使用匿名登入时,所登入的目录。默认值为/var/ftp 。注意 ftp 目录不能是 777 的权限属性,即匿名用户的家目录不能有 777 的权限。 anon_upload_enable=YES/NO(NO) # 如果设为YES 则允许匿名登入者 有上传文件(非目录)的权限,只有在 write_enable=YES 时,此项才有效。当然,匿名用户必须要有对上层目录的写入权。默认值为 NO 。 anon_world_readable_only=YES/NO(YES) # 如果设为YES ,则允许匿名登入者下 载可阅读的档案(可以下载到本机阅读,不能直接在 FTP 服务器中打开阅读)。默认值为YES 。 anon_mkdir_write_enable=YES/NO(NO) # 如果设为YES ,则允许匿名登入者有新增目录的权限,只有在 write_enable=YES 时,此项才有效。当然,匿名用户必须要有对上层目录的写入权。默认值为 NO 。 anon_other_write_enable=YES/NO(NO) # 如果设为YES ,则允许匿名登入者更多于上传或者建立目录之外的权限,譬如删除或者重命名。(如果 anon_upload_en able=NO ,则匿名用户不能上传文件,但可以删除或者重命名已经存在的文件;如果 anon_mkdir_write_enable=NO ,则匿名用户不能上传或者新建文件夹,但可以删除或者重命名已经存在的文件夹。)默认值为 NO 。 chown_uploads=YES/NO(NO) # 设置是否改变匿名用户上传文件(非目录)的属主。默认值为NO 。 chown_username=username # 设置匿名用户上传文件(非目录)的属主名。建议不要设置为root 。 anon_umask=077 # 设置匿名登入者新增或上传档案时的umask 值。默认值为 077 ,则新建档案的对应权限为 700 。 deny_email_enable=YES/NO(NO) # 若是启动这项功能,则必须提供一个档案/etc/vsftpd/banner_emails ,内容为 email address 。若是使用匿名登入,则会要求输入 email address ,若输入的 email address 在此档案内,则不允许进入。默认值为 N O 。 banned_email_file=/etc/vsftpd/banner_emails # 此文件用来输入email address ,只 有在 deny_email_enable=YES 时,才会使用到此档案。若是使用匿名登入,则会要求输入 email address ,若输入的 email address 在此档案内,则不允许进入。
24..4 本地用户设置
local_enable=YES/NO(YES) # 控制是否允许本地用户登入,YES 为允许本地用户登入, NO 为不允许。默认值为 YES 。 local_root=/home/username # 当本地用户登入时,将被更换到定义的目录下。默认值为各用户的家目录。 write_enable=YES/NO(YES) # 是否允许登陆用户有写权限。属于全局设置,默认值为YES 。 local_umask=022 # 本地用户新增档案时的umask值。默认值为077。 file_open_mode=0755 # 本地用户上传档案后的档案权限,chmod 所使用的数值相同 。默认值为 0666
24.8.5 欢迎语设置
dirmessage_enable=YES/NO(YES) # 如果启动这个选项,那么使用者第一次进入一个目录时,会检查该目录下是否有.message 这个档案,如果有,则会出现此档案的内容,通常这个档案会放置欢迎话语,或是对该目录的说明。默认值为开启。 message_file=.message # 设置目录消息文件,可将要显示的信息写入该文件。默认值为.message 。 banner_file=/etc/vsftpd/banner # 当使用者登入时,会显示此设定所在的档案内容,通常为欢迎话语或是说明。默认值为无。如果欢迎信息较多,则使用该配置项。 ftpd_banner=Welcome to BOB's FTP server # 这里用来定义欢迎话语的字符串,banner_file是档案的形式,而ftpd_banner则是字符串的形式。预设为无。
24.8.6 控制用户是否允许切换到上级目录
在默认配置下,本地用户登入FTP 后可以使用 cd 命令切换到其他目录,这样会对系统带来安全隐患。可以通过以下三条配置文件来控制用户切换目录。
chroot_list_enable=YES/NO(NO) # 设置是否启用chroot_list_f ile 配置项指定的用户列表文件。默认值为 NO 。 chroot_list_file=/etc/vsftpd.chroot_list # 用于指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录。 chroot_local_user=YES/NO(NO) # 用于指定用户列表文件中的用户是否允许切换到上级目录。默认值为NO 。
通过搭配能实现以下几种效果: - 当 chroot_list_enable=YES chroot_local_user=YES 时,在 /etc/v sftpd.chroot_list 文件 中列 出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。 - 当 chroot_list_enable=YES chroot_local_user=NO 时,在 /etc/vsftpd.chroot_list 文件中列出 的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。 - 当 chroot_list_enable=NO chroot_local_user=YES 时,所有的用户均不能切换到其他目录。 - 当 chroot_list_enable=N O chroot_local_user=NO 时,所有的用户均可以切换到其他目录。
24.8.7 数据传输模式设置
FTP在传输数据时,可以使用二进制方式,也可以使用 ASCII 模式来上传或下载数据。
ascii_upload_enable=YES/NO(NO) # 设置是否启用ASCII 模式上传数据。默认值为 NO 。 ascii_download_enable=YES/NO(NO) # 设置是否启用ASCII 模式下载数据。默认值为 NO
24.8.8 访问控制设置
两种控制方式:一种控制主机访问,另一种控制用户访问。
控制主机访问:
tcp_wrappers=YES/NO(YES) # 设置vsftpd 是否与 tcp wrapper 相结合来进行主机的访问控制。默认值为 YES 。如果启用,则 vsftpd服务器会检查 /etc/hosts.allow 和 /etc/hosts.deny 中的设置,来决定请求连接的主机,是否允许访问该 FTP 服务器。这两个文件可以起到简易的防火墙功能。 比如:若要仅允许192.168.0.1 192.168.0.254 的用户可以连接 FTP 服务器,则在 /etc/hosts.allow文件中添加以下内容: vsftpd:192.168.0. :allow all:all :deny
控制用户访问:
对于用户的访问控制可以通过 /etc 目录下的 vsftpd.user_list 和 ftpusers 文件来实现。
userlist_file=/etc/vsftpd.user_list # 控制用户访问FTP 的文件,里面写着用户名称。一个用户名称一行。 userlist_enable=YES/NO(NO) # 是否启用vsftpd.user_list 文件。 userlist_deny=YES/NO(YES) # 决定vsftpd.user_list 文件中的用户是否能够访问 FTP 服 务器。若设置为 YES ,则 vsftpd.user_li st文件中的用户不允许访问 FTP ,若设置为 NO ,则只有 vsftpd.user_list 文件中的用户才能访问 FTP 。/etc/vsftpd/ftpusers文件专门用于定义不允许访问 FTP 服务器的用户列表( 注意 如果userlist_enable=YES,userlist_deny=NO, 此时如果在 vsftpd.user_list 和 ftpusers 中都有某个用户时,那么这个用户是不能够访问 FTP 的,即 ftpusers 的优先级要高)。默认情况下 vsftpd.user_list和 ftpusers ,这两个文件已经 预设置了一些不允许访问 FTP 服务器的系统内部账户。如果系统没有这两个文件,那么新建这两个文件,将用户添加进去即可。
24.8.9 访问速率设置
anon_max_rate=0 # 设置匿名登入者使用的最大传输速度,单位为B/s 0 表示不限制速度。默认值为 0 。 local_max_rate=0 # 本地用户使用的最大传输速度,单位为B/s 0 表示不限制速度。预设值为 0 。
24.8.10 超时时间设置
accept_timeout=60 # 设置建立FTP 连接的超时时间,单位为秒。默认值为 60 。 connect_timeout=60 # PORT方式下建立数据连接的超时时间,单位为秒。默认值为 60 。 data_connection_timeout=120 # 设置建立FTP 数据连接的超时时间,单位为秒。默认值为 120 。 idle_session_timeout=300 # 设置多长时间不对FTP 服务器进行任何操作,则断开该 FTP 连接,单位为秒。默认值为 300 。
24.8.11 日志文件设置
xferlog_enable=YES/NO (YES) # 是否启用上传下载日志记录。如果启用,则上传与下载的信息将被完整纪录在 xferlog_file 所定义的档案中。预设为开启。 xferlog_file=/var/log/vsftpd.log # 设置日志文件名和路径,默认值为/var/log/vsftpd.log 。 xferlog_std_format=YES/NO(NO) # 如果启用,则日志文件将会写成xferlog 的标准格式,如同 wu ftpd 一般。默认值为关闭。 log_ftp_protocol=YES|NO(NO) # 如果启用此 选项,所有的 FT P 请求和响应都会被记录到日志中,默认日志文件在 /var/log/vsftpd.log 。启用此选项时, xferlog_std_format 不能被激活。这个选项有助于调试。默认值为 NO 。
24.8.12 定义用户配置文件
在vsftpd 中,可以通过定义用户配置文件来实现不同的用户使用不同的配置。
user_config_dir=/etc/vsftpd/userconf # 设置用户配置文件所在的目录。当设置了该配置项后,用户登陆服务器后,系统就会到/etc/vsftpd/userconf 目录下,读取与当前 用户名相同的文件,并 根据文件中的配置命令,对当前用户进行更进一步的配置。
例如:
定义user_config_dir=/etc/vsftpd/userconf ,且主机上有使用者 test1,test2 ,那么我们就在user_config_dir 的目录新增文件名为 test1 和 test2 两个文件。若是 test1 登入,则会读user_config_dir 下的 test1 这个档案内的设定。默认值为无。利用用户配置文件,可以实现对不同用户进行访问速度的控制,在各用户配置文件中定义local_max_rate=XX ,即可。
24.8.13 FTP 的工作方式与端口设置
FTP有两种工作方式: PORT FTP (主动模式)和 PASV FTP (被动模式)
listen_port=21 # 设置FTP 服务器建立连接所监听的端口,默认值为 21 。 connect_from_port_20=YES/NO # 指定FTP 使用 20 端口进行数据传输,默认值为 YES 。 ftp_data_port=20 # 设置在POR T 方式下, FTP 数据连接使用的端口,默认值为 20 。 pasv_enable=YES/NO(YES) # 若设置为YES ,则使用 PASV 工作模式;若设置为 NO ,则使用 PO RT 模式。默认值为 YES ,即使用 PASV工作模式。 pasv_max_port=0 # 在PASV 工作模式下,数据连接可以使用的端口范围的最大端口, 0 表示任意端口。默认值为 0 。 pasv_min_port=0 # 在PASV 工作模式下,数据连接可以使用的端口范围的最小端口, 0 表示任意端口。默认值为 0 。
24.8.14 与连接相关的设置
listen=YES/NO(YES) # 设置vsftpd 服务器是否以 standalone 模式运行。以 standalone 模式运行是一种较好的方式,此时listen 必须设置为 YES ,此为默认值 。建议不要更改,有很多与服务器运行相关的配置命令,需要在此模式下才有效。若设置为 NO ,则 vsftpd 不是以独立的服务运行,要受到 xinetd 服务的管控,功能上会受到限制。 max_clients=0 # 设置vsftpd 允许的最大连接数,默认值为 0 ,表示不受限制。若设置为 100 时,则同时允许有 100 个连接,超出的将被拒绝。只有 在 standalone 模式运行才有效。 max_per_ip=0 # 设置每个IP 允许与 FTP 服务器同时建立连接的数目。默认值为 0 ,表示不受限制。只有在 standalone模式运行才有效。 listen_address=IP 地址 # 设置FTP 服务器在指定的 IP 地址上侦听用户的 FTP 请求。若不设置,则对服务器绑定的所有 IP 地址进行侦听。只有在 standalone 模式运行才有效。 setproctitle_enable=YES/NO(NO) # 设置每个与FTP 服务器的连接,是否以不同的进程表现出来。默认值为 NO ,此时使 用 ps aux |grep ftp只会有一个 vsftpd 的进程。若设置为 YES ,则每个连接都会有一个 vsftpd 的进程。
24.8.15 虚拟用户设置
虚拟用户使用PAM 认证方式。
pam_service_name=vsftpd # 设置PAM 使用的名称,默认值为 /etc/pam.d/vsftpd 。 guest_enable= YES/NO(NO) # 启用虚拟用户。默认值为NO 。 guest_username=ftp # 这里用来映射虚拟用户。默认值为ftp 。 virtual_use_local_privs=YES/NO(NO) # 当该参数激活(YES )时,虚拟用户使用与本地用户相同的权限。当此参数关闭 NO )时,虚拟用户使用与匿名用户相同的权限。默认情况下此参数是关闭的( NO )。
24.8.16 其他设置
text_userdb_names= YES/NO(NO) # 设置在执行ls la 之类的命令时,是显示 UID 、 GID 还是显示出具体的用户名和组名。默认值为 NO,即以 UID 和 GID 方式显示。若希望显示用户名和组名,则设置为 YES 。 ls_recurse_enable=YES/NO(NO) # 若是启用此功能,则允许登入者使用ls -R (可以查看当前目录下子目录中的文件)这个指令。默认值为 NO 。 hide_ids=YES/NO(NO) # 如果启用此功能,所有档案的拥有者与群组都为ftp ,也就是使用者登入使用 ls -al 之类的指令,所看到的档案拥有者跟群组均为 ftp 。默认值为关闭。 download_enable=YES/NO(YES) # 如果设置为NO ,所有的文件都不能下载到本地,文件夹不受影响。默认值为 YES 。
24.8.17 响应代码解释说明
响应码 | 解释说明 | 响应码 | 解释说明 |
---|---|---|---|
110 | 新文件指示器上的重启标记 | 120 | 服务器准备就绪的时间(分钟数) |
125 | 打开数据连接,开始传输 | 150 | 打开连接 |
200 | 成功 | 202 | 命令没有执行 |
211 | 系统状态回复 | 212 | 目录状态回复 |
213 | 文件状态回复 | 214 | 帮助信息回复 |
215 | 系统类型回复 | 220 | 服务就绪 |
221 | 退出网络 | 225 | 打开数据连接 |
226 | 结束数据连接 | 227 | 进入被动模式( IP 地址、 ID 端口) |
230 | 登录因特网 | 250 | 文件行为完成 |
257 | 路径名建立 | 331 | 要求密码 |
332 | 要求帐号 | 350 | 文件行为暂停 |
421 | 服务关闭 | 425 | 无法打开数据连接 |
426 | 结束连接 | 450 | 文件不可用 |
451 | 遇到本地错误 | 452 | 磁盘空间不足 |
500 | 无效命令 | 501 | 错误参数 |
502 | 命令没有执行 | 503 | 错误指令序列 |
504 | 无效命令参数 | 530 | 未登录网络 |
532 | 存储文件需要帐号 | 550 | 文件不可用 |
551 | 不知道的页类型 | 552 | 超过存储分配 |
553 | 文件名不允许 |
24 Linux-网络基础-SAMBA服务
24.1 Samba 概述
SMB Server Messages Block ,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同 操作系统的 计算机之间提供文件及打印机等资源的共享服务。 SMB 协议是客户机 服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。 如图
ftp的 优缺点
优点:文件传输、应用层协议、可跨平台
缺点:只能实现文件传输无法实现文件系统挂载无法直接修改服务器端文件
Samba 的特性
使用 smb/cifs 协议、可跨平台、可实现文件系统挂载、可实现服务器端修改文件
Smb协议和 Cifs 之间的关系
随着Internet 的流行, Microsoft 希望将这个协议扩展到 Internet 上去,成为 Internet 上计算机之间相互共享数据的一种标 准。因此它 将原有的几乎没有多少技术文档的 SMB 协议进行整理,重新命名为 CIFS Common Internet File System 它使程序可以访问远程 Internet 计算机上的文件并要求此计算机提供服务 。
客户程序请求远在服务器上的服务器程序为它 提供 服务 。服务器获得请求并返回响应。 CI FS 是公共的或开放的 SMB 协议版本,并由 Microsoft 使用。SMB 协议在局域 网上用于服务器文件访问和打印的协议。
24.2 Samba 服务详解
24.2.1 Samba 软件相关信息
协议:SMB/CIFS 服务: smb 实现资源共享、权限验证 TCP 139、445 配置文件(/etc/samba/) smb.conf 主配置文件 smbusers 别名配置文件
24.2.2 登录验证模式安全级别
-
share 匿名验证
-
user 本地用户验证(Samba服务器默认的安全级别,用户在访问共享资源之前必须提供用户名和密码进行验证)拓展:tdbsam:该方式是使用一个数据库文件来验证。数据库文件叫passdb.tdb。可以通过pdbedit -a 向数据库中添加新用户,不过要建立的Samba用户必须先是系统用户。也可以理解为我们使用pdbedit -a 将系统用户转化为了samba 用户。pdbedit命令的参数很多,列出几个主要的。
pdbedit -a username:新建Samba账户(将系统用户转化为samba用户,并设置密码) pdbedit -x username:删除Samba账户 pdbedit -L:列出Samba用户列表,读取passdb.tdb数据库文件。
-
别名用户访问(虚拟用户)
24.2.3 常见配置参数解释
[global]用于定义Samba服务器的总体特性,其配置项对所有共享资源生效 workgroup = WORKGROUP # 设定 Samba Server 所要加入的工作组或者域。 server string = Samba Server Version %v # 设定 Samba Server 的注释,可以是任何字符串,也可以不填。宏%v表示显示Samba的版本号。 interfaces = lo eth0 192.168.12.2/24 # 设置Samba Server监听哪些网卡,可以写网卡名,也可以写该网卡的IP地址。 hosts allow = 127. 192.168.1. 192.168.10.1 # 表示允许连接到Samba Server的客户端,多个参数以空格隔开。可以用一个IP表示,也可以用一个网段表示。hosts deny 与hosts allow 刚好相反(二选一)。 例如: hosts allow=172.17.2. EXCEPT172.17.2.50 表示容许来自172.17.2.*.*的主机连接,但排除172.17.2.50 hosts allow=172.17.2.0/255.255.0.0 表示容许来自172.17.2.0/255.255.0.0子网中的所有主机连接 log file = /var/log/samba/log.%m #设置Samba Server日志文件的存储位置以及日志文件名称。在文件名后加个宏%m(主机名),表示对每台访问Samba Server的机器都单独记录一个日志文件。 max log size = 50 #设置Samba Server日志文件的最大容量,单位为kB,0代表不限制 security = user #设置用户访问Samba Server的验证方式。 passdb backend = tdbsam load printers = yes/no #设置是否在启动Samba时就共享打印机 [homes]用于设置用户宿主目录的共享属性(特殊共享) [homes] # 共享名(特殊共享,泛指每个用户对应的家目录) comment = Home Directories # 共享描述 browseable = no # 共享是否可被查看 writable = yes # 共享是否可写 ;valid users = %S # 允许访问该共享的用户 例如:valid users = bob,@bob(多个用户或者组中间用逗号隔开,如果要加入一个组就用“@组名”表示。) [printers]用于设置打印机共享资源的属性(特殊共享,共享打印设备,现在基本不用) [printers] # 共享名 comment = All Printers # 共享描述 path = /var/spool/samba # 共享路径 browseable = no # 共享是否可被查看 guest ok = no # 是否可以匿名访问,类似于public writable = no # 是否可写 printable = yes # 是否可以打印 [自定义]自定义共享区域 [自定义] # 共享名 comment = the share is xbz # 共享描述 path = /share/zdy # 共享路径 public = yes # 是否可以匿名访问,类似于guest ok browseable = yes # 共享是否可被查看 writable = yes # 是否可写(同时设置目录的W)
配置文件检查工具
testparm :若显示"Loaded services file OK."信息表示配置文件的语法是正确的 -v:显示samba所支持的所有选项
24.2.4 访问控制
写入权限的控制方式(类似于vsftp的限制方式):
-
配置文件开启,文件系统严格控制(尽量采用这种)
writable = yes setfacl 或 chmod 777 -
文件系统开启,配置文件严格控制
chmod 777 /dir read only = yes write list = 用户,@组
24.2.5 服务启动管理
-
启动、停止、重新启动和重新加载Samba服务
service smb start|stop|restart|reload -
开机自动启动samba服务
chkconfig --level 2345 smb on|off
24.2.6 客户端登录方式
-
Linux端:
smbclient -U 用户名 -L //服务器IP # 查看服务器共享 smbclient -U 用户名 //服务器ip/共享名 # 登录服务器共享 -
Window端
\\服务器ip\共享名 net use * /del # 清空登录缓存
24.3 Samba 部署与实验
注:先关闭服务器和客户机上的防火墙和SELinux
部署流程:
# 服务器端安装samba yum -y install samba # 确认客户端和相关命令软件包是否安装(默认是安装的) rpm -q samba-client rpm -q samba-common # 创建共享区域 备份主配置文件 创建独立的共享区间(仿照模板编写) # 启动smb 服务并查看默认共享区域 a、service smb start b、smbclient -U 用户名 -L smbserverIP
24.3.1 本地验证(登录、上传、下载)
1)修改配置文件(添加自定义共享)
[自定义] comment = the share is xbz path = /share/zdy public = yes browseable = yes writable = yes
2)创建共享目录并给定相应权限
mkdir /share/zdy chmod 777 /share/zdy # 最好使用ACL权限
3)测试配置文件并重启服务
testparm service smb restart
4)首先,创建Linux用户
useradd -s /sbin/nologin zhangsan passwd zhangsan # 不需要创建系统密码
5)转换为samba用户
pdbedit -a zhangsan
6)客户端查看共享文件夹并登录测试
smbcient -U zhangsan –L IP地址 smbclient –U zhangsan //IP地址/共享名
注:由于未设置上传文件的默认权限,指定用户上传的文件只有自己能修改和覆盖。
24.3.2 访问控制 - 通过配置限制
valid users 仅允许部分用户访问共享区域
注:前提条件是指定目录权限给到最大,通过修改配置文件来实现实验结果
部分用户登录samba服务器
修改/etc/samba/smb.conf中自定义的共享区域 添加:设置合法用户列表 valid users = 用户,@组(多个逗号分隔)
部分用户对共享区域有写权限
修改/etc/samba/smb.conf中自定义的共享区域 添加:开启只读,设置可写列表 read only = yes write list = lisi
设置上传文件的默认权限
create mask 文件的默认权限 directory mask 目录的默认权限 修改配置文件自定义的共享区域 添加: create mask = 666 directory mask = 777
24.3.3 用户别名(虚拟用户)
1)添加别名(/etc/samba/smbusers)
添加: zhangsan = zs
2)启用别名(修改主配置文件)
vim /etc/samba/smb.conf 添加: username map = /etc/samba/smbusers
3)测试
smbclient -U 别名 //服务器ip/共享名
24.3.4 映射网络驱动器(挂载)
1)Linux下:
临时挂载: mount -t cifs -o username=xxx,password=xxx //服务器ip/服务器共享 /本地挂载目录 永久挂载:/etc/fstab //服务器ip/服务器共享 /本地挂载目录 cifs defaults,username=xxx,password=xxx 0 0
2)Window下:
我的电脑、计算机、此电脑、这台电脑等右键映射网络驱动器 [注意是反斜杠\]
24.4 SAMBA 配置文件详解
24.4.1 全局参数
==================Global Settings =================== [global] config file = /usr/local/samba/lib/smb.conf.%m # 说明:config file 可以让你使用另一个配置文件来覆盖缺省的配置文件。如果文件 不存在,则该项无效。这个参数很有用,可以使得 samba 配置更灵活,可以让一台 samba 服务器模拟多台不同配置的服务器。比如,你想让 PC1 (主机名)这台电脑在访问 Samba Server 时使用它自己的配置文件,那么先在 /etc/samba/ 下为 PC1 配置一个名为 smb.conf.pc1 的文件,然后在 smb.conf 中加入: conf igfile = /etc/samba/host/smb.conf.%m 。这样当 PC1 请求连接 Samba Server 时, smb.conf.%m 就被替换成 smb.conf .pc1 。这样,对于 PC1 来说,它所使用的 Samba 服务就是由 smb.conf.pc1 定义的,而其他机器访问 Samba Server 则还是应用 smb.conf 。 workgroup = WORKGROUP # 说明:设定Samba Server 所要加入的工作组或者域。 server string = Samba Server Version %v # 说明:设定Samba Server 的注释,可以是任何字符串,也可以不填。宏 %v 表示显示 Samba 的版本号。 netbios name = smbserver # 说明:设置Samba Server 的 NetBIOS 名称。如果不填,则默认会使用该服务器的 DNS 名称的第一部分。 netbios name 和 workgroup 名字不要 设置成一样了。 interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 # 说明:设置Samba Server 监听哪些网卡,可以写网卡名,也可以写该网卡的 IP 地址。 hosts allow = 127. 192.168.1. 192.168.10.1 # 说明:表示允许连接到Samba Server 的客户端,多个参数以空格隔开。可以用一个 IP 表示,也可以用一个网段表示。 hosts deny 与 hosts allow 刚好相反。 例如: hosts allow= 172.17.2.EXCEPT 172.17.2.50 表示容许来自172.17.2.*.* 的主机连接,但排除 172.17.2.50 hosts allow=172.17.2.0/255.255.0.0 表示容许来自172.17.2.0/255.255.0.0 子网中的所有主机连接 hosts allow=M1 M2 表示容许来自 M1 和 M2 两台计算机连接 hosts allow=@xq 表示容许来自XQ 网域的所有计算机连接 max connections = 0 # 说明:max connections 用来指定 连接 Samba Server 的最大连接数目。 如果超出连接数目,则新的连接请求将被拒绝。 0 表示不限制。 deadtime = 0 # 说明:deadtime 用来设置断掉一个没有打开任何文件的连接的时间。单位是分钟, 0 代表 Samba Server不自动切断任何连接。 time server =yes/no # 说明:time server 用来设置让 nmdb 成为 windows 客户端的时间服务器。 log file = /var/log/samba/log.%m # 说明:设置Samba Server 日志文件的存 储位置以及日志文件名称。在文件名后加个宏 %m 主机名),表示对每台访问 Samba Server 的机器都单独记录一个日志文件。如果 pc1 、 pc2 访问过 Samba Server就会在 /var/log/samba 目录下留下 log.pc1 和 log.pc2 两个日志文件。 max log size =50 # 说明:设置Samba Server 日志文件的最大容量,单位为 kB 0 代表不限制。 security = user # 说明:设置用户访问Samba Server 的验证方式,一共有四种验证方式。 1. share :用户访问 Samba Server 不需要提供用户名和口令 , 安全性能较低。 2. userSamba Server 共享目录只能被授权的用户访问 由 Samba Server 负责检查账号和密码的正确性。账号和密码要在本 Samba Server 中建立。 3.server :依靠其他 Windows NT/2000 或 Samba Server 来验证用户的账号和密码 是一种代理验证。此种安全模式下 系统管理员可以把所有的 Windows 用户和口令集中到一个 NT 系统上 使用 Windows NT进行 Samba 认证 , 远程服 务器可以自动认证全部用户和口令 如果认证失败 ,Samba 将使用用户级安全模式作为替代的方式。 4. domain:域安全级别 使用主域控制器 ( 来完成认证。 passdb backend = tdbsam # 说明:passdb backend 就是用户 后台的意思。目前有三种后台: smbpasswd 、 tdbsam 和 ldapsam 。 sam应该是 security account manager (安全账户管理)的简写。 1.smbpasswd:该方式是使用 smb 自己的工具 smbpasswd 来给系统用户(真实用户或者虚拟用户)设置一个Samba 密码,客户端就用这个密码来访问 Samba 的资源。 smbpasswd 文件默认在 /etc/samba 目录下,不过有时候要手工建立该文件。 2.tdbsam:该方式则是使用一个数据库文件来建立用户数据库。数据库文件叫 passdb .tdb ,默认在/etc/samba 目录下。 passdb.tdb 用户数据库可以使用 smbpasswd a 来建立 Samba 用户,不过要建立的 Samba 用户必须先是系统用户。我们也可以使用 pdbedit 命令来建立 Samba 账户。 pdbedit 命令的参数很多 ,我们列出几个主要的。 pdbedit -a username :新建 Samba 账户。 pdbedit -x username :删除 Samba 账户。 pdbedit -L :列出 Samba 用户列表,读取 passdb.tdb 数据库文件。 pdbedit -Lv :列 出 Samba 用户列表的详细信息。 pdbedit -c "[D]"[ u username :暂停该 Samba 用户的账号。 pdbedit -c "[]" username :恢复该 Samba 用户的账号。 3.ldapsam:该方式则是基于 LDAP 的账 户管理方式来验证用户。首先要建立 LDAP 服务, 然后设置passdb backend = ldapsam:ldap://LDAP Server encrypt passwords = yes/no # 说明:是否将认证密码加密。因为现在windows 操作系 统都是使用加密密码,所以一般要开启此项。不过配置文件默认已开启。 smb passwd file = /etc/samba/smbpasswd # 说明:用来定义samba 用户的密码文件。 smbpasswd 文件如果没有那就要手工新建。 username map = /etc/samba/smbusers # 说明:用来定义用户名映射,比如可以将root 换成 administrator 、 admin 等。不过要事先在 smbusers文件中定义好。比如: root = administrator admin ,这样就可以 用 administrator 或 admin 这两个用户来代替 root 登陆 Samba Server ,更贴近 windows 用户的习惯。 guest account = nobody # 说明:用来设置guest 用户名。 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 # 说明:用来设置服务器和客户端之间会话的Socket 选项,可以优化传输速度。 domain master = yes/no # 说明:设置Samba 服务器是否要成为网域主浏览器,网域主浏览器可以管理跨子网域的浏览服务。 local master = yes/no # 说明:local master 用来指定 Samba Server 是否试图成为本地网域主浏览器。如果设为 no ,则永远不会成为本地网域主浏览器。但是即使设置为 yes ,也不等 于该 Samba Server 就能成为主浏览器,还需要参加选举。 preferred master = yes/no # 说明:设置Samba Server 一开机就强迫进行主浏览器选举,可以提高 Samba S erver 成为本地网域主浏览器的机会。如果该参数指定为 yes 时,最好把 domain master 也指定为 yes 。使用该参数时要注意:如果在本 Samba Server 所在的子网有其他的机器(不论是 windows NT 还是其他 Samba Server也指定为首要主浏览器时,那么这些机器将会因为争夺主浏览器而 在网络上大发广播,影响网络性能。如果同一个区域内有多台Samba Server ,将上面三个参数设定在一台即可。 os level = 200 # 说明:设置samba 服务器的 os level 。该参数决定 S amba Server 是否有机会成为本地网域的主浏览器。 os level 从 0 到 255 winNT 的 os level 是 32 win95/98 的 os level 是 1 。 Windows 2000 的os level是 64 。如果设置为 0 ,则意味着 Samba Server 将失去浏览选择。如果想让 Samba Server 成为 PDC ,那么将它的 os level 值设大些。 domain logons = yes/no # 说明:设置Samba Server 是否要做为本地域控制器。主域控制器和备份域控制器都需要开启此项。 logon . = %u.bat # 说明:当使用者用windows 客户端登陆,那么 Samba 将提供一个登陆档。如果设置成 %u.bat ,那么就要为每个用户提供一个登陆档。如果人比较多,那就比较麻烦。可以设置成一个具体的文件名,比如start.bat ,那么用户登陆后都会去执行 start.bat ,而不用为每个用户设 定一个登陆档了。这个文件要放置在 [ 的 path 设置的目录路径下。 wins support = yes/no # 说明:设置samba 服务器是否提供 wins 服务。 wins server = wins 服务器 IP 地址 # 说明:设置Samba Server 是否使用别的 wins 服务器提供 wins 服务。 wins proxy = yes/no # 说明:设置Samba Server 是否开启 wins 代理服务。 dns proxy = yes/no # 说明:设置Samba Server 是否开启 dns 代理服务。 load printers = yes/no # 说明:设置是否在启动Samba 时就共享打印机。 printcap name = cups # 说明:设置共享打印机的配置文件。 printing = cups # 说明:设置Samba 共享打印机的类型。现在支持的打印系统有: bsd, sysv, plp, lprng, aix, hpux,qnx
24.4.2 共享参数
================== Share Definitions ================== [共享名] comment = 任意字符串 # 说明:comment 是对该共享的描述,可以是任意字符串。 path = 共享目录路径 # 说明:path 用来指定共享目录的路径。可以用 %u 、 %m 这样的宏来代替路径里的 unix 用户和客户机的Netbios 名,用宏表示主要用于 [ 共享域。例如:如果我们不打算用 home 段做为客户的共享,而是在 /home/ 下为每个 Linux 用户以他的用户名建个目录,作为他的共享目录,这样 path 就可以写成: path = /home/share/%u; 。用户在连接到这共享时具体的路径 会被他的用户名代替,要注意这个用户名路径一定要存在,否则,客户机在访问时会找不到网络路径。同样,如果我们不是以用户来 划分目录,而是以客户机来划分目录,为网络上每台可以访问 samba 的机器都各自建个以它的netbios 名的路径,作为不同机器的共享资源,就可以这样写: path = /home/share/%m 。 browseable = yes/no # 说明:browseable 用来指定该共享是否可以浏览。 writable = yes/no # 说明:writable 用来指定该共享路径是否可写。 available = yes/no # 说明:available 用来指定该共享资源是否可用。 admin users = 该共享的管理者 # 说明:admin users 用来指定该共享的管理员(对该共享具有完全控制权限)。在 samba 3.0 中,如果用户验证方式设置成“ security=share ”时,此项无效。 # 例如:admin users =bobyuan jane (多个用户中间用逗号隔开)。 valid users = 允许访问该共享的用户 # 说明:valid users 用来指定允许访问该共享资源的用户。 # 例如:valid users = bobyuan ,,@bob ,,@tech (多个用户或者组中间用逗号隔开,如果要加入一个组就用“ 组名”表示。) invalid users = 禁止访问该共享的用户 # 说明:invalid users 用来指定不允许访问该共享资源的用户。 # 例如:invalid users = root ,,@bob (多个用户或者组中间用逗号隔开。 write list = 允许写入该共享的用户 # 说明:write list 用来指定可以在该共享下写入文件的用户。 # 例如:write list = bobyuan ,,@bob public = yes/no # 说明:public 用来指定该共享是否允许 guest 账户访问。 guest ok = yes/no # 说明:意义同“public ”。 # 几个特殊共享: [homes] comment = Home Directories browseable = no writable = yes valid users = %S ; valid users = MYDOMAIN\%S [printers] comment = All Printers path = /var/spool/samba browseable = no guest ok = no writable = no printable = yes [netlogon] comment = Network Logon Service path = /var/lib/samba/netlogon guest ok = yes writable = no share modes = no [Profiles] path = /var/lib/samba/profiles browseable = no guest ok = yes
25 Linux-网络基础-NFS服务
25.1 什么是 NFS
NFS 是 Network File System 的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由 Sun 公司开发,于 1984 年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类 Unix 系统间实现磁盘文件共享的一种方法
它的主要功能是通过网络让不同的机器系统之间可以彼此共享文件和目录。 NFS 服务器可以允许 NFS 客户端将远端 NFS 服务器端的共享目录挂载到本地的 NFS 客户端中。
在本地的 NFS 客户端的机器看来, NFS 服务器端共享的目录就好像自己的磁盘分区和目录一样。一般客户端挂载到本地目录的名字可以随便,但为方便管理,我们要和服务器端一样比较好。
NFS一般用来存储共享视频,图片等静态数据。
25.2 NFS 挂载原理
NFS 是通过网络来进行服务端和客户端之间的数据传输。两者之间要传输数据就要有想对应的网络端口来进行传输。NFS 服务器到底使用什么网络端口来传输数据的, NFS 服务器端其实是随机选择端口来进行数据传输。那 NFS 客户端 又是如何知道 NFS 服务器端到底使用的是哪个端口呢?其实 NF S 服务器时通过远程过程调用( remote procedur e call简称 RPC )协议 服务来实现的。也就是说 RPC 服务会统一管理 NFS 的端口,客户端和服务端通过 RPC 来先沟通 NFS 使用了哪些端口,之后再利用这些端口(小于 1024 )来进行数据的传输。
也就是 RPC 管理服务端的 NFS 端口分配,客户端要传数据,那客户端的 RPC 会先跟服务端的 RPC 去要服务器的端口,要到端口后再建立连接,然后传输数据。
-
那RPC 和 NFS 之间又是如何之间相互通讯的?
首先当NFS 启动后,就会随机的使用一些端口,然后 NFS 就会 向 RPC 去注册这些端口。 RPC 就会记录下这些端口。并且 RP C 会开启 111 端口,等待客户端 RPC 的请求,如果客户端有请求,那服务端的 RPC 就会将记录的 NFS 端口信息告知客户端。
-
RPC和 NFS 的启动顺序是怎样的?
在启动NFS SERVER 之前,首先要启动 RPC 服务(即 portmap 服务,下同)否则 NFS SERVER 就无法向 RPC 服务区注册,另外,如果 RPC 服务重新启动,原来已经注册好的 NFS 端口数据就会全部丢失。因此此时 RPC 服务管理的 NFS 程序也要重新启动以重新向 RPC 注册。特别注意:一般修改 NFS 配置文档后,是不需要重启 NFS 的,直接在命令执行/etc/init.d/nfs reload
-
总结:客户端NFS 和服务端 NFS 通讯过程
1)首先服务器端启动 RPC 服务,并开启 111 端口
2)启动 NFS 服务,并向 RPC 注册端口信息
3)客户端启动 RPC portmap 服务),向服务端的 RPC(portmap) 服务请求服务端的 NFS 端口
4)服 务端的 RPC(portmap) 服务反馈 NFS 端口信息给客户端。
5)客户端通过获取的 NFS 端口来建立和服务端的 NFS 连接并进行数据的传输。
25.3 NFS 相关协议及软件 安装管理
协议:
RPC Remote Procedure Call Protocol 远程过程调用协议
软件:
nfs utils --* :包括 NFS 命令与监控程序 rpcbind --* :支持安全 NFS RPC 服务的连接
注:通常情况下,是作为系统的默认包安装的 CentOS6.* 之前 rpcbind 叫 portmap
25.4 NFS 系统守护进程
nfs:它是基本的 NFS 守护进程,主要功能是管理客户端是否能够登录服务器
rpcbind:主要功能是进行端口映射工作。当客户端尝试连接并使用 RPC 服务器提供 的服务(如 NFS 服务)时, rpcbind会将所管理的与服务对应的端口提供给客户端, 从而使客户可以通过该端口向服务器请求服务。
25.5 NFS 服务器的配置
NFS服务器的配置相对比较简单,只需要在相应的配置文件中进行设置,然后启动 NFS 服务器即可。
NFS服务的配置文件为 /etc/exports ,这个文件是 NFS 的主要配置文件,不过系统并没有默认值,所以这个文件不一定会存在,可能要使用 vim 手动建立,然后在文件里面写入配置内容。
25.5.1 /etc/exports文件内容格式:
共享目录 客户端 1 (访问权限 用户映射 其他 客户端 2 (访问权限 用户映射 其他)
共享目录: 共享目录是指 NFS 服务器共享给客户机使用的目录 客户端: 客户端是指网络中可以访问 这个 NFS 共享目录的计算机 客户端常用的指定方式: 指定ip 地址的主机: 192.168.0.200 指定子网中的所有主机:192.168. 88 .0 指定域名的主机:www.atguigu.com 指定域中的所有主机:*.atguigu .com 所有主机:* 设置输出目录的访问权限、用户映射等。
25.5.2 访问权限选项:
设置输出目录只读:ro 设置输出目录读写:rw
25.5.3 用户映射选项:
root_squash:将 root 用户的访问映射为匿名( nfsnobody )用户 uid 和 gid ;(默认生效); no_root_squash:保留管理员权限,以服务器管理员的权限管理; all_squash:将远程访问的用户及所属组都映射为指定 uid 、 gid 的匿名用户; anonuid=xxx :将远程访问的所有用户都映射为指定 uid 的匿名用户; anongid=xxx :将远程访问的所有用户组都映射为指定 gid 匿名组账户;
25.5.4 其它选项:
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性(同步); async:将数据 先保存在内存缓冲区中,必要时才写入磁盘(异步);
25.6 NFS 服务器的启动与停止
1)启动 NFS 服务器
为了使NFS 服务器能正常工作,需要启动 rpcbind 和 nfs 两个服务,并且 rpcbind 一定要先于 nfs 启动。
service rpcbind start service nfs start
2)查询 NFS 服务器状态
service rpcbind status service nfs status
3)停止 NFS 服务器
要停止NFS 运行时,需要先停止 nfs 服务再停止 rpcbind 服务,对于系统中有其他服务 如 NIS) 需要使用时,不需要停止 rpcbind 服务
service nfs stop service rpcbind stop
4)设置 NFS 服务器的自动启动状态
设置rpcbind 和 nfs 服务在系统运行级别 2345 自动启动。
chkconfig level 2345 rpcbind on chkconfig level 2345 nfs on
5)查看 RPC 服务器开启了哪些端口
rpcinfo -p localhost
25.7 实验相关实例
1)将 NFS 服务器的 /home/zhangsan 共享给 192.168.115.0 网段, rw 权限
vim /etc/exports /home/zhangsan 192.168.115.0 (rw)
2)重启 rpcbind 和 nfs 服务
service rpcbind restart service nfs restart exportfs
3)服务器端查看 nfs 共享状态
showmount -e 本机 ip
4)客户端查看 nfs 共享状态
showmount -e NFS 服务器 IP
5)客户端挂载 nfs 服务器共享目录
命令格式: mount NFS 服务器 IP: 共享目录 本地挂载点目录
mount 192.168.115.10:/home/zhangsan/ /media/zhangsan/ mount | grep nfs
mount -o vers=3 共享 本地 指定挂载使用 nfs V3 版本(避免同步延迟) 验证客户端和nfs 服务器端文件是否一致:
修改服务器端相应权限,不然客户端无法正常访问和使用
6)nfs 共享权限和访问控制
-
客户端 root 用户
使用客户端的root 身份在 nfs 服务器上创建文件,文件的所有者和所属组是 nfsnobody 。
-
客户端普通用户
使用客户端的普通用户身份在nfs 服务器上创建文件,所有者和所属组是 nobody 或普通用户。
如果明确设定了普通用户的映射用户 身份,那么此时客户端用户的身份转换为指定 映射 用户;
如果NFS server 上面有同名用户,那么此时客户端登录账户的身份转换为 NFS server 上面的同名用户;
7)卸载和自动挂载
卸载:
1. 卸载客户端的挂载目录 umoun -t 挂载点 2. 停止服务器端的共享 exportfs -au
自动挂载:/etc/fstab
格式: :<server>:</remote/export> </local/directory> nfs < options> 0 0 #192.168.115.10:/home/zhangsan /media/zhangsan nfs defaults 0 0 #mount a
25.8 相关命令
25.8.1 exportfs命令
如果我们在启动了NFS 之后又修改了 /etc/exports ,是不是还要重新启动 nfs 呢?这 个时 候我们就可以用 exportfs命令来使改动立刻生效,该命令格式如下:
格式:exportfs [ aruv] -a 全部挂载或卸载 /etc/exports 中的内容 -r 重新读取 /etc/exports 中的信息 ,并同步更新 /etc/exports 、 /var/lib/nfs/xtab -u 卸载单一目录(和 a 一起使用为卸载所有 /etc/exports 文件中的目录) -v 在 export 的时候,将详细的信息输出到屏幕上。
示例:
exportfsau 卸载所有共享目录 exportfsra 重新共享所有目录并输出详细信息
25.8.2 rpcinfo 命令
利用rpcinfo p 可以查看出 RPC 开启的端口所提供的程序有哪些
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix