一、安装环境

本机系统:Windows 7 旗舰版

VMware:VMware Workstation 9.0

CentOS:CentOS 5.10

网络适配器设置为:NAT 转换

二、查看是否已经安装“samba”

命令:rpm -qa|grep samba

输出结果:


这里顺便说一下搭建samba服务器所需要的基本软件包:

1. samba——>这个软件包包含了主要的daemon文件(smbd和nmbd)

2. samba-common——>提供samba的主要配置文件(smb.conf)、smb.conf语法检测程序(testparm)等

3. samba-client——> 当linux作为samba 客户端的时候,提供了一套所需的工具和指令。

这下看出来了吧,samba主程序根本没有被安装

也可以使用“service smb status”命令查看是否已经安装,执行该命令如果返回“smb:unrecognized service”,说明服务没有安装。

三、安装“samba”

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。

这里只介绍本人的安装过程,

详细请参考“鳥哥的 Linux 私房菜”之“第十六章、檔案伺服器之二: SAMBA 伺服器”

可以通过光盘或网络安装 samba

1、通过网络安装

本人就是用的网络安装,虽然有点慢,但是比较简单方便。

命令:sudo yum install samba

就一条命令就OK了。

2、通过光盘安装

仅供参考,本人没有测试过。

先把iso镜像挂载上,一般情况下光驱的设备标识为/dev/hdc,

[root@sycflash ~]# mkdir /mnt/temp
[root@sycflash ~]#mount /dev/hdc /mnt/temp
[root@sycflash ~]#ll /mnt/temp/Server | grep samba
samba-3.0.33-3.28-1.el5.i386.rpm
 samba-common-3.0.33-3.28-1.el5.i386.rpm
 samba-client-3.0.33-3.28-1.el5.i386.rpm...
[root@sycflash ~]#rpm -ivh /mnt/temp/Server/samba-3.0.33-3.28-1.el5.i386.rpm
error: Failed dependencies:
 perl(Convert::ASN1) is needed by samba-3.0.33-3.28-1.el5.i386又报错了,原来是缺少所依赖的perl ASN1包。
解决方法:安装perl-Convert-ASN1-0.20-1.1.noarch.rpm
/mnt/temp/Server/
[root@sycflash ~]#rpm -ivh /mnt/temp/Server/samba-3.0.33-3.28-1.el5.i386.rpm
这时samba就能正常安装了。check一下成果:
[root@sycflash ~]#service smb status
smbd is stopped
nmbd is stopped
这时已经没有smb:unrecognized service 这样的提示了。

四、配置 Samba


<pre id="answer-content-1057139146" class="answer-text mb-10" name="code" style="margin-top: 0px; margin-bottom: 10px; word-wrap: break-word; padding: 0px;">先在/home目录mkdir 目录 samba
	修改 samba 权限 
	chmod 0777 /home/samba



如果需要共享的目录已经存在 了,那么只修改目录的访问权限就可以了。



命令:sudo vi /etc/samba/smb.conf
 
 
修改几次地方:
	找到以下几行把注释去掉
	setsebool -P samba_domain_controller on
	setsebool -P samba_enable_home_dirs on
	setsebool -P samba_export_all_rw on

	修改  workgroup = MYGROUP 为 MYGROUP  工作组为你windows 的工作组,一般为WORKGROUP
	workgroup = WORKGROUP
	server string = Samba Server Version %v
	netbios name = CentOSServer #网络计算机名,可以通过它访问共享文件如:\\CentOSServer
	跟着添加这两行
	create mask = 0777
	directory mask = 0777

	然后在文件最后添加这几行

	[public]
	comment = public file
	path = /home/samba #刚才mkdir的文件夹
	valid users = root
	writable = yes
	browseable = yes

	:wq命令保存退出



下面给出我的配置文件内容,只贴出关键部分:



要在“passdb backend = tdbsam”注释掉。

<pre name="code" class="plain">        workgroup = WORKGROUP
        server string = Samba Server Version %v
        netbios name = CentOS
        create mask = 0777
        directory mask = 0777
 
 
<pre name="code" class="plain" style="font-family: arial, 'courier new', courier, 宋体, monospace; font-size: 14px; line-height: 24px; white-space: pre-wrap; color: rgb(51, 51, 51); background-color: rgb(255, 255, 255);">        security = user
#       passdb backend = tdbsam


<span style="color:#cc0000;">有人写到可以吧sercurity设置成share则所有人可以访问,我试过了不可以,不晓得是不是因为自己电脑的缘故。</span><span style="color:#333333;"> </span>


刚接触Linux,原来配置文件中的分号也是注释符。


[public]
        comment = public file
        path = /home/dev
        valid users=@root
        writable=yes
        browseable=yes
        public = yes
        admin users = root
        create mask = 0664
        direcotry mask = 0775



重启smb服务 service smb restart 添加samba用户,将root用户增加为samba用户 smbpasswd -a root 会提示输入两次密码,这个密码就是访问samba的密码


六 在Windows下映射网络驱动器



<pre id="answer-content-1057139146" class="answer-text mb-10" name="code" style="word-wrap: break-word; margin-top: 0px; margin-bottom: 10px; padding: 0px;">先看看能不能访问:


在windows系统中通过IP地址或刚才定义的网络计算机名访问就可以 在地址栏输入 \\192.168.x.x 或 \\CentOSServer

如果共享文件夹可以访问,打开Windows资源管理器,添加映射就可以了。


七 常见问题


</pre><pre code_snippet_id="434480" snippet_file_name="blog_20140724_14_7349747" id="answer-content-1057139146" class="answer-text mb-10" name="code" style="word-wrap: break-word; margin-top: 0px; margin-bottom: 10px; padding: 0px;">无法访问远程主机


先停止防火墙看看 service iptables stop



2、共享目录无法访问


1)关闭防火墙:


#sevice iptables stop
 
2)修改 /etc/samba/smb.conf,具体配置网上有,我的如下:
  security = share ---- 这个要用上,share表示安全最低级别,其次是user,最高是server
  [共享目录名]
path = /home/用户名/共享目录名
read only = no -----这个需要在前面用分号注释掉
writeable = yes
browseable = yes
public = yes
guest ok = yes
 
 3)SELinux作怪
 修改/etc/sysconfig/selinux 把enforcing改成disabled;然后命令行setenforce 0;
 或者用Rainsome兄说的 使用selinux强制策略:chcon -R -t samba_share_t /home/suyang/"Fedora Samba" 
 4)修改目录权限 #chmod 777 /home/wind ; #chmod 777 /home/wind/smbShare; 特别是前面一个做为上层目录权限也需要修改!!!
 5)重启samba服务 
 
#service smb restart
 
或者
 
/etc/rc.d/init.d/smb restart


当然你要在linux与windows之间互相能ping 通。