samba服务配置

一、samba简介:

  Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置"NetBIOS over TCP/IP"使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

  samba和NFS的区别,NFS主要用来实现linux与linux之间的共享,samba可以实现linux和windows的主机共享。

  samba的应用场景:

  1、文件和打印机共享:文件和打印机共享是smaba的主要功能,smb进程实现资源共享,将文件和打印机发布到网络之中,以供用户可以访问。

  2、身份验证和权限设置:smdb服务支持user mode 和 domain mode等身份验证和权限设置模式,通过加密方式可以保护共享的文件和打印机

  3、名称解析:samba通过nmbd服务可以搭建NBNS服务器,提供名称解析,将计算机的NetBIOS名解析为IP地址。

  4、浏览服务:局域网中,samba服务器可以成为本地主浏览服务器(LMB),保存可用资源列表,当使用客户端访问window网上邻居时,会提供浏览列表,显示共享目录,打印机等资源。

  samba服务器常规的配置步骤分为:

  1、安装启动smaba服务。

  2、编辑配置文件 /etc/samba/smb.conf 指定需要共享的目录,并为共享目录设置共享权限。

  3、在smb.conf文件中制定日志文件名称以及存放路径。

  4、设置共享目录的本地系统权限及samba共享权限。

  5、重新加载配置文件或重新启动smb服务,使得配置生效。

二、samba服务配置步骤:

1、安装启动smaba服务

[root@pandj ~]# yum install samba -y              	   //安装samba软件
[root@pandj ~]# systemctl start smb            	        //起samba服务
[root@pandj ~]# lsof -i:139                   		   //查看端口状态
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
smbd    30129 root   35u  IPv6 249038      0t0  TCP *:netbios-ssn (LISTEN)
smbd    30129 root   37u  IPv4 249040      0t0  TCP *:netbios-ssn (LISTEN)

2、编辑配置文件 /etc/samba/smb.conf 指定需要共享的目录,并为共享目录设置共享权限。

  Samba 的配置文件 /etc/samba/smb.conf 分为两大部分,一部分是 [global] ,即全局配置,另一部分是 [home] 、[printer] 、[自定义共享名] ,这些都是共享的部分,共享部分的设置优先级高于全局配置,另外,Samba 默认开启本地用户家目录 [home] 和打印机 [printer] 的共享,如果不需要你也可以关闭这两个共享,然后在末行自己重新创建一个共享,详细配置如下:

[global]                                          //全局配置
workgroup = WORKGROUP                            //工作组,要设置成跟 Windows 的工作组一致

[home]			                //家目录共享

[printers]			            //打印机共享

[samba]                                    //自定义共享名
comment = samba                        // 描述符,是给系统管理员看的
path = /smb                                // 共享的路径
public = yes                               //是否公开,也就是是否能在网上邻居看到该共享(默认是no)
browseable = yes                           //共享的目录是否让所有人可见(默认是no)
writable = yes                             // 是否可写(默认yes)
write list = samba               	    // 设置可对文件进行写操作的用户
valid users = samba                        // 指定哪些用户可以访问,如果不指定则所有用户都可访问
hosts allow = 127. 192.168.12. 192.168.13. EXCEPT 192.168.13.13   // 指定允许访问 samba 服务器的主机    
guest ok = no                              // 是否拒绝匿名访问,仅当安全级别为 share 时才生效
server string = Samba Server Version %v    // 其他 Linux 主机查看共享时的提示符
netbios name = MYSERVER                    // 用于在 Windows 网上邻居上显示的主机名 
security = share                           // 定义安全级别
log file = /var/log/samba/                 // 定义日志文件,每个访问的主机会产生独立的日志文件,%m 是客户端主机名
max log size = 50                          // 定义单个日志的最大容量(KB)
passdb backend = tdbsam                    // Samba 用户的存储方式,smbpasswd 表示明文存储,tdbsam 表示密文存储
deadtime = 10                              // 客户端在10分钟内没有打开任何 Samba 资源,服务器将自动关闭会话,在大量的并发访问环境中,这样的设置可以提高服务器性能
display charset = UTF8                     // 设置显示的字符集
max connections = 0                        // 设置最大连接数,0表示无限制,如果超过最大连接数则拒绝连接
guest account = nobody                     // 设置匿名账户为nobody
load printers = yes                        // 是否在启动 Samba 时就共享打印机    
cups options = raw                         // 设置打印机使用的方式
invalid users = user1 user2                // 指定哪些用户不可以访问
create mask = 0775                         // 客户端上传文件的默认权限
directory mask = 0775                      // 客户端创建目录的默认权限
admin users = user1                        // 设置共享目录的管理员,具有完全权限

  我们以创建一个public共享为例:

