CIFS文件共享服务

1.Samba基本概述

Server Message Block (SMB)Windows服务器和客户端之间实现文件共享的服务协议。
Samba服务通常用来做跨系统文件共享服务,实现不同操作系统之间的资源共享。

Samba相关功能

用户验证
文件共享
打印共享
域名解析

Samba软件包

samba: samba服务端共享程序
common: samba服务配置文件语法检验testparm
cifs-utils: samba客户端软件, 提供所需工具指令集

Samba主要程序

程序名功能端口
nmbd提供基于NetBios主机名称解析udp/137,138
smbd提供对文件、打印资源的共享udp/139,445

2.Samba服务配置

实践环境准备

操作系统主机名称IP地址
Linux7Samba服务端-Samba-Server192.168.69.112
Linux7Linux客户端-Samba-Client192.168.69.113
Windows7Windows客户端192.168.69.100

1.安装Samba服务程序

[root@xuliangwei ~]# systemctl stop firewalld[root@xuliangwei ~]# setenforce 0[root@xuliangwei ~]# yum -y install samba

2.samba主配置文件,默认存放于/etc/samba/smb.conf

//筛选Samba注释配置文件[root@xuliangwei ~]# egrep -v '^#|^$' /etc/samba/smb.conf[global]    //全局参数
    workgroup = SAMB       //工作组名称
    hosts allow = 192.168.56.  //表示允许IP或网段, 允许使用通配符或主机名
    interfaces = eth0      //SambaServer监听网卡, 也可以写IP地址
    max connections = 0    //最大连接数目, 超出拒绝, 0表示不限制
    max log size = 50      //定义日志文件的最大容量为50KB
    security = user        //安全验证方式,总共有4种
                           //share:无需验证身份, 简单方便, 安全性差
                           //user:需要验证用户密码才可访问, 安全性高
                           //server:需要通过三方服务验证账号密码, (集中管理账户)
                           //domain: 使用域控制器进行身份验证
    passdb backend = tdbsam//定义用户密码的类型,共有3种
                           //smbpasswd:为系统用户设置Samba服务程序的密码
                           //tdbsam:创建数据库文件并使用pdbedit命令建立Samba服务程序的用户
                           //ldapsam: 基于LDAP服务进行账户验证
    printing = cups        //设置Samba共享打印机的类型(bsd, sysv, plp, lprng, aix, hpux, qnx)
    printcap name = cups   //设置共享打印机的配置文件
    load printers = yes    //设置在Samba服务启动时是否共享打印机设备
    cups options = raw     //打印机的选项//为了更方便查阅共享重要参数的功能, 共享参数如下:[共享名/访问名]
comment = 任意字符串
path = 共享目录路径
browseable = 指定该共享是否可以浏览
writable = 指定该共享路径是否可写
valid users = 允许访问该共享的用户
invalid users = 禁止访问该共享的用户
write list = 允许写入该共享的用户
guest ok = 指定该共享是否允许guest账户访问

3.建立访问共享资源, 在Linux7系统中, Samba服务程序默认使用的是用户口令认证模式,确保仅让有密码且受信任的用户访问共享资源, 不过需要使用pdbedit建立账户信息数据库来管理SMB服务程序

//pdbedit [选项] 账户//-a 用户名    建立Samba用户//-x 用户名    删除Samba用户//-L    列出用户列表//-Lv   列出用户详细信息的列表[root@xuliangwei ~]# useradd bgx[root@xuliangwei ~]# pdbedit -a -u bgxnew password:   //输入密码retype new password:    //确认密码

4.创建用于共享资源的文件目录, 要考虑到文件读写权限的问题

[root@xuliangwei ~]# mkdir /share/smb -p[root@xuliangwei ~]# chown -R bgx.bgx /share/smb/

5.修改Samba服务程序的主配置文件, 可以删除[homes][printers]

[global]
    workgroup = SAMBA
    security = user
    passdb backend = tdbsam
    printing = cups
    printcap name = cups    load printers = yes
    cups options = raw

//建立共享目录
[share]
 comment = This is share SMB Service
 path = /share/smb public = no
 writable = yes

6.重启smb服务并加入开机自启动

[root@xuliangwei ~]# systemctl restart smb[root@xuliangwei ~]# systemctl enable smb//如果必须开启防火墙, 注意执行如下指令
[root@xuliangwei ~]# firewall-cmd --permanent --add-service=samba[root@xuliangwei ~]# firewall-cmd --reload

3.Win挂载Samba

要在Windows系统中访问共享资源,只需在我的电脑上方输入
\\192.168.69.112然后再加服务器的IP地址即可, 如下图1-1所示:


图1-1 在Windows系统中访问共享资源


正确输入bgx账户名以及使用pdbedit命令设置的密码后,就可以登录到共享界面中了,如图1-2所示。此时,我们可以尝试执行查看、写入、更名、删除文件等操作。

图1-2 成功访问Samba共享资源


4.Linux挂载Samba

Samba服务可以实现Linux系统之间的文件共享, 在客户端安装支持文件共享服务的软件包cifs-utils

1.安装可以访问samba资源的客户端

[root@xuliangwei ~]# yum -y install cifs-utils

2.临时查看SMB服务端共享资源

