一、什么是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回车,就可以看到共享的目录图标了。 (借用参考文章的图)

如何重新登陆samba服务器_如何重新登陆samba服务器

点击进入yding的文件夹,弹出用户名和密码弹窗,输入你配置的时候设置的用户名和密码,就可以看到共享的文件目录了啦。 

如何重新登陆samba服务器_Windows_02

按照上述步骤执行应该就没有问题了,如果还有问题请及时告知,共同学习共同进步。

六、在Linux下访问Windows的共享目录示例:

1、windows下建立共享目录: 

如何重新登陆samba服务器_ci_03

注意一定要选定共享的用户对象并设定共享权限,这个在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的路径下。结果如下:

如何重新登陆samba服务器_ci_04

实际的windows的共享目录test下的文件为:

如何重新登陆samba服务器_ci_05

可见,两者是同步的。在一边对目录做任何的添加、修改和删除工作,在另一边都同步实现了。基于这种方式,可以极大地提高开发的效率。

七、附录:常见问题

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