Linux中的Samba配置流程

一、什么是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服务器:
配置其实比较简单,但是网上许多转来转去的文章较多,关键是按照步骤执行以后,发现没有成功,这就比较令人沮丧了。本文不多讲配置的原理,只讲配置步骤(哈哈,暴力配置法,贵在简单实用),如果想详细的了解原理,请参阅smb.conf(5) manual page
1、备份配置文件:
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
2、在文件smb.cof末位添加如下代码:
[yding]
comment = yding
path = /home/yding
writable = yes

其中的path = /home/yding是你想要共享的用户目录,Linux中一定要有哦。
3、添加Samba用户,注意添加的Samba用户必须是你Linux系统中已经存在的用户哦。通过如下的命令授权系统访问Samba。
smbpasswd -a yding
它会提示你输入访问密码,按照提示设置访问密码。
至此,Samba服务器的配置工作已经完成了。

第三步:配置iptables:
直接执行命令:service iptables stop
暴力配置体现的淋漓尽致啊

第四步:配置selinux:
直接执行命令setenforce 0,并将文件/etc/selinux/config中的SELINUX=enforcing改为SELINUX=disabled
至此,Samba的配置工作可算是完成啦。

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

在Windows地址栏输入你的Linux IP,例如:
输入\\192.168.1.104回车,就可以看到共享的目录图标了。
Linux中的Samba配置流程_第1张图片

点击进入yding的文件夹,弹出用户名和密码弹窗,输入你配置的时候设置的用户名和密码,就可以看到共享的文件目录了啦。
Linux中的Samba配置流程_第2张图片

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

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

1、windows下建立共享目录:
Linux中的Samba配置流程_第3张图片

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

Linux中的Samba配置流程_第4张图片

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

Linux中的Samba配置流程_第5张图片

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

七、附录:常见问题

1、执行命令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

你可能感兴趣的:(我的Linux学习之路)