第15章Linux下的Samba和NFS
Linux下的Samba和NFS
Samba服务基础 
构建文件共享服务器
访问Samba文件共享 
NFS文件服务
Samba 服务基础
SMB 协议
⚫ Server Message Block,服务消息块 
CIFS 协议
⚫ Common Internet File System,通用互联网文件系统 
Samba 项目
⚫ Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。
⚫ http://www.samba.org
Samba 服务基础
Samba 软件包构成
⚫ samba-4.9.1-6.el7.x86_64.rpm
⚫ samba-client-4.9.1-6.el7.x86_64.rpm
⚫ samba-client-libs-4.9.1-6.el7.x86_64.rpm
⚫ samba-common-4.9.1-6.el7.noarch.rpm
⚫ samba-common-libs-4.9.1-6.el7.x86_64.rpm
⚫ samba-common-tools-4.9.1-6.el7.x86_64.rpm
⚫ samba-krb5-printing-4.9.1-6.el7.x86_64.rpm
⚫ samba-libs-4.9.1-6.el7.x86_64.rpm
⚫ samba-python-4.9.1-6.el7.x86_64.rpm
⚫ samba-winbind-4.9.1-6.el7.x86_64.rpm
⚫ samba-winbind-modules-4.9.1-6.el7.x86_64.rpm
Samba 服务基础
Samba 服务器的主要程序
⚫ smbd:提供对服务器中文件、打印资源的共享访问
⚫ nmbd:提供基于NetBIOS 主机名称的解析 
Samba 的服务脚本
⚫ /usr/lib/systemd/system/smb.service
⚫ /usr/lib/systemd/system/nmb.service //NMB对客户端提供NetBIOS服务
Samba 的配置目录及文件
⚫ /etc/samba/
⚫ /etc/samba/smb.conf
⚫ 配置文件检查工具:testparm
实验:
安装samba

 
查看samba相关的软件包

启动服务

设置为开机启动

查看监听端口

主配置文件 smb.conf
smb.conf 文件的配置内容
⚫ [global]:全局设置
⚫ [homes]:用户目录共享设置
⚫ [printers]:打印机共享设置
⚫ [myshare]:自定义名称的共享目录设置 
辅助配置内容
⚫ 注释行:以 # 号开头的行
⚫ 配置样例行:以 ; 号开头的行
⚫ 结合 grep 命令可以提取有效配置行
◆ grep -v "^#" smb.conf | grep -v "^;" | grep -v ^$
主配置文件 smb.conf
常见全局配置项的含义
⚫ workgroup:所在工作组名称
⚫ server string:服务器描述信息
⚫ security:安全级别
⚫ log file:日志文件位置,“%m” 变量表示客户机地址
⚫ max log size:日志文件的最大容量,单位为 KB
⚫ passwd backend:设置共享账户文件的类型
主配置文件 smb.conf
常见共享目录配置项的含义
⚫ comment:对共享目录的注释、说明信息
⚫ path:共享目录在服务器中对应的实际路径
⚫ browseable:该共享目录在“网上邻居”中是否可见
⚫ guest ok:是否允许所有人访问,等效于“public”
⚫ writable:是否可写,与 read only 的作用相反 p Samba 服务设置的读取、写入权限,优先级要低于文件系统中设置的权限
配置基本的文件共享
准备共享文件夹
[root@centos7 ~]# ll /share/
总用量 4
-rw-r--r-- 1 root root 6 10月 24 17:08 a.txt
drwxr-xr-x 2 root root 6 10月 24 17:08 test p
修改 smb.conf 配置文件
[root@centos7 ~]# vi /etc/samba/smb.conf
39 [share]
40 comment = this is a test share directory
41 path = /share
42 public = yes
43 read only = no
配置文件

 
 
 
 
 
 
检查语法

重启服务 关闭selinux 开始防火墙端口

客户端:

