Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的网络通讯协议,后来Samba将SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件。
Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享,由于NFS(网络文件系统)可以很好的完成Linux与Linux之间的数据共享,因而 Samba较多的用在了Linux与windows之间的数据共享上面。
组成Samba运行的有两个服务,一个是SMB,另一个是NMB;SMB是Samba 的核心启动服务,主要负责建立 Linux Samba服务器与Samba客户机之间的对话, 验证用户身份并提供对文件和打印系统的访问,只有SMB服务启动,才能实现文件的共享,监听139 TCP端口;而NMB服务是负责解析用的,类似与DNS实现的功能,NMB可以把Linux系统共享的工作组名称与其IP对应起来,如果NMB服务没有启动,就只能通过IP来访问共享文件,监听137和138 UDP端口。
1、安装samba服务
# yum install samba samba-client samba-swat
2、查看安装情况
# rpm -qa | grep samba
3、安装包说明
samba-common-3.5.10-125.el6.x86_64 //主要提供samba服务器的设置文件与设置文件语法检验程 序testparm
samba-client-3.5.10-125.el6.x86_64 //客户端软件,主要提供linux主机作为客户端时,所需要 的工具指令集
samba-swat-3.5.10-125.el6.x86_64 //基于https协议的samba服务器web配置界面
samba-3.5.10-125.el6.x86_64 //服务器端软件,主要提供samba服务器的守护程序,共享 文档,日志的轮替,开机默认选项
Samba服务器安装完毕,会生成配置文件目录/etc/samba和其它一些samba可执行命令,/etc/samba/smb.conf是samba的核心配置文件 /etc/init.d/smb是samba的启动/关闭文件
4、启动Samba服务器
可以通过/etc/init.d/smb start/stop/restart来启动、关闭、重启Samba服务
/etc/init.d/nmb start/stop/restart
5、查看samba的服务启动情况
# service smb status
6、设置开机自启动
# chkconfig --levels 35 smb on //在3、5级别上自动运行samba服务
案例一、公司现有一个工作组workgroup,需要添加samba服务器作为文件服务器,并发布共享目录/share,共享名为public,此共享目录允许所有员工访问。
注释:(个人觉得/etc/samba/smb.conf里看着太过于繁琐 所以直接用rm -rf /etc/samba/smb.conf 删除掉smb.conf 然后手动创建自己需要的配置文件)
1、
# vi /etc/samba/smb.conf
# golbal settings
workgroup = WORKGROUP //定义工作组
server string = zhengmin Samba Server Version %v //定义samba服务器的简要说明
netbios name = zhengmin samba //定义windows中显示出来的计算机名
# logging options
log file = /var/log/samba/log.%m //定义samba用户的日志文件 %m代表客户端主机名
# standalone server options
security = share //共享级别 定义不需要用户名和密码就可以访问
# share definitions
[public] //对共享目录的设置
comment = public stuff //对共享目录的说明
path = /share //用来指定共享的目录
public = yes //所有人可以查看
2、
建立共享目录
上面设置了共享目录为/share,下面就需要建立/share目录
由于要设置匿名用户可以下载或上传共享文件,所以要给/share目录授权为nobody权限。
# chown -R nobody:nobody /share/
重启samba服务
# service smb restart
# service nmb restart
检测smb.conf是否正确
# testparm
最后搭建完成
在Linux下访问Samba服务器的共享文件
smbclient //192.168.1.90/public
在windows下访问Samba服务器的共享文件
直接在浏览器地址栏输入//192.168.1.90/public
(注释 : 如果在客户机访问samba服务器是报错Error NT_STATUS_HOST_UNREACHABLE 说明是samba服务器的防火墙开着在需要关闭)
(注释: 如果报错NT_STATUS_ACCESS_DENIED listing \* )说明是被SELinux阻挡了 解决方法:关闭SELinux,先使用getenforce查看状态,如果是Enforcing,就使用setenforce 0关闭。
[root@CentOSH02V03 samba]# getenforce
Enforcing
[root@CentOSH02V03 samba]# setenforce 0
以上还是临时关闭了selinux机制,不需要重启 但是每次开机它还是会再启动
永久性关闭selinux需要修改其配置文件
# vi /etc/selinux/config
将SELINUX=enforcing 改为SELINUX=disabled
重启生效
案例二、公司现有多个部门,因工作需要,将TS部的资料存放在samba服务器的/ts 目录中集中管理,以便TS人员浏览,并且该目录只允许TS部员工访问。
1、添加TS部组合用户
# groupadd ts
# useradd -g ts sandy
# useradd -g ts zhengmin //创建用户并加到ts组
# passwd sandy //为sandy创建密码
2、在根目录下创建ts目录
# cd /
# mkdir ts
# cd ts
# touch newyork.city // 创建ts目录并在目录下创建文件newyork.city
3、将两个账户添加到samba账户中
# smbpasswd -a sandy
# smbpasswd -a zhengmin
4、修改配置文件/etc/samba/smb.conf
# golbal settings
workgroup = WORKGROUP
server string = zhengmin Samba Server Version %v
netbios name = zhengmin samba
# logging options
log file = /var/log/samba/log.%m
# standalone server options
security = user //用户级别,由提供服务的samba服务器负责检查账户和密码
# share definitions
[homes] //设置用户宿主目录
comment = Home Directories
browseable = no
writable = yes
[public]
comment = public stuff
path = /share
public = yes
[ts] //ts目录,只运行ts组成员访问
comment = TS
path = /ts
valid users = @ts
5、重新加载配置
# service smb reload
6、访问测试
在windows下访问Samba服务器的共享文件
直接在浏览器地址栏输入//192.168.1.90/ts //访问ts共享目录
//192.168.1.90/sandy //访问sandy用户可以访问的所有共享
在Linux下访问Samba服务器的共享文件
1、查看Samba服务器的共享资料
# smbclient –L //Samba服务器的ip地址 -U Samba用户名
# smbclient -L //192.168.1.90/public -u sandy //需要用户名和密码是的查看方式
# smbclient -L //192.168.1.90/public //不需要密码查看 -L是list的意思
linux登陆samba服务器
# smbclient //192.168.1.90/public -U sandy
在客户机挂载共享文件
# cd /mnt
# mkdir samba
# mount -t cifs -o username=sandy,password=1234567 //192.168.1.90/public /mnt/samba
# df -h //查看挂载是否成功
转载于:https://blog.51cto.com/icemin/1788791