//以匿名身份查看授权资源,直接回车即可[root@samba-client ~]# smbclient -L 192.168.56.11Enter SAMBA\root's password:Anonymous login successfulOS=[Windows 6.1] Server=[Samba 4.6.2]    Sharename       Type      Comment
    ---------       ----      -------
    samba-share     Disk      This is Share /data/samba/share    IPC$            IPC       IPC Service (Samba 4.6.2)//以bgx身份查看授权资源,直接回车即可[root@samba-client ~]# smbclient -L 192.168.56.11 -U bgx%123Domain=[SAMBA-SERVER] OS=[Windows 6.1] Server=[Samba 4.6.2]    Sharename       Type      Comment
    ---------       ----      -------
    samba-share     Disk      This is Share /data/samba/share    IPC$            IPC       IPC Service (Samba 4.6.2)    
//直接访问共享[root@samba-client ~]# smbclient //192.168.56.11 -U bgx%123

3.手动挂载SMB访问共享

//建立挂载点[root@samba-client ~]# mkdir /cifs//以匿名的身份挂载资源[root@samba-client ~]# mount -t cifs -o guest //192.168.56.11/samba-share  /cifs//以账户密码身份挂载[root@samba-client ~]# mount -t cifs -o rw,user=bgx,pass=123 //192.168.56.11/samba-share  /cifs

4.也可以将登陆账户密码保存至配置文件,可以免输入密码去访问挂载

//创建相应文件, 并赋予安全权限
[root@samba-client ~]# vim /etc/samba/bgxusername=bgx
password=1domain=MYGROUP
[root@samba-client ~]# chmod 600 /etc/samba/bgx//挂载时执行用户密码文件credentials=/etc/samba/bgx
[root@samba-client ~]# mount -t cifs -o rw,credentials=/etc/samba/bgx //192.168.56.11/samba-share /cifs

5.自动挂载SMB共享

[root@samba-client ~]# vim /etc/fstab//第一种方式,以用户名密码的方式//192.168.69.112/samba-share    /cifs   cifs  domain=WORKGROUP,user=bgx,pass=123 0 0//第二种方式,通过上述的配置文件定义账户与密码以及域//192.168.69.112/samba-share   /cifs   cifs  credentials=/etc/samba/bgx 0 0#第二种方式的定义的配置文件[root@samba-client ~]# vim /etc/samba/bgxusername=bgx
password=1domain=MYGROUP

5.SMB多用户挂载

Samba Server服务器上, 共享/data/samba/public,实现对访问挂载后的共享的每个用户单独的验证,实现权限隔离。

允许bgx1 能够读写
允许bgx2 能够读
允许bgx3 不能访问

//1.创建系统用户
[root@samba-server ~]# useradd bgx1 -s /sbin/nologin[root@samba-server ~]# useradd bgx2 -s /sbin/nologin[root@samba-server ~]# useradd bgx3 -s /sbin/nologin//2.添加系统用户至samba服务
[root@samba-server ~]# pdbedit -a bgx1[root@samba-server ~]# pdbedit -a bgx2[root@samba-server ~]# pdbedit -a bgx3[root@samba-server ~]# pdbedit -Lbgx2:1008:bgx1:1007:bgx3:1009://3.修改samba配置文件共享目录
[root@samba-server ~]# cat >> /etc/samba/smb.conf <<-EOF[samba-public]
comment = This is a Share samba-public
path = /data/samba/public
public = novalid users = bgx1,bgx2
invalid users = bgx3
writable = yesEOF//4.创建共享目录, 并设置权限
[root@samba-server ~]# mkdir -p /data/samba/public  -p[root@samba-server ~]# chown bgx1 /data/samba/public///5.使用testparm测试
[root@samba-server ~]# testparmProcessing section "[samba-share]"Processing section "[samba-public]"Loaded services file OK.#testparm命令报错:rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)//临时生效
[root@samba-server ~]# ulimit -n 16384//重启后生效
[root@samba-server ~]# echo "root - nofile 16384" >> /etc/security/limits.conf//5.重启smb服务
[root@samba-server ~]# systemctl restart smb nmb[root@samba-server ~]# systemctl enable smb nmb//6.客户端挂载, 并测试权限
[root@samba-client ~]# mkdir /bgx{1..3}[root@samba-client ~]# mount -t cifs -o username=bgx1,pass=123 //192.168.69.112/samba-public /bgx1/[root@samba-client ~]# mount -t cifs -o username=bgx2,pass=123 //192.168.69.112/samba-public /bgx2[root@samba-client ~]# mount -t cifs -o username=bgx3,pass=123 //192.168.69.112/samba-public /bgx3mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)//7.自动挂载//挂载属性_netdev是关键选项,网络连通后挂载, 否则容易引起服务器无法启动
[root@samba-client ~]# echo "//192.168.69.112/samba-public /bgx1 cifs defautlts,username=bgx1,password=123,_netdev 0 0" >> /etc/fstab[root@samba-client ~]# echo "//192.168.69.112/samba-public /bgx2 cifs defautlts,username=bgx2,password=123,_netdev 0 0" >> /etc/fstab[root@samba-client ~]# echo "//192.168.69.112/samba-public /bgx3 cifs defautlts,username=bgx3,password=123,_netdev 0 0" >> /et


Powered By Z-BlogPHP 1.7.3

 Theme By 优美模版

本博客为开源博客,本博客联系QQ:372097243