在嵌入式系统开发应用平台中,tftp、nfs和samba服务器是最常用的文件传输工具,tftp和nfs是在嵌入式Linux开发环境中常常使用的传输工具,samba则是Linux和Windows之间的文件传输工具。
samba是模仿Windows网上邻居的SMB的通信合同,将Linux操作系统“假装成”Windows操作系统,通过网上邻居的方法来进行文件传输的。
虚拟机版本:VMware10
Linux操作系统版本:RedHatEnterpriseLinux5
Samba服务器介绍
Samba是在Linux系统上实现SMB(SessionMessageBlock)合同的一个免费软件,以实现文件共享和复印机服务共享。
Samba服务器组件
samba有两个主要的进程smbd和nmbd。smbd进程提供了文件和复印服务linux开源软件,而nmbd则提供了NetBIOS名称服务和浏览支持,帮助SMB顾客定位服务器,处理所有基于UDP的合同。
Samba服务器相关的配置文件/etc/samba/smb.conf
这是samba的主要配置文件,基本上仅有这个文件,但是这个配置文件本身的说明十分详尽。主要的设置包括服务器全局设置,如工作组、NetBIOS名称和密码等级,以及共享目录的相关设置,如实际目录、共享资源名称和权限等两大部份。/etc/samba/lmhosts
初期的NetBIOSname需额外设定,因而须要这个lmhosts的NetBIOSname对应的IP檔。事实上它有点像是/etc/hosts的功能!只不过这个lmhosts对应的主机名是NetBIOSname喔!不要跟/etc/hosts搞混了!目前Samba预设会去使用你的本机名称(hostname)作为你的NetBIOSname,因而这个档案不设定也无所谓。/etc/sysconfig/samba
提供启动smbd,nmbd时,你还想要加入的相关服务参数。/etc/samba/smbusers
因为Windows与Linux在管理员与访客的帐号名称不一致,比如:administrator(windows)及root(linux),为了对应这三者之间的帐号关系,可使用这个档案来设定/var/lib/samba/private/{passdb.tdb,secrets.tdb}
管理Samba的用户帐号/密码时,会用到的数据库档案;/usr/share/doc/samba-
这个目录包含了SAMBA的所有相关的技术指南喔!也就是说,当你安装好了SAMBA以后,你的系统上面就早已富含相当丰富而完整的SAMBA使用指南了!值得高兴吧!^_^,所以,赶快自行参考喔!
至于常用的脚本文件案方面,若分为服务器与顾客端功能,则主要有下边这几个数据:
安装Samba
首先确认一下自己的Linux是否安装了Samba,使用命令:
[root@localhost ~]# rpm -qa | grep samba
其中:samba、samba-common、samba-client三个程序是必须的。
假如没有安装,有两种方法可以安装:
第一种方法:yum安装
yum是一个集与查找,安装linux学习,更新和删掉程序的Linux软件。它运行在RPM包兼容的Linux发行版本上,如:RedHat、Fedora、SUSE、CentOS、Mandriva。
yum install -y samba
第二种方法:安装包安装
安装包都在光碟里,首先须要挂载:
[root@localhost ~]# mount /dev/cdrom /mnt
这个时侯,会出现一个问题:
mount: block device /dev/sr0 is write-protected, mounting read-only
提示信息说,虚拟机挂着硬盘硬盘时提示只读。用以下命令可解决该报错:
mount -o remount,rw /dev/cdrom /mnt
此时,我们会发觉,原先空的文件夹/mnt现今多了好多的文件。
在/mnt/Server文件夹中,会能找到关于Samba的安装包:
找到安装包以后,就是安装Samba了(只须要安装自己没有的那种就行了)。使用命令:
rpm samba-3.0.25b-0.el5.4.i386.rpm
rpm samba-client-3.0.25b-0.el5.4.i386.rpm
rpm samba-commons-3.0.25b-0.el5.4.i386.rpm
安装完以后,再使用命令验证一下是否安装完成:
[root@localhost ~]# rpm -qa | grep samba
配置Samba更改配置文件
samba服务器最主要的配置文件或许只有一个,就是/etc/samba/samba.conf,这个配置文件可以分为两个部份,一个部份是全局参数,一部份是共享资源相关参数。
#1.全局部分参数设置:
[global]
#与主机名相关的设置
workgroup = zkhouse <==工作组名称
netbios name = zkserver <==主机名称,跟hostname不是一个概念,在同一个组中,netbios name必须唯一
serverstring = this is a test samba server <==说明性文字,内容无关紧要
#与登录文件有关的设置
log file = /var/log/samba/log.%m <==日志文件的存储文件名,%m代表的是client端Internet主机名,就是hostname
max log size = 50 <==日志文件最大的大小为50Kb
#与密码相关的设置
security = share <==表示不需要密码,可设置的值为share、user和server
passdb backend = tdbsam
#打印机加载方式
load printer = no <==不加载打印机
-----------------------------------------------------------
#2.共享资源设置方面:将旧的注释掉,加入新的
#先取消[homes]、[printers]的项目,添加[temp]项目如下
[temp] <==共享资源名称
comment = Temporary file space <==简单的解释,内容无关紧要
path = /tmp <==实际的共享目录
writable = yes <==设置为可写入
browseable = yes <==可以被所有用户浏览到资源名称,
guest ok = yes <==可以让用户随意登录
也就是说,将前面“#2共享资源设置方面”加入到配置文件的最后即可。
添加用户并设置密码
设置帐号用于登陆samba服务器,同时并设置密码。具体命令:
[root@localhost ~]# useradd sambauser
[root@localhost ~]# smbpasswd -a sambauser
New SMB password:
Retype new SMB password:
重启Samba服务器
[root@localhost ~]# /etc/init.d/smb restart
假如这段命令未能运行,就是Samba没有正确安装的缘由。
登陆Samba
在Windows和Linux网路都畅通的情况下linux为只读文件系统,在Windows下登陆Samba服务器。使用命令查看Samba的IP地址:
[root@localhost ~]# ifconfig
在Windows的运行,输入\223.3.119.170(Samba对应的IP地址):
这个时侯会弹出登陆界面,直接输入之前设置的登陆帐号和密码就行了。
问题汇总及补充
之前Samba的安装和配置都是一步一步来的,没有哪些问题。并且好多情况下,就是最后在Windows的运行中,输入了\IP地址以后linux为只读文件系统,没有任何反应。这是最麻烦的地方,由于完全不晓得是哪些缘由造成的。下边提供几个可能出问题的地方:
网路选择
在配置Samba服务器的时侯,网路选择为bridge桥联接。
这是由于:要保证Linux下的IP和Windows下的IP处于同一网关中,而且保证互相可以ping通。
如何验证?
在Windows的命令行中,输入命令ipconfig:
同时在Linux中输入命令ifconfig(两个命令不一样,须要注意):
可以看见:两个IP地址223.3.119.239和223.3.119.170之间前3个都是一样的,只有最后一个不同,这就保证了在同一公网。倘若前3位不同,可在Linux中使用命令:
[root@localhost ~]# ifconfig eth0 223.3.119.130
只须要保证只有最后一个不同即可。
接出来验证Windows和Linux之间的ping通,在Windows命令行中输入pingLinux的IP地址:
结果若果不是timeout,就代表二者之间ping通。
防火墙问题
假如防火墙不关掉,Windows和Samba之间的连通可能会被抵挡。
Windows上关掉防火墙:控制面板->系统和安全->Windows防火墙->打开或关掉Windows防火墙;
Linux上关掉防火墙:
[root@localhost ~]# setenforce 0
[root@localhost ~]# service iptables stop
记得要重启Samba服务器。
权限问题
可能会出现权限不够的问题,更改你想要的那种文件的权限。
[root@localhost ~]# chmod 777 /home
难以访问
假如用windows访问samba,跳出以下对话框的错误:
难以访问。您可能没有权限使用网路资源。请与这台服务器的管理员联系以查明您是否有访问权限。
不容许一个用户使用一个以上用户名与一个服务器或共享资源的多重联接。中断与此服务器或共享资源的所有联接,之后再试一次……或者直接重启Windows。
如何断掉联接(即退出Samba服务器)呢?
在Windows的命令行中输入:
net use * /delete /y
手动联接
使每次打开Linux手动运行smba服务器:
在终端中输入setup->systemservice->找到smb,按下空格,便可选中->退出完成(注意切换用tab键)。
假如还有哪些问题,也可以参考联接:【Linux】samba服务器的安装和配置,159samba难以访问。您可能没有权限使用网路资源netuse命令。