全部博文(404)
分类: LINUX
2008-12-19 14:02:49
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进行设置了. |