管理samba用户
使用smbpasswd
[root@centos7 ~]# useradd jack
[root@centos7 ~]# smbpasswd -a jack
New SMB password:
Retype new SMB password:
Added user jack.
查看samba用户信息
[root@centos7 ~]# pdbedit -L
jack:1000:
[root@centos7 ~]# pdbedit -vL jack //查看jack的详细信息

管理samba用户
建立 Samba 用户数据库文件
⚫ 默认数据库文件位于:/var/lib/samba/private/passdb.tdb
使用pdbedit管理用户
⚫ pdbedit命令选项:
◆ -a :添加
◆ -u :指定用户名
◆ -x :删除用户
◆ -L:查看用户信息
◆ -v:显示详细信息
管理samba帐户
使用pdbedit管理用户
[root@centos7 ~]# useradd rose
[root@centos7 ~]# pdbedit -a -u rose
new password:
retype new password:
Unix username: rose
NT username:
Account Flags: [U ]
User SID: S-1-5-21-720482172-1302507815-3151219835-1001
Primary Group SID: S-1-5-21-720482172-1302507815-3151219835-513
……….
[root@centos7 ~]# pdbedit -L
jack:1000:
rose:1001:
需用户验证的共享
设置用户访问授权
39 [share]
40 comment = this is a test share directory
41 path = /share
42 public = yes
43 read only = yes
44 valid users = jack,rose //授权用户列表
45 write list = rose //授予个别用户写的权限
实验:
修改配置文件

需用户验证的共享
确定用户访问权限
⚫ 设置目录权限
[root@centos7 ~]# chmod 1757 /share/
[root@centos7 ~]# ll -d /share/
drwxr-xrwt 3 root root 57 10月 24 17:46 /share/
⚫ 设置上传文件和目录的默认权限
39 [share]
40 comment = this is a test share directory
41 path = /share
42 public = yes
43 read only = yes
44 valid users = jack,rose
45 create mask = 0644
46 directory mask = 0755

 
创建目录

更改权限

添加模块指定路径

 
检查

重启服务

客户端验证

 
 
Samba服务器

登录jack目录

客户机创建目录
Jack用户创建
进行测试发现可以成功
下一例
进入rose宿主目录

用户映射及访问地址限制
共享账号映射(别名)
[root@centos7 ~]# vi /etc/samba/smbusers
1 jack = admin
启用映射账号
[root@centos7 ~]# vi /etc/samba/smb.conf
6 [global]
7 workgroup = SAMBA
8 security = USER
10 passdb backend = tdbsam
11 username map = /etc/samba/smbusers
 
 
 
服务器的另一个终端
管理samba用户
映射
编辑配置文件

第一个终端

第二个终端

重新加载服务

用户映射及访问地址限制
访问地址限制
⚫ 一般用在全局配置 [global] 部分
⚫ hosts allow 配置项:仅允许特定的客户机
⚫ hosts deny 配置项:仅拒绝特定的客户机
⚫ 客户机地址表示形式:
◆ 以空格分隔多个地址
◆ 主机名或 IP 地址,例如: 192.168.1.1
◆ 网络地址,例如:173.17. 或者 173.17.0.0/255.255.0.0
访问共享文件夹
smbclient 命令,查看及登录使用共享

客户端
验证

在客户端
列出共享模块

 
访问共享资源

 
 
 
 
访问共享文件夹
使用 mount 挂载共享文件夹
[root@centos7 ~]# mount -o username=rose,password=1
//192.168.1.20/share /test/
[root@centos7 ~]# ls /test/
a.txt b.txt c.txt rose1.txt rose2 test
[root@centos7 ~]# mount | tail -1
//192.168.1.20/share on /test type cifs
(rw,relatime,vers=default,cache=strict,username=rose,domain=CENTOS7,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.1.20,file_mode=0755,dir_mode=0755,soft,nounix,serverino,mapposix,rsize=1048576,wsize =1048576,echo_interval=60,actimeo=1)

