nfs、samba

理论储备
⼀、NFS服务介绍
NFS(Network File System)⽹络⽂件系统
主要⽤于linux系统上实现⽂件共享的⼀种协议,其客户端主要是Linux
没有⽤户认证机制,且数据在⽹络上传送的时候是明⽂传送,⼀般只能在局域
⽹中使⽤
⽀持多节点同时挂载及并发写⼊
企业应⽤:为集群中的web server提供前端端存储
该服务包括的组件:
RPC(Remote Procedure Call Protocol):
远程过程调⽤协议,它是⼀种通过⽹络从远程计算机程序上请求服务,不需要了解
底层⽹络技术的协议。
rpcbind //负责NFS的数据传输,远程过程调⽤ ==tcp/udp协议 端⼝
111==
nfs-utils //控制共享哪些⽂件,权限管理
⼆、NFS服务相关软件包
nfs-utils-1.2.3-26.el6.x86_64 nfs服务的⼀个脚本控制⼯具(服务端
与客户端)
nfs4-acl-tools-0.3.3-6.el6.x86_64 acl ⼯具包
nfs-utils-lib-1.1.5-4.el6.x86_64 nfs 库⽂件
[root@nfs-server ~]# rpm -q rpcbind
rpcbind-0.2.0-11.el6.x86_64
[root@nfs-server ~]# rpm -aq|grep ^nfs
nfs-utils-1.2.3-39.el6.x86_64
nfs-utils-lib-1.1.5-6.el6.x86_64
nfs4-acl-tools-0.3.3-6.el6.x86_64
三、配置⽂件解读
/etc/exports man 5 exports
共享⽬录 共享选项
/nfs/share *(ro,sync)
共享主机:
* :代表所有主机
192.168.0.0/24:代表共享给某个⽹段
192.168.0.0/24(rw) 192.168.1.0/24(ro) :代表共享给不同⽹段
192.168.0.254:共享给某个IP
*.itcast.com:代表共享给某个域下的所有主机
共享选项:
ro:只读
rw:读写
sync:实时同步,直接写⼊磁盘
async:异步,先缓存在内存再同步磁盘
anonuid:设置访问nfs服务的⽤户的uid,uid需要在/etc/passwd中存在任务解决⽅案
anongid:设置访问nfs服务的⽤户的gid
root_squash :默认选项 root⽤户创建的⽂件的属主和属组都变成nfsnobody,
其他⼈nfs-server端是它⾃⼰,client端是nobody。
no_root_squash:root⽤户创建的⽂件属主和属组还是root,其他⼈server端是
它⾃⼰uid,client端是nobody。
all_squash: 不管是root还是其他普通⽤户创建的⽂件的属主和属组都
是nfsnobody
说明:
anonuid和anongid参数和all_squash⼀起使⽤。
all_squash表示不管是root还是其他普通⽤户从客户端所创建的⽂件在服务器端的
拥有者和所属组都是nfsnobody;服务端为了对⽂件做相应管理,可以设置anonuid
和anongid进⽽指定⽂件的拥有者和所属组
任务解决方案
环境准备:
Web-server:10.1.1.11
NFS-server:10.1.1.12
详细步骤:
1. 搭建NFS-server
1)创建共享⽬录及⽹站的静态资源⽂件
mkdir /share
echo "hello 来到我的世界" > /share/index.html
2)发布共享⽬录
[root@nfs-server ~]# cat /etc/exports
/share 10.1.1.0/24(ro)
3)启动服务检查端⼝是否监听
[root@nfs-server ~]# service rpcbind start
Starting rpcbind: [
OK ][root@nfs-server ~]# service nfs start
Starting NFS services: [
OK ]
Starting NFS mountd: [
OK ]
Starting NFS daemon: [
OK ]
Starting RPC idmapd: [
OK ]
查看端⼝111是否监听:
[root@nfs-server ~]# netstat -nltpu|grep rpcbind
2. 搭建web服务
1)安装软件
[root@web-server ~]# rpm -q httpd
httpd-2.2.15-29.el6.centos.x86_64
2)挂载nfs-server端共享⽬录
[root@web-server ~]# mount -t nfs 10.1.1.12:/share
/var/www/html/media
mount: wrong fs type, bad option, bad superblock on
10.1.1.1:/share,
missing codepage or helper program, or other error
(for several filesystems (e.g. nfs, cifs) you might
need a /sbin/mount.<type> helper program)
In some cases useful info is found in syslog - try
dmesg | tail or so
原因:客户端没有安装nfs相关的⼯具包
解决:
[root@web-server ~]# yum -y install nfs-utils nfs-utils-lib
nfs4-acl-tools
[root@web-server ~]# mount -t nfs 10.1.1.1:/share /var/www/html或者
[root@web-server ~]# mount.nfs 10.1.1.1:/share /var/www/html/
[root@web-server ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_server-lv_root 18G 2.3G 15G 14% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 485M 33M 427M 8% /boot
/dev/sr0 4.2G 4.2G 0 100% /mnt
10.1.1.1:/share 18G 3.1G 14G 19%
/var/www/html
3)在web-server端查看⾸⻚⽂件
[root@web-server ~]# ll /var/www/html/
total 4
-rw-r--r-- 1 root root 25 Dec 30 02:48 index.html
4)启动Apache服务
[root@web-server ~]# service httpd start
3. 测试验证
Windows:
http://10.1.1.2
Linux:
# yum -y install elinks
# elinks http://10.1.1.2
客户端访问常⻅的问题:
[root@MissHou ~]# showmount -e 10.1.1.1
clnt_create: RPC: Port mapper failure - Unable to receive:
errno 113 (No route to host)
原因:
1. nfs-server端rpcbind服务没开
2. ⽹络问题
3. 防⽕墙问题===============================================================
===================
环境:
nfs-server:10.1.1.1
backup:10.1.1.250
4. 实现nfs-server端的数据⽂件实时同步
1)安装inotify⼯具
[root@nfs-server ~]# pwd
/soft
[root@nfs-server ~]# tar xf inotify-tools-3.13.tar.gz
[root@nfs-server ~]# ls
inotify-tools-3.13 inotify-tools-3.13.tar.gz
[root@nfs-server ~]# cd inotify-tools-3.13
[root@nfs-server inotify-tools-3.13]# ls
aclocal.m4 config.guess configure depcomp
libinotifytools Makefile.in NEWS
AUTHORS config.h.in configure.ac INSTALL ltmain.sh
man README
ChangeLog config.sub COPYING install-sh Makefile.am
missing src
[root@nfs-server inotify-tools-3.13]# ./configure
[root@nfs-server inotify-tools-3.13]# make
[root@nfs-server inotify-tools-3.13]# make install
2)编写脚本
[root@nfs-server ~]# vim rsync.sh
#!/bin/bash
/usr/local/bin/inotifywait -mrq -e
modify,delete,create,attrib,move /share |while read events
do
rsync -a --delete /share 10.1.1.250:/backup/echo "`date +%F\ %T`出现事件$events" >>
/var/log/rsync.log 2>&1
done
加可执⾏权限:
[root@nfs-server ~]# chmod +x rsync.sh
注意:在backup备份机器上创建/backup⽬录!!!
说明:解决不需要交互有两种⽅案,其⼀可以配置免密登录;其⼆可以在backup机搭
建rsync服务
3) 配置nfs-server的root⽤户免密码登录backup机器
[root@nfs-server ~]# ls ~/.ssh/
known_hosts
[root@nfs-server ~]# ssh-keygen
。。。
[root@nfs-server ~]# ls ~/.ssh/
id_rsa id_rsa.pub known_hosts
[root@nfs-server ~]# cd ~/.ssh/
[root@nfs-server .ssh]# ssh-copy-id -i id_rsa.pub
root@10.1.1.250
4)脚本放到后台去运⾏
[root@nfs-server ~]# ./rsync.sh &
5)测试验证
nfs-server端改变⽂件:
[root@nfs-server ~]# cd /share/
[root@nfs-server share]# mkdir aaa
[root@nfs-server share]# touch test{1..3}
查看⽇志:
[root@nfs-server ~]# tail -f /var/log/rsync.logmount -t nfs mount.nfs
mount -t cifs mount.cifs
扩展:samba服务
⼀、samba介绍
SMB(Server Message Block)协议实现⽂件共享,也称为CIFS(Common
Internet File System )
是Windows和类Unix系统之间共享⽂件的⼀种协议
客户端==主要是Windows==;⽀持多节点同时挂载以及并发写⼊
主要⽤于windows和Linux下的⽂件共享、打印共享
实现==匿名与本地⽤户==⽂件共享
2018-12-30 07:31:36出现事件/share/ CREATE,ISDIR aaa
2018-12-30 07:32:15出现事件/share/ CREATE test1
2018-12-30 07:32:16出现事件/share/ ATTRIB test1
2018-12-30 07:32:16出现事件/share/ CREATE test2
2018-12-30 07:32:16出现事件/share/ ATTRIB test2
2018-12-30 07:32:16出现事件/share/ CREATE test3
2018-12-30 07:32:16出现事件/share/ ATTRIB test3
backup备份机查看数据同步情况:
[root@backup backup]# ll
total 8
drwxr-xr-x 2 root root 4096 Dec 30 07:31 aaa
-rw-r--r-- 1 root root 25 Dec 30 02:48 index.html
-rw-r--r-- 1 root root 0 Dec 30 07:32 test1
-rw-r--r-- 1 root root 0 Dec 30 07:32 test2
-rw-r--r-- 1 root root 0 Dec 30 07:32 test3
扩展:samba服务
⼀、samba介绍
SMB(Server Message Block)协议实现⽂件共享,也称为CIFS(Common
Internet File System )
是Windows和类Unix系统之间共享⽂件的⼀种协议
客户端==主要是Windows==;⽀持多节点同时挂载以及并发写⼊
主要⽤于windows和Linux下的⽂件共享、打印共享
实现==匿名与本地⽤户==⽂件共享
Samba服务的主要进程:
smbd进程
控制发布共享⽬录与权限、==负责⽂件传输== ==TCP 139
445==
nmbd进程 ⽤于名称解析netbios ==UDP 137 138== ;基于NETBIOS协议
获得计算机名称——>解析为相应IP地址,实现信息通讯
NetBIOS是Network Basic Input/Output System的简称,⼀般指⽤于局域⽹通信
的⼀套API
⼆、samba服务器搭建
[root@smb-server ~]# rpm -aq|grep ^samba
samba-3.6.9-164.el6.x86_64 服务端软件包
samba-common-3.6.9-164.el6.x86_64
samba-winbind-3.6.9-164.el6.x86_64
samba-client-3.6.9-164.el6.x86_64
samba-winbind-clients-3.6.9-164.el6.x86_64
samba4-libs-4.0.0-58.el6.rc4.x86_64
了解配置⽂件:
/etc/samba/smb.conf
[global] 全局选项
workgroup = MYGROUP 定义samba服务器所在的⼯作组
server string = Samba Server Version %v smb服务的描述
log file = /var/log/samba/log.%m ⽇志⽂件
max log size = 50 ⽇志的最⼤⼤⼩KB
security = user 认证模式:share匿名|user⽤户密
码|server外部服务器⽤户密码
passdb backend = tdbsam 密码格式 load printers = yes 加载打印机
cups options = raw 打印机选项
[homes] 局部选项(共享名称)
comment = Home Directories 描述
browseable = no 隐藏共享名称
writable = yes 可读可写
[printers] 共享名称
comment = All Printers 描述
path = /var/spool/samba 本地的共享⽬录
browseable = no 隐藏
guest ok = no ——> public = no 需要帐号和密码访问
writable = no ——> read only =yes 不可写
printable = yes 打印选项
[share]
path = /dir1
guest ok = no
writable = yes
需求:
搭建⼀个SAMBA服务,共享⼀个⽬录/samba/share,客户端使⽤user01/123通过
windows或者Linux可以在该⽬录⾥创建⽂件删除⽂件
smb-server:10.1.1.1
1. 关闭防⽕墙和selinux
2. 配置yum源
3. 软件三步曲
1)安装软件
[root@smb-server ~]# yum -y install samba
2)确认软件是否成功安装
[root@smb-server ~]# rpm -aq|grep ^samba
samba-winbind-3.6.9-164.el6.x86_64samba-winbind-clients-3.6.9-164.el6.x86_64
samba-3.6.9-164.el6.x86_64
samba-common-3.6.9-164.el6.x86_64
3)查看软件的⽂件列表
/etc/init.d/nmbd
/etc/init.d/smbd
/usr/sbin/nmbd
/usr/sbin/smbd
[root@smb-server ~]# rpm -ql samba-common
/etc/samba/smb.conf 配置⽂件
4. 根据需求通过修改配置⽂件完成服务的搭建
1)创建⼀个共享⽬录
mkdir /samba/share -p
2) 修改配置⽂件
vim /etc/samba/smb.conf
...
[smb_share]
comment = samba service
path = /samba/share
guest ok = no
writable = yes
或者
[samba_share]
path = /samba/share
public = no
writable = yes
3) 创建⼀个本地⽤户并且加⼊到samba数据库⾥
[root@smb-server samba]# useradd user01[root@smb-server samba]# id user01
uid=508(user01) gid=510(user01) groups=510(user01)
[root@smb-server samba]# which smbpasswd
/usr/bin/smbpasswd
[root@smb-server samba]# rpm -qf /usr/bin/smbpasswd
samba-common-3.6.23-51.el6.x86_64
[root@smb-server samba]# smbpasswd -a user01
New SMB password:
Retype new SMB password:
Added user user01.
[root@smb-server samba]# pdbedit -L
user01:508:
5. 启动服务
[root@smb-server samba]# /etc/init.d/nmb start
Starting NMB services: [
OK ]
[root@smb-server samba]# /etc/init.d/smb start
Starting SMB services: [
OK ]
6. 测试验证
windows:
Linux下:
查看samba服务共享资源:
[root@client ~]# smbclient -L 10.1.1.1 -U user01
Enter user01's password:
session setup failed: SUCCESS - 0
解决:
服务端修改hosts⽂件将IP和主机名⼀ ⼀对应起来查看smb服务端共享的模块或者标签:
[root@client ~]# smbclient -L 10.1.1.1 -U user01
Enter user01's password:
-L: 列出
-U:指定⽤户查看
直接访问smb服务:
[root@client ~]# smbclient //10.1.1.1/smb_share -U user01
Enter user01's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-51.el6]
smb: \> ls
. D 0 Sat Sep 1
10:10:00 2018
.. D 0 Sat Sep 1
10:10:00 2018
35418 blocks of size 524288. 29675 blocks available
问题可以查看共享的⽂件,但是不能够创建⽂件
分析:
服务开放了写权限,但是⽬录本身没有对user01⽤户开发写权限
解决:
[root@smb-server samba]# setfacl -m u:user01:rwx /samba/share/
-m:修改权限
u:表示⽤户
g:表示组
[root@smb-server samba]# setfacl -m g:admin:rx /samba/share
挂载使⽤:
[root@client ~]# mount.cifs -o user=user01,pass=123
//10.1.1.1/samba/share /u01没有mount.cifs命令,请安装cifs-utils-4.8.1-19.el6.x86_64
windows下如果⽆法访问,请查看是否开启了smb客户端程序:
访问控制:
控制读写权限
writable = yes/no
readonly = yes/no
如果资源可写,但只允许某些⽤户可写,其他都是只读
write list = admin, root, @staff(⽤户组)
read list = mary, @students
控制访问对象
valid users = tom,mary,@itcast
invalid users = tom
注意:以上两个选项只能存在其中⼀个
⽹络访问控制:
hosts deny = 192.168.0. 拒绝某个⽹段
hosts allow = 192.168.0.254 允许某个IP
hosts deny = all 拒绝所有
三、总结
1. ftp 局域⽹和外⽹都可以
2. nfs 局域⽹ 挂载⽅式访问 mount.nfs
3. samba 局域⽹ 直接访问(smbclinet) 挂载的⽅式mount.cifs
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值