本文的场景是虚拟机运行CentOS6.5,本机是Win7,现欲把CentOS上的一个文件夹共享出来,Win的机器可以读写。
Samba与window连接需要使用NetBIOS协议,请确认你的Win7系统已经安装了NetBIOS协议。
组成Samba运行的有两个服务,一个是SMB,另一个是NMB;SMB是Samba 的核心启动服务,主要负责建立 Linux Samba服务器与Samba客户机之间的对话, 验证用户身份并提供对文件和打印系统的访问,只有SMB服务启动,才能实现文件的共享,监听139 TCP端口;而NMB服务是负责解析用的,类似与DNS实现的功能,NMB可以把Linux系统共享的工作组名称与其IP对应起来,如果NMB服务没有启动,就只能通过IP来访问共享文件,监听137和138 UDP端口。
配置防火墙
使用Samba服务器需在防火墙下开启:UDP 137 UDP 138 TCP 139 TCP 445 ,如果你懒的配置,可以选择关闭防火墙 # service iptables stop 。
1 2 3 4 5 |
# vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT |
重启防火墙,使规则生效
1 |
/etc/rc.d/init.d/iptables restart |
关闭SELINUX
1 2 |
# vi /etc/selinux/config SELINUX=disabled |
使配置生效重启计算机 # reboot
安装samba
1 |
# yum -y install samba samba-client |
设置开机启动
1 2 |
# chkconfig smb on # chkconfig nmb on |
配置samba
开始配置samba之前别忘记备份一下:
1 |
# cp /etc/samba/smb.conf /etc/samba/smb.conf.back |
接下来我是直接删除smb.conf文件,再创建smb.conf文件自行配置信息 配置信息如下:
1 2 3 4 5 6 7 8 9 10 11 |
[global] workgroup = WORKGROUP #工作组[可自行设置] service string = Samba Server #设置samba服务器名称[可自行更改] netbios name = SambaServer #设置服务器访问别名[可自行更改] security = user #设置samba服务器安全级别。user:samba服务器验证; share:无权限验证; server:第三方主机验证;domain [tangrucheng] #在Windows网上邻居中看到的共享目录的名字 path = /data/www/www.tangrucheng.com #共享文件地址 public = no #不公开目录 writeable = yes #共享目录可以读写 valid user = apache #只允许apache用户访问 browseable = yes |
添加smb用户
在添加smb用户之前添加linux用户
1 |
# useradd newuser -d /home/newuser -s /bin/false |
然后,添加smb用户
1 |
# smbpasswd -a newuser |
因为上面配置smb的时候我的验证用户为apache,直接执行 # smbpasswd -a apache 就好了。
重启服务
1 |
# service smb restart |
或
1 |
# /etc/init.d/smb restart |
查看服务是否开启
1 2 |
# pstree |grep smb # netstat -tunpl |grep :13 |
测试
linux客户端:
1 |
# mount //192.168.10.1/tangrucheng /mnt -o username=apache |
window客户端:
1 |
\\192.168.10.1\tangrucheng |
查看所有会话 net use
清除记录会话 net use * /delete /y