samba的基本使用
最近我把工作平台转为Fedora Core 4,虽然它比不得RHAS和CentOS,但是足够我平时编程使用了。公司大部分同事都是使用Windows 2000/XP,
就连提供数据的服务器都是Windows,可见公司的水平了。唉,没办法。我觉得公司在平台这方面积累的经验不多。为了使我的平台能容合到公司
的大环境中,也为了与其它同事共享文件等的方便,我只能多研究一下samba了。
samba的作用是提供Unix/Linux与Windows之间的通讯,并使它们之间实现文件/打印机/设备共享,在Windows网络中,设置好samba的Linux机器
可以做服务器也可以做客户端。
安装以下几个rpm包:
samba-common-3.0.14a-2
samba-3.0.14a-2
system-config-samba-1.2.31-1
samba-client-3.0.14a-2
samba-swat
其中samba-swat是以web页面方式配置samba的前端,system-config-samba-1.2.31-1是X-window下的图形化配置程序,它们的作用都是设定
/etc/samba/smb.conf这个配置文件,此文件也可手动编辑。
chkconfig --level 35 smb on
运行级3,5下,samba服务开机自动加载。
samba的一些重要组成文件:
/usr/sbin/smbd SMB服务守护程式
/usr/sbin/nmbd NetBIOS服务守护程式
/etc/samba/smb.conf samba主配置文件
/usr/bin/smbclient 连接到SMB共享的客户端程式
/usr/bin/testparm 检验smb.conf有效性的脚本
/usr/bin/smbprint 此脚本可以将打印任务送至SMB主机的打印机
/usr/bin/smbstatus 列出本地主机的SMB连接
smbfs smbfs文件系统,可以将共享文件夹用mount命令挂载至本地。
samba主配置文件/etc/samba/smb.conf中的主要参数设定:
该文件中#为信息注释符 ;为参数注释符
#======================= Global Settings =====================================
[global]
workgroup = MYGROUP
工作组名称
server string = Samba Server
主机说明
netbios name = SMBServer
在网络中的netbios名称,如果没有设定,预设值为HOSTNAME
hosts allow = 192.168.1. 192.168.2. 127.
设定哪些ip地址可访问主机
security = user
samba的安全级别,从低到高有四级:share/user/server/domain
share: 任何用户都可以访问服务器上的资源,无须帐号
user: 需要用户名和密码进行验证
server: 帐号验证交给另外一个服务器,如交给另一台NT服务器.
如果递交失败,就退到user安全级.
domain: 这个安全级别要求网络上存在一台Windows的主域控制器,samba将帐号递交
给该服务器验证.
user/server/domain要求用户在本地linux机器上也有系统帐户,否则不能访问.
这里只简单介绍一下share/user的用法,详悉设定请参看附录
encrypt passwords = yes
使用加密密码
smb passwd file = /etc/samba/smbpasswd
存放samba帐户密码的文件
local master = yes
samba服务器可以成为本地主浏览器
os level = 33
samba服务器的管理等级
domain master = yes
该服务器成为域浏览器
preferred master = yes
该服务器成为工作组中的首要主浏览器
#============================ Share Definitions ==============================
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
create mode = 0664
directory mode = 0775
上面是用户家目录的设置
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
打印机设定
[document]
comment = daweicheng's document
path = /tmp/document
read only = yes
public = yes
[samba user guest]
comment = guest
path = /tmp/samba
read only = no
guest account = guest
简单介绍一下这里的几个参数:
comment=xxx
共享注释,即共享时对方主机能够看到的文件夹名称
path=/xxx/.../xxx/
共享的目录
read only= yes
只读属性设定
public = yes
公开属性,任何人可以看见该资源,无须帐号
guest account = xxx
访问者的帐户名
这里的参数很容易理解,所以不一一列举了,详细请看附录
如果你希望任何人都可访问共享资源,需要将Global Settings的安全级设定为:
security = share
共享目录参数需要:
public = yes
如果希望某些目录只有特定的用户访问,则要将Global Settings的安全级应设定为:
security = user
共享目录参数需要:
guest account = xxx
这个xxx用户(下例中是NewUser)是用useradd和smbpasswd创建的:
添加samba用户:
useradd NewUser
设定NewUser的samba密码:
smbpasswd -a NewUser
使NewUser可以使用samba服务:
smbpasswd -e NewUser
testparm可以验证/etc/samba/smb.conf的有效性,回车后会显示samba的参数设定
设定无误后,重启smb服务,并打开iptables中的tcp 139端口:
在/etc/sysconfig/iptables中加入:
#smb(samba)
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 139 --syn -j ACCEPT
(加入的位置在REJECT规则之前)
然后service iptables restart
重启iptables服务
查看其他主机的共享资源:
smbclient -L WindowsHostName
此处WindowsHostName就是对方的windows主机名
smbclient //WindowsHostName/ShareName
可以访问对方主机上的ShareName共享文件夹
也可以是:
smbclient //xxx.xxx.xxx.xxx/D$
xxx.xxx.xxx.xxx表示对方的ip,D$是对方主机D盘的默认共享名称
如果访问的资源需要用户名和密码,可以加入-U参数,如:
smbclient //xxx.xxx.xxx.xxx/D$ -U UserName
然后按提示输入密码,登录后会得到一个提示符,有些类似于命令行方式的ftp登录.
挂载共享驱动器:
可以用smbmount或者mount命令
smbmount的例子:
smbmount //WindowsHostName/ShareName /mnt
这样就将ShareName下的内容挂载在/mnt下了
也可以用mount命令,例子:
mount -t smbfs -o username=xxx //xxx.xxx.xxx.xxx/D$ /mnt/
如果不正确显示中文,可以在-o参数后加入codepage=936,iocharset=cp936
即:
mount -t smbfs -o username=xxx,codepage=936,iocharset=cp936 //xxx.xxx.xxx.xxx/D$ /mnt/
卸载共享目录的命令是umount
在windows中访问samba服务器,可以用网上邻居
或者在"运行"中直接输入xxx.xxx.xxx.xxx即可
配置samba也可用redhat-config-samba或SWAT
使用SWAT需要先设置一下:
将/etc/xinetd.d/swat中的disable = yes设定为disable = no
service xinetd restart
重启xinetd服务
/sbin/chkconfig swat --level 35 on
在运行级3,5下让swat服务开机自动加载
最后,执行chkconfig --list | grep swat
swat : on表示swat服务已经开启了
在web浏览器中输入
以root身份进入配置界面,就可以对smb.conf进行设置了.