客户端
创建目录

挂载

 
卸载

重新挂载

 
更改配置文件

 
查看

reboot后
查看

NFS简介
NFS-Network File System(网络文件系统)
⚫ 由 Sun 公司1984所发展出来的
⚫ 不同的计算机之间能通过网络进行文件共享的一种网络协议,多用于UNIX/Linux 网络系统 中。
⚫ 一台NFS 服务器就如同一台文件服务器,只要将其文件系统共享出来,NFS 客户端就可以将 它挂载到本地系统中,从而可以像使用本地文件系统中的文件一样使用那些远程文件系统中 的文件。
NFS的相关文件
NFS的配置文件
⚫ /etc/exports
NFS的服务管理
⚫ [root@centos7 ~]# systemctl start nfs
配置NFS服务器-共享给所有人
编辑配置文件
[root@centos7 ~]# vi /etc/exports 1 /share *(ro,sync)
重新启动NFS服务,访问测试
[root@centos7 ~]# mount 192.168.1.20:/share /media/net
[root@centos7 ~]# df -TH
文件系统 类型 容量 已用 可用 已用% 挂载点
192.168.1.20:/share nfs4 19G 1.7G 17G 10% /media/net
NFS语句格式2-1
在配置文件中以行为单位写入共享信息,格式如下:
directory client (option1,option2)
⚫ directory代表共享目录
⚫ client 代表授权主机
⚫ ()内的内容代表常用操作选项
NFS语句格式2-2
操作选项
⚫ 权限操作选项
◆ rw 可读写权限
◆ ro 只读权限
⚫ 用户映射选项
◆ all_squash 所有用户登陆都以匿名用户身份访问
◆ anonuid 指定匿名用户的UID(默认以nobody的身份登陆)
◆ anongid 指定匿名用户的GID(默认以nobody的身份登陆)
⚫ 数据操作选项
◆ sync 数据同步写入硬盘
◆ async 数据先存放在内存中,不直接写入硬盘
实验:

检查服务

检查是否时开机自动启动

NFS(在主机端操作)
查看状态

启动nfs放入开机自动启动

配置服务

 
 
倒出

重新加载服务

 
配置防火墙
开启防火墙的服务

重新加载生效

进行测试
在客户端查看

查看当前启动的任务
本地创建目录

进行挂载

查看挂载情况

挂载情况查看

举例子(主机)
创建文件

修改文件权限

 
编辑export

NFS配置语句示例:
例子1
⚫ /nfs/sh *(async)
⚫ 将/nfs/sh 共享给所有人访问,默认是只读,数据不直接写入硬盘 
例子2
⚫ /nfs/sh1 192.168.1.*(ro,all_squash,async)
⚫ 将/nfs/sh1目录共享给192.168.1.0网段的客户端访问,访问时以只读,匿名用户,数据不直接写 入硬盘 
例子3
⚫ /nfs/sh2 192.168.1.100(rw,sync,anonuid=500,anongid=500)
⚫ 将/nfs/sh2目录共享给指定IP192.168.1.100,访问以UID和GID500的用户的身份登陆,读写权限, 数据直接写入硬盘.
例子:
添加一条新记录

共享的目录

第三个

主机的另一个终端查看
之后
重新发布配置文件
重新加载服务

NFS客户端使用
查看NFS共享
⚫ showmount -e nfs服务器IP地址
[root@centos7 ~]# showmount -e 192.168.1.20
Export list for 192.168.1.20: /share *
使用NFS共享
⚫ mount nfs服务器IP地址:共享名 本机挂载点
[root@centos7 ~]# mount 192.168.1.20:/share /test
例子:
检查挂载情况

客户端
进行测试检查

创建目录

进行挂载

查看

 
进入目录
创建文件

查看

配置fstab
Vim/etc/fstab
进行挂载

查看挂载记录

                    
                
                
            
        
浙公网安备 33010602011771号