###############################################################################
#
Name : Mahavairocana
#
Author : Mahavairocana
#
QQ : 10353512
#
WeChat : shenlan-qianlan
#
Blog : http://www.cnblogs.com/Mahavairocana/
#
Description : You are welcome to reprint, or hyperlinks to indicate the
#
source of the article, as well as author
information.
###############################################################################
一、samba简介:(Server Messages Block,信息服务块)为了实现Windows主机与Linux服务器之间的资源共享,Linux操作系统提供了Samba服务,Samba服务为两种不同的操作系统架起了一座桥梁,使Linux系统和Windows系统之间能够实现互相通信,为广泛的Linux爱好者提供了极大方便。
两个主要进程:
1.nmbd :提供NETBIOS 名称解析的
2.smdb : 提供文件共享的。
由NETBIOS协议对于windows来讲监听TCP的139端口和UDP的137,138端口 ,所以nmbd在linux上模拟出了udp的137和138端口,以及tcp的139端口,smdb上模拟出 tcp的445端口。而SAMBA将在Linux上同时监听这4个端口。
二、Samba客户端配置
首先先记录下在linux客户端怎么用命令访问windows或者linux的共享文件夹
第一步 smbclient -L //192.168.100.5 -U Mahavairocana (smbclient是命令 -L是列出服务器有哪些共享文件 -U后面跟着的是用户名)
第二步 输入密码后会看到服务器共享的文件夹,然后用命令 smbclient //192.168.100.5/资源共享 -U Mahavairocana 进入服务器,输入密码后会看到如下(我登陆的是windows的共享文件)
Password:
Domain=[DC] OS=[Windows Server 2003 3790 Service Pack 2] Server=[Windows Server 2003 5.2]
smb: >
第三步 使用help可以查看命令使用方法,常用的有ls cd get put exit等
第四步 VISTA和WIN7访问要 \www.google.com
obody 或者 \www.google.comguest 这样
第五步 WIN7如果还不能访问,修改注册表
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa
LmCompatibilityLevel 的值等于 1
第六步 windows上访问修改删除不会及时刷新
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer
NoSimpleNetIDList 的值等于 1
-----------------------------------------------------------------------------------------------------------------
Samba服务器配置部分
第一步: 进入 /etc/samba 目录,备份下smb.conf,然后删除这个文件,自己重新建立一个,输入如下内容 [global] workgroup = WORKGROUP netbios name = www.test.com # 这里重点中的重点,这个名字最好和机器名一样,远程访问的时候就用这个名字 server string = C2 is samba server security = share load printers = no #不加载打印机 disable spoolss = yes #隐藏打印机 cups options = raw #打印机类型 unix charset = utf8 dos charset =GBK display charset = utf8 client lanman auth = yes client plaintext auth = yes hosts deny = 192.168.0.55 #阻止这个IP访问SMB [Mahavairocana] path = /var/Mahavairocana writeable = yes browseable = yes guest ok = yes 简单解释下上面的内容 [global]全局配置,必须有。前3行都是显示说什么的,security 如果是share就是不用帐号密码,如果是user就是要验证的。 [Mahavairocana]这个是在客户端显示出来共享的目录,path 就是共享的路径了,guest ok 为yes就是不要身份验证。 第二步: 在 /var/目录建立个文件夹叫 Mahavairocana 用来做共享文件夹用 [root@localhost ~]# id nobody uid=99(nobody) gid=99(nobody) groups=99(nobody) [root@localhost ~]# chown -R nobody:nobody /var/Mahavairocana OK,然后重启SMB服务器 service smb restart 和 service nmb start 一个简单不用验证的共享服务器就搞定了。 --------------------------------------------------------------------------------------- 第三步: 做一个需要帐号密码的共享服务器 1. 先用命令 useradd Mahavairocana -s /sbin/nologin(系统建立一个叫Mahavairocana的帐号且不能登陆系统) 2. 然后再用命令 smbpasswd -a Mahavairocana (用这个命令来添加一个SMB的帐户叫Mahavairocana) 3. chown Mahavairocana:Mahavairocana /var/Mahavairocana (让Mahavairocana帐户可以有权限使用/var/Mahavairocana这个目录) 4. 然后修改 /etc/samba/smb.conf 中: [global] workgroup = WORKGROUP // 用来指定你的机器上网络上所述的NT域名 netbios name = www.google.com //主机名,用来访问用的地址,重要 server string = google is samba server guest account = Mahavairocana //如果希望建立一个账号,再次填入用户名,同时在 /etc/passwd 中加入这个账号,否则使用默认的'nobody'作为账号 security = user // 这是samba服务器的安全等级。默认为user等级。samba 一共有4种安全等级。 1. share级,共享安全级,用户不需要输入账号和密码就可以登陆 2. user级, 用户安全级,用户需要账号和密码才能登陆 3. server级, 服务器安全级, 检查密码的工作可以指定另一台samba服务器完成 4. domain域安全级, 需要指定一台XP等服务器验证用户密码 unix charset = utf8 dos charset = GBK display charset = utf8 client lanman auth = yes client plaintext auth = yes [Mahavairocana] path = /var/Mahavairocana writeable = yes browseable = yes guest ok = no //用户需要密码,yes为不需要密码(需要配合上面的 security等级) comment = Mahavairocana valid users = Mahavairocana //可访问的用户 public = no //匿名用户看不到 create mask = 0777 主要就是把security改成user guest ok改成no 5. 最后 service smb restart 和 service nmb start 这样就做了个带命令访问的共享文件服务器了 6. 如果开了防火墙打开 iptables -A INPUT -p tcp --dport 139 -j ACCEPT iptables -A INPUT -p tcp --dport 445 -j ACCEPT iptables -A INPUT -p udp --dport 137 -j ACCEPT iptables -A INPUT -p udp --dport 138 -j ACCEPT iptables -A INPUT -i lo -j ACCEPT