[root@pdj ~]# vim /etc/samba/smb.conf
[global]
        ;工作组名称
        workgroup = WORK

[public]
     ;定义安全级别 user表示需要验证用户名密码登陆。 security = user ;共享的路径, path = /share ;描述符 comment = samba ;是否公开 public = yes ;指定那些用户可以访问,如果不指定则所有用户都可以访问 valid users = samba ;smaba 用户的存储方式,smbpasswd表示明文存储,tdbsam表示密文存储 passdb backend = tdbsam ;是否有可写权限 writable = yes ;指定哪些用户存在可写权限 write list = samba

  配置文件编辑完成之后需要需要创建用户以及smaba用户,创建共享的目录

[root@pdj ~]# useradd samba                         //创建一个用户
[root@pdj ~]# tail -1 /etc/passwd
samba:x:1000:1000::/home/samba:/bin/bash
[root@pdj ~]# smbpasswd -a samba                    //使用smbpasswd指定smaba用户及密码
New SMB password:                                   //交互式创建密码
Retype new SMB password:
Added user samba.
[root@pdj ~]# pdbedit -L                           //查看samba用户
samba:1000:
[root@pdj ~]# mkdir /share                         //创建共享目录
[root@pdj ~]# chown -R smaba.samba /share               //将共享目录的属主信息修改成samba
[root@pdj ~]# chmod -R 777 /share
[root@pdj share]# cp /etc/hosts /share/            //拷贝一个文件用于测试

  

  配置完成之后重启samba服务

[root@pdj share]# systemctl restart smb

  需要注意的是,在windows访问的过程中,可能会遇上访问权限问题,需要关闭centos的selinux和iptables

关闭 selinux:

1、临时关闭(不用重启机器):
[root@pdj ~]# setenforce 0   

2、修改配置文件需要重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可

关闭防火墙:
[root@pdj ~]# systemctl stop firewalld.service
[root@pdj ~]# firewall-cmd --stat
not running

  

3、访问验证。

  在能互访的linux系统中,使用如下方式验证:

[root@localhost html]# yum install samba-client -y
[root@localhost html]# smbclient -L [samba服务器ip]
Enter SAMBA
oot's password: 
Anonymous login successful

	Sharename       Type      Comment
	---------       ----      -------
	public          Disk      SAMBA
	IPC$            IPC       IPC Service (Samba 4.7.1)
Reconnecting with SMB1 for workgroup listing.
Anonymous login successful

	Server               Comment
	---------            -------

	Workgroup            Master
	---------            -------

  在能互访的window系统中,打开文件夹或者浏览器,输入 \服务器地址,访问samba

  

  

4、对文件进行读写操作测试。

5、samba的日志默认保存路径为/var/log/samba/ ,当samba出现问题之后,可以先看samba日志判断是什么错误,最典型的一个是访问不到模块中的路径。

二、samba在生产过程中可能存在的问题,

  1、因为网络提问导致连接不到samba服务器,无法访问服务

  2、因为根目录被写满,倒是服务器异常,所有服务无法正常访问,查看是什么原因导致根目录被写满,如果是一些错误的进程导致,kill 掉相关的进程再试试。

  3、samba配置文档中共享的目录是通过nfs挂载的,如果链接不上NFS服务器,或者nfs服务器挂掉,无法访问的,也会导致samba服务器无法正常访问,这个时候检查NFS服务器,强制卸载掉挂载的目录,恢复后再重新挂载,

 

  

原文地址:https://www.cnblogs.com/pandj/p/9367500.html