CentOS6.3通过Samba与Windows7.0实现文件共享

背景

    因为需要通过windows来访问Linux上的文件,所以考虑采用Samba技术,Samba 服务器的工作原理是:让NETBIOS(Windows95网络邻居的通讯协议)和SMA Server Message Block)这两个协议运行于TCP/IP通信协议之上,并且使用Windows 95的NETBEUI协议让LINUX 可以在网络邻居上被Windows 95看到。 其中最重要的就是SMB协议(Server Message Block),这是一个用于不同计算机之间共享打印机、串行口和通讯抽象(如命名管道、邮件插槽等)的协议。SMB协议是一个非常重要的协议,在所有 的Microsoft Windows系列操作系统中广为应用。 Samba是SMB服务器在类UNIX系统上的实现。它是开放源代码的GPL自由软件。目前Samba可以在几乎所有的UNIX变种上运行。

环境

    本机系统环境:windows7.0+vmware9.0
    其中,windows7.0为宿主机,vmware9.0上CentOS6.3(i386)为虚拟机,两者之间通过bridge方式进行连接。

Samba安装和配置

    1.安装
        需要安装下面几个包,执行  rpm -ivh xxx.rpm
        samba-common-3.5.10-125.el6.i686.rpm
        samba-3.5.10-125.el6.i686.rpm
        samba-client-3.5.10-125.el6.i686.rpm
        samba4-libs-4.0.0-23.alpha11.el6.i686.rpm
        libsmbclient-3.5.10-125.el6.i686.rpm
        samba-winbind-3.5.10-125.el6.i686.rpm
        samba-winbind-clients-3.5.10-125.el6.i686.rpm
    2.启动服务
       /etc/init.d/smb start/stop/restart来启动、关闭、重启SMB服务
      /etc/init.d/nmb start/stop/restart来启动、关闭、重启NMB服务
     service smb status 查看smb服务状态
     service nmb status 查看nmb服务状态
     chkconfig --level 2345 smb on             //在2、3、4、5级别上自动运行smb服务
     chkconfig --level 2345 nmb on             //在2、3、4、5级别上自动运行nmb服务
    3.smb.conf 配置
    先把原始配置文件备份下,cp -p /etc/samba/smb.conf    /etc/samba/smb.conf.orig
     下面是本人实验的配置文件内容,需要根据配置的samba用户权限来登录samba服务。
[global]
    workgroup = WORKGROUP
    server string = SVN Server
    security = user
    encrypt passwords = true
    passdb backend = tdbsam
    obey pam restrictions = yes

    client lanman auth = yes
    lanman auth = yes
 
    username map = /etc/samba/smbusers
 
    log file = /var/log/samba/log.%m

    max log size = 1000

#==== Share Definitions ====
[homes]
    comment = Home Directories
    browseable = no
    writable = yes
[public]
    comment = Public Stuff
    path = /home/public                // 设置共享路径
    public = yes
    browseable = yes
    writable = yes
    valid users = wur,root

    4.路径权限配置
     用命令添加系统用户,添加用户到Samba数据库,以及设置路径权限:
     useradd root
     useradd test
     smbpasswd -a root    // 将root加入Samba数据库,与系统用户密码可以不同


  修改共享目录安全属性,由于centos默认samba不能访问任何文件夹,需要通过改变文件夹安全属性获得访问权限,否则无法访问(关键)

  chcon -R -t samba_share_t /srv/samba
     chown -R root:root /home/public

    5.Samba服务重启
    /etc/init.d/smb restart
    /etc/init.d/nmb restart

    6.本地测试Samba登录
    用 testparam 测试smb.conf 配置,用 smbclient  -L   //127.0.0.1 -U username 测试共享路径。
     用 smbclient  //x.x.x.x -U root 测试本机ip地址用Samba的root登录,查看路径中文件。

典型问题

1. 在Linux终端用smbclient登录samba服务器的时候,出现了以下的错误:

tree connect failed: NT_STATUS_BAD_NETWORK_NAME 。

    用netstat -tlnp 查看linux防火墙阻挡了137、138、139、445端口,修改 /etc/sysconfig/iptables 配置文件,

   添加samba端口访问允许,注意一定要添加在ACCEPT行后面,不可添加在最后

-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 -p udp -m udp --dport 137 -j ACCEPT
-A INPUT -p udp -m udp --dport 138 -j ACCEPT
    保存防火墙配置: service iptables save
    启动/停止/重启防火墙:
    service iptables start 
    service iptables stop
    service iptables restart

    另外,就是需要关闭selinux,打开/etc/selinux/config,  设置SELINUX=disabled
    也可执行 setenforce 0,再用getenforce查看状态改为 Permissive了
看看Samba服务的selinux的bool值...
[root@station195 share]# getsebool -a  |grep samba
samba_domain_controller --> off
samba_enable_home_dirs --> off (这一项默认是关闭的)
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_share_nfs --> off
use_samba_home_dirs --> off
virt_use_samba --> off
我们需要将samba_enable_home_dirs --> off这一项开启...使用下面的命令..
[root@station195 share]# setsebool  -P  samba_enable_home_dirs   on
[root@station195 share]# getsebool -a  |grep samba
samba_domain_controller --> off
samba_enable_home_dirs --> on(这一项已经开启了)
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_share_nfs --> off
use_samba_home_dirs --> off
virt_use_samba --> off

2. windows上访问不到linux的共享目录
      需关闭linux的防火墙:#service iptables stop

3.windows登录linux的共享目录时提示用户名和密码总是不对

单击[开始]——[运行] 输入 “secpol.msc”打开管理工具,展开“本地策略”;

    然后,单击“安全选项”。 双击“网络安全:LAN Manager 身份验证级别”;

    最后,单击列表中:发送LM和NTLMv2,如果已协商,则使用NTLMv2协议


4.在CentOS下访问windows的共享目录
    方法一:采用VMWARE自带SHARE功能
   (1) 在 VMWARE下设置 share folders,并选择上电是生效。
    (2)安装VMWARE TOOL
  (3)切换到ghost computer的linux系统,执行:cd /mnt/hgfs 就看到share folders的目录了。


    方法二:采用smbmount命令
mount -t smbfs //192.168.0.1/share /mnt -o username=user%passwd
或者smbmount //192.168.0.1/share /mnt -o username=user%passwd

5.使用ssh登录CentOS输入用户名后等待输入密码项慢

在虚拟机中的CentOS在使用windows下使用ssh登录时(iptables已开启),在输入用户名后,输入密码选项要延迟几十秒才出现,就是

        login as: root

        Access denied
#过了几十秒后才跳出
        root@192.168.1.125's password:
     根据网上的资料,讲的是在ssh登录时,ssh服务端会反向解析客户端的主机名,如果dns解析不正确,只有等待超时后服务端才提供ssh链接,解决的方法是更改/etc/ssh/sshd_config中的UseDNS no取消反向解析,
# vi /etc/ssh/sshd_config
找到UseDNS,修改为no
UseDNS no
然后重新启动service sshd restart.
    然后再次连接,还是和原来一样慢,上面的方法不好使,我把客户端的ip和客户端的主机名写到/etc/hosts中,但是还是一样慢,不过,把客户端的ip和服务端的主机名写到/etc/hosts中就很快连接上了。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值