一、什么是Samba?
Samba是一组软件包,使Linux支持SMB协议,是一套让linux系统能够应用Microsoft网络通讯协议的软件。它使执行Linux系统的机器能与执行Windows系统的计算机进行文件与打印机共享.
二、Samba的主要功能是什么?
1、提供Windows共享Linux等其他操作系统的资源,外表看起来和共享Windows资源没有区别,并支持Windows客户使用网上邻居浏览网络。
2、提供SMB客户功能:利用Samba提供的smbclint程序可以从Linux下以类似于 FTP的方式访问Windows的资源。
3、备份PC上的资源:利用一个叫smbtar的shell 脚本,可以使用 tar 格式备份和恢复一台远程 Windows上的共享文件。
4、提供一个命令行工具,在其上可以有限制地支持NT的某些管理功能。
三、Samba的组成是什么?
一个samba服务器实际上包含了两个服务器程序:
1、Smbd是samba的核心。它负责建立对话进程、验证用户身份、提供对文件系统和打印机的访问机制。
2、 Nmbd是对外发布samba服务器可以提供的服务。
四、Samba服务器的安装和配置步骤是什么?(以readhat为例说明)
第一步:查看自己的Linux系统有没有安装Samba相关服务器:
执行命令: # rpm -qa | grep samba
命令输出:
samba-common-3.6.9-164.el6.x86_64
samba-winbind-3.6.9-164.el6.x86_64
samba-3.6.9-164.el6.x86_64
samba-client-3.6.9-164.el6.x86_64
samba4-libs-4.0.0-58.el6.rc4.x86_64
samba-winbind-clients-3.6.9-164.el6.x86_64
其中,
samba——>这个软件包包含了主要的daemon文件(smbd和nmbd);
samba-common——>提供samba的主要配置文件(smb.conf)、smb.conf语法检测程序(testparm)等;
samba-client——当linux作为samba 客户端的时候,提供了一套所需的工具和指令。
如果没有,说明系统没有安装,那就直接下载和安装它,安装完了再次执行上述命令查看,具体安装过程不细说了,参考材料较多,且多数系统都是默认安装了Samba服务的。如果系统安装了Samba服务器,那就进入配置环节了。如果没有安装samba,建议使用*.rpm安装,使用从samba官网下载的.tar.gz文件安装可能环境配置过不了。
参看:
第二步:配置Samba服务器:
配置其实比较简单,但是网上许多转来转去的文章较多,关键是按照步骤执行以后,发现没有成功,这就比较令人沮丧了。本文不多讲配置的原理,只讲配置步骤(哈哈,暴力配置法,贵在简单实用),如果想详细的了解原理,请参阅smb.conf(5) manual page。
1、备份配置文件:
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
2、在文件smb.cof末位添加如下代码:
[share]
comment = share
path = /home/share
writable = yes
其中的path = /home/share是你想要共享的用户目录,必须是用户。如需创建使用useradd 用户名 & passwd 密码 命令。
3、添加Samba用户,注意添加的Samba用户必须是你Linux系统中已经存在的用户哦。通过如下的命令授权系统访问Samba。
smbpasswd -a share
它会提示你输入访问密码,按照提示设置访问密码。
至此,Samba服务器的配置工作已经完成了。
4、查看smb/nmb状态
/sbin/service smb status 与 /sbin/service nmb status
若提示:smb/nmb is stopped 需要启动nmb/smb: service smb/nmb start。
使用/sbin/chkconfig | grep smb 与 /sbin/chkconfig | grep nmb 查看等级开关状态,一般保证-level2345打开即可,如果没有打开则使用:/sbin/chkconfig --level2345 nmb on 与 /sbin/chkconfig --level2345 smb on 打开。
第三步:配置iptables:
直接执行命令:service iptables stop
暴力配置体现的淋漓尽致啊第四步:配置selinux:
直接执行命令setenforce 0,并将文件/etc/selinux/config中的SELINUX=enforcing改为SELINUX=disabled
至此,Samba的配置工作可算是完成啦。
五、在Windows下访问Linux共享目录示例:
在Windows地址栏输入你的Linux IP,例如:输入\\192.168.1.104回车,就可以看到共享的目录图标了。 (借用参考文章的图)点击进入yding的文件夹,弹出用户名和密码弹窗,输入你配置的时候设置的用户名和密码,就可以看到共享的文件目录了啦。
按照上述步骤执行应该就没有问题了,如果还有问题请及时告知,共同学习共同进步。
六、在Linux下访问Windows的共享目录示例:
1、windows下建立共享目录:
注意一定要选定共享的用户对象并设定共享权限,这个在Linux下挂在该共享目录时要用到。
2、在Linux下挂在该共享目录:
mount -t cifs -o username=LSQ,password=liyang520 //192.168.*.*/test /home/yding/test/usrname和password是windows的用户名和密码,//192.168../test是windows的IP和共享的文件夹名,/home/yding/test/是我们想把windows下的共享目录挂在到linux的路径下。结果如下:
实际的windows的共享目录test下的文件为:
可见,两者是同步的。在一边对目录做任何的添加、修改和删除工作,在另一边都同步实现了。基于这种方式,可以极大地提高开发的效率。
七、附录:常见问题
service smb status
时候,输出smb:unrecognized service
。
解答:我们用常规方法检查Linux系统是否安装了Samba服务时,执行命令# rpm -qa | grep samba时候,输出为:samba-common-3.6.9-164.el6.x86_64
samba-winbind-3.6.9-164.el6.x86_64
samba-client-3.6.9-164.el6.x86_64
samba4-libs-4.0.0-58.el6.rc4.x86_64
samba-winbind-clients-3.6.9-164.el6.x86_64缺少了samba-3.6.9-164.el6.x86_64,这是Samba的主程序,没有安装当然无法识别服务了。那么只要到Linux redhat的安装包里面找到对应的安装包,执行命令:输出:-r--r--r-- 108 root root 5250316 Oct 23 2013 samba-3.6.9-164.el6.x86_64.rpm
......最后check一下,执行:# service smb status
输出:smbd is stopped
启动它:# service smb start
再次检查:# service smb status
最终输出:smbd (pid 6415) is running...
OK,解决了。
2、mount失败,出现各种错误的原因判断及解决方法
(1)、挂载时,用户/密码错误
错误提示:mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
查看对应/var/log/message记录结果:
Oct 12 16:20:01 localhost kernel: Status code returned 0xc000006d NT_STATUS_LOGON_FAILURE
Oct 12 16:20:01 localhost kernel: CIFS VFS: Send error in SessSetup = -13
Oct 12 16:20:01 localhost kernel: CIFS VFS: cifs_mount failed w/return code = -13
(2)、没有分享目录错误提示:Retrying with upper case share name
mount error(6): No such device or address
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
查看对应/var/log/message记录结果:
Oct 12 16:20:06 localhost kernel: CIFS VFS: cifs_mount failed w/return code = -6
Oct 12 16:20:17 localhost kernel: CIFS VFS: cifs_mount failed w/return code = -6
Oct 12 16:20:17 localhost kernel: CIFS VFS: cifs_mount failed w/return code = -6
八、参考资料
(本文主要的参考文章)
http://blog.chinaunix.net/uid-23069658-id-3142052.html
http://blog.csdn.net/sycflash/article/details/6646172
http://www.apoyl.com/?p=1432