在嵌入式系统开发应用平台中,tftp、nfs和samba服务器是最常用的文件传输工具,tftp和nfs是在嵌入式Linux开发环境中经常使用的传输工具,samba则是Linux和Windows之间的文件传输工具。
samba是模仿Windows网上邻居的SMB的通讯协议,将Linux操作系统“假装成”Windows操作系统,通过网上邻居的方式来进行文件传输的。
Samba是在Linux系统上实现SMB(Session MessageBlock)协议的一个免费软件,以实现文件共享和打印机服务共享。
samba有两个主要的进程smbd和nmbd。smbd进程提供了文件和打印服务,而nmbd则提供了NetBIOS名称服务和浏览支持,帮助SMB客户定位服务器,处理所有基于UDP的协议。
1、/etc/samba/smb.conf
这是samba的主要配置文件,基本上仅有这个文件,而且这个配置文件本身的说明非常详细。主要的设置包括服务器全局设置,如工作组、NetBIOS名称和密码等级,以及共享目录的相关设置,如实际目录、共享资源名称和权限等两大部分。
2、/etc/samba/lmhosts
早期的 NetBIOS name 需额外设定,因此需要这个 lmhosts 的 NetBIOS name 对应的 IP 檔。 事实上它有点像是 /etc/hosts 的功能!只不过这个 lmhosts 对应的主机名是 NetBIOS name 喔!不要跟 /etc/hosts 搞混了!目前 Samba 预设会去使用你的本机名称 (hostname) 作为你的 NetBIOS name,因此这个档案不设定也无所谓。
3、/etc/sysconfig/samba
提供启动 smbd, nmbd 时,你还想要加入的相关服务参数。
4、/etc/samba/smbusers
由于 Windows 与 Linux 在管理员与访客的账号名称不一致,例如: administrator (windows) 及 root(linux), 为了对应这两者之间的账号关系,可使用这个档案来设定
5、/var/lib/samba/private/{passdb.tdb,secrets.tdb}
管理 Samba 的用户账号/密码时,会用到的数据库档案;
6、/usr/share/doc/samba-<版本>
这个目录包含了 SAMBA 的所有相关的技术手册喔!也就是说,当你安装好了 SAMBA 之后,你的系统里面就已经含有相当丰富而完整的 SAMBA 使用手册了!值得高兴吧! ^_^,所以,赶紧自行参考喔!
至于常用的脚本文件案方面,若分为服务器与客户端功能,则主要有底下这几个数据:
首先确认一下自己的Linux是否安装了Samba,使用命令:
[root@localhost ~]# rpm -qa | grep samba
其中:samba、samba-common、samba-client三个程序是必须的。
如果没有安装,有两种方式可以安装:
yum是一个集与查找,安装,更新和删除程序的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服务器最主要的配置文件其实只有一个,就是/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:
[root@localhost ~]# /etc/init.d/smb restart
在Windows和Linux网络都畅通的情况下,在Windows下登录Samba服务器。使用命令查看Samba的IP地址:
[root@localhost ~]# ifconfig
在Windows的运行,输入\\223.3.119.170(Samba对应的IP地址):
这个时候会弹出登录界面,直接输入之前设置的登录账号和密码就行了。