15章Linux下的Samba和NFS

Linux下的Samba和NFS

Samba服务基础

构建文件共享服务器 

访问Samba文件共享

NFS文件服务

Samba 服务基础

SMB 协议

⚫ Server Message Block,服务消息块

CIFS 协议

⚫ Common Internet File System,通用互联网文件系统

Samba 项目

⚫ Samba是在LinuxUNIX系统上实现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 1024 17:08 a.txt

drwxr-xr-x 2 root root 6 1024 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 1024 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 option1option2

⚫ 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,访问以UIDGID500的用户的身份登陆,读写权限, 数据直接写入硬盘.

例子:

添加一条新记录

共享的目录

第三个

主机的另一个终端查看

之后

重新发布配置文件

重新加载服务

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

进行挂载

查看挂载记录