LinuxSamba服务器超详细安装配置(附问题解决)
⽬录
Samba服务器介绍
Samba服务器组件
Samba服务器相关的配置⽂件
安装Samba
第⼀种⽅式:yum安装
第⼆种⽅式:安装包安装
配置Samba
修改配置⽂件
添加⽤户并设置密码
重启Samba服务器
登录Samba
问题汇总及补充
⽹络选择
防⽕墙问题
权限问题
⽆法访问
⾃动连接
在嵌⼊式系统开发应⽤平台中,tftp、nfs和samba服务器是最常⽤的⽂件传输⼯具,tftp和nfs是在嵌⼊式Linux开发环境中经常使⽤的传输⼯具,samba则是Linux和Windows之间的⽂件传输⼯具。
samba是模仿Windows⽹上邻居的SMB的通讯协议,将Linux操作系统“假装成”Windows操作系统,通过⽹上邻居的⽅式来进⾏⽂件传输的。
虚拟机版本:VMware10
Linux操作系统版本:Red Hat Enterprise Linux 5
Samba服务器介绍
Samba是在Linux系统上实现SMB(Session MessageBlock)协议的⼀个免费软件,以实现⽂件共享和打印机服务共享。
Samba服务器组件
linux完全安装samba有两个主要的进程smbd和nmbd。smbd进程提供了⽂件和打印服务,⽽nmbd则提供了NetBIOS名称服务和浏览⽀持,帮助SMB客户定位服务器,处理所有基于UDP的协议。
Samba服务器相关的配置⽂件
/etc/f
这是samba的主要配置⽂件,基本上仅有这个⽂件,⽽且这个配置⽂件本⾝的说明⾮常详细。主要的设置包括服务器全局设置,如⼯作组、NetBIOS名称和密码等级,以及共享⽬录的相关设置,如实际⽬录、共享资源名称和权限等两⼤部分。
/etc/samba/lmhosts
早期的 NetBIOS name 需额外设定,因此需要这个 lmhosts 的 NetBIOS name 对应的 IP 檔。事实上它有点像是 /etc/hosts 的功能!只不过这个 lmhosts 对应的主机名是 NetBIOS name 喔!不要跟 /etc/hosts 搞混了!⽬前 Samba 预设会去使⽤你的本机名称 (hostname) 作为你的 NetBIOS name,因此这个档案不设定也⽆所谓。
/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 使⽤⼿册了!值得⾼兴吧! ^_^,所以,赶紧⾃⾏参考喔!
⾄于常⽤的脚本⽂件案⽅⾯,若分为服务器与客户端功能,则主要有底下这⼏个数据:
/usr/sbin/{smbd,nmbd}:服务器功能,就是最重要的权限管理 (smbd) 以及 NetBIOS name 查询 (nmbd) 两个重要的服务程序;
/usr/bin/{tdbdump,tdbtool}:服务器功能,在 Samba 3.0 以后的版本中,⽤户的账号与密码参数已经转为使⽤数据库了!Samba 使⽤的数据库名称为 TDB (Trivial DataBase)。既然是使⽤数据库,当然要使⽤数据库的控制指令来处理啰。tdbdump 可以察看数据库的内容,tdbtool 则可以进⼊数据库操作接⼝直接⼿动修改帐密参数。不过,你得要安装tdb-tools 这个软件才⾏;
/usr/bin/smbstatus:服务器功能,可以列出⽬前 Samba 的联机状况,包括每⼀条 Samba 联机的 PID, 分享的资源,使⽤的⽤户来源等等,让你轻松管理 Samba 啦;
/usr/bin/{smbpasswd,pdbedit}:服务器功能,在管理 Samba 的⽤户账号密码时,早期是使⽤ smbpasswd 这个指令,不过因为后来使⽤ TDB 数据库了,因此建议使⽤新的 pdbedit 指令来管理⽤户数据;
/
usr/bin/testparm:服务器功能,这个指令主要在检验配置⽂件 f 的语法正确与否,当你编辑过 f 时,请务必使⽤这个指令来检查⼀次,避免因为打字错误引起的困扰啊!
/sbin/mount.cifs:客户端功能,在 Windows 上⾯我们可以设定『⽹络驱动器机』来连接到⾃⼰的主机上⾯。在 Linux 上⾯,我们则是透过 mount (mount.cifs) 来将远程主机分享的档案与⽬录挂载到⾃⼰的 Linux 主机上⾯哪!
/usr/bin/smbclient:客户端功能,当你的 Linux主机想要藉由『⽹络上的芳邻』的功能来查看别台计算机所分享出来的⽬录与装置时,就可以使⽤ smbclient来查看啦!这个指令也可以使⽤在⾃⼰的 SAMBA 主机上⾯,⽤来查看是否设定成功哩!
/usr/bin/nmblookup:客户端功能,有点类似 nslookup 啦!重点在查出 NetBIOS name 就是了
/usr/bin/smbtree:客户端功能,这玩意就有点像 Windows 系统的⽹络上的芳邻显⽰的结果,可以显⽰类似『靠近我的计算机』之类的数据,能够查到⼯作组与计算机名称的树状⽬录分布图!
安装Samba
⾸先确认⼀下⾃⼰的Linux是否安装了Samba,使⽤命令:
[root@localhost ~]# rpm -qa | grep samba
其中:samba、samba-common、samba-client三个程序是必须的。
如果没有安装,有两种⽅式可以安装:
第⼀种⽅式:yum安装
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
修改配置⽂件
samba服务器最主要的配置⽂件其实只有⼀个,就是/etc/f,这个配置⽂件可以分为两个部分,⼀个部分是全局参数,⼀部分是共享资源相关参数。
#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⽹络都畅通的情况下,在Windows下登录Samba服务器。使⽤命令查看Samba的IP地址:[root@localhost ~]# ifconfig