Samba配置学习(Linux和Windows互相访问)(综合整理)

来源:互联网 发布:全国各乡镇人口数据 编辑:程序博客网 时间:2024/06/05 10:35

   今天安装了samba。并在局域网里实现了简单的共享。windows可以访问linux了。然后遇到的问题就是防火墙的过滤规则。把samba的服务端口打开即可。然后关于打开服务端口以及iptables的配置还是要好好学习的。恩。这里贴出整理的一些资料(2012.05.28)。

   如今的操作系统市场,几乎是Unix(类Unix)与 Windows割据天下。一个侵占了绝对的服务器市场,而另一个却几乎吞噬了整个桌面市场。经常有人抱怨如今的文件系统,网络的异构,使不同的系统之间的访问变得困难,需要引入一门通用的“语言”来解释异构系统之间的通讯。本文主要介绍了Samba的使用,实现了UNIX(类Unix)与windows的文件共享和打印共享,你可以在本地的windows系统上的网络邻居来访问Unix(类Unix)上的文件,打印共享,您甚至还可以影射网络驱动器,这就如同使用本地磁盘一样方便。而且利用Unix的强大的访问控制,你可以对不同的共享目录权限设置,不用担心有人会删除你的文档,而您自己却可以自由操作。
   Samba 有两个服务器,一个是smb,另一个是nmb。smb 是Samba 的主要启动服务器,让其它机器能知道此机器共享了什么;如果不打开nmb服务器的话,只能通过IP来访问,比如在Windows的IE浏览器上打入下面的一条来访问,而nmb是解析用的,解析了什么呢?就是把这台Linux机器所共享的工作组及在此工作组下的netbios name解析出来;一般的情况下,在RPM包的系统,如果是用RPM包安装的Samba ,一般可以通过如下的方式来启动Samba服务器:

[root@localhost ~]# /etc/init.d/smb start
启动 SMB 服务:                                            [ 确定 ]
[root@localhost ~]# /etc/init.d/nmb start
启动 NMB 服务:                                            [ 确定 ]

如果停止呢?就在smb后面加stop ;重启就是restart
[root@localhost ~]# /etc/init.d/smb stop
[root@localhost ~]# /etc/init.d/smb restar

对于所有系统来说,通用的办法就是直接运行smb 和nmb;当然您要知道smb和nmb所在的目录才行;如果是自己编译的Samba ,您应该知道您把Samba放在哪里了:
[root@localhost ~]# /usr/sbin/smbd
[root@localhost ~]# /usr/sbin/nmbd

查看服务器是否运行起来了,则用下面的命令:
[root@localhost ~]# pgrep smbd
[root@localhost ~]# pgrep nmbd

关掉Samba服务器,也可以用下面的办法,大多是通用的;要root权限来执行:
[root@localhost ~]# pkill smbd
[root@localhost ~]# pkill nmbd

查看Samba 服务器的端口及防火墙;查看这个有何用呢?有时你的防火墙可能会把smbd服务器的端口封掉,所以我们应该smbd服务器所占用的端口;下面查看中,我们知道smbd所占用的端口是139和445 :
[root@localhost ~]# netstat -tlnp |grep smb
tcp        0      0 0.0.0.0:139                 0.0.0.0:*                   LISTEN      10639/smbd
tcp        0      0 0.0.0.0:445                 0.0.0.0:*                   LISTEN      10639/smbd

如果您有防火墙,一定要把这两个端口打开。
[root@localhost ~]#iptables -I INPUT -p tcp --dport 139 -j ACCEPT
[root@localhost ~]#iptables -I INPUT -p tcp --dport 445 -j ACCEPT
关闭端口:
[root@localhost ~]#iptables -I INPUT -p tcp --dport 139 -j DROP
[root@localhost ~]#iptables -I INPUT -p tcp --dport 445 -j DROP

在Windows中访问Linux Samba服务器共享文件的办法:
这个简单吧,在网上领居,查看工作组就能看得到,或者在浏览器上输入如下的
\\ip地址或计算机名
这样就能看到这个机器上有什么共享的了,点鼠标操作完成;如果访问不了,不要忘记把Linux的防火墙规划清掉,或让相应的端口通过。说明:
如果您的服务器是以share共享的,则无需用户名和密码就能挂载,如果出现要密码的提示,直接回车就行;您也可以用smbmount 来挂载,这样就无需用mount -t smbfs来指定文件系统的类型了:

简单的配置,匿名用户可读可写的实现:
第一步: 更改smb.conf
我们来实现一个最简单的功能,让所有用户可以读写一个Samba 服务器共享的一个文件夹;我们要改动一下smb.conf ;首先您要备份一下smb.conf文件:
[root@localhost ~]# cd /etc/samba
[root@localhost samba]# mv smb.conf smb.confBAK
然后我们来重新创建一个smb.conf文件;

[root@localhost samba]#touch smb.conf
然后我们把下面这段写入smb.conf中;

[global]
workgroup = WORKGROUP
server string = Linux Samba Server TestServer
security = share

[share]   ###这里为下边的共享文件夹名字
path = /opt/share
writeable = yes
browseable = yes
guest ok = yes

注解:
[global]这段是全局配置,是必段写的。其中有如下的几行;
workgroup 就是Windows中显示的工作组;在这里设置的是WORKGROUP(用大写,一般windows默认就这个了);
server string 就是Samba服务器说明,可以自己来定义;这个不是什么重要的;
security 这是验证和登录方式,这里我们用了share ;验证方式有好多种,这是其中一种;另外一种常用的是user的验证方式;如果用share呢,就是不用设置用户和密码了;

[share] 这个在Windows中显示出来是共享的目录;
path = 可以设置要共享的目录放在哪里;
writeable 是否可写,这里我设置为可写;
browseable 是否可以浏览,可以;可以浏览意味着,我们在工作组下能看到共享文件夹。如果您不想显示出来,那就设置为 browseable=no
guest ok 匿名用户以guest身份是登录;

第二步:建立相应目录并授权;
[root@localhost ~]# mkdir -p /opt/linuxsir
[root@localhost ~]# id nobody
uid=99(nobody) gid=99(nobody) groups=99(nobody)
[root@localhost ~]# chown -R nobody:nobody /opt/share
注释:关于授权nobody,我们先用id命令查看了nobody用户的信息,发现他的用户组也是nobody,我们要以这个为准。有些系统nobody用户组并非是nobody ;

第三步:启动smbd和nmbd服务器;
[root@localhost ~]# smbd
[root@localhost ~]# nmbd

第四步:查看smbd进程,确认Samba 服务器是否运行起来了;
[root@localhost ~]# pgrep smbd
13564
13568

   以上可以让windows访问linux了。然后要linux访问windows的话。使用smbclient即可。。
   首先。windows那边共享一个文件夹。然后文件夹的名字为zzshare(当然这个名字随便的)。然后执行命令:

[root@localhost ~]# smbclient //ip/zzshare -U Administrator
   这样就可以访问windows下的共享的目录了。。

   samba共享后还有一个很重要的权限问题。是SELINUX引起的。比较省事的方法就是就是关闭SELINUX。方法是:
[root@localhost ~]#setenforce 0
其实更安全的还是更改selinux的设置值。不过挺麻烦的。就像防火墙过滤规则一样。设置不好。直接把iptables关闭掉。但是这样终究不好。不过设置过几次没有成功。先这样。


原创粉丝点击