原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://chenbin.blog.51cto.com/945033/346188
SAMBA服务的配置。
SAMBA简介
NFS只能实现在linux和unix系统之间实现文件共享,而CIFS(公共因特网文件系统)只能实现windows系统之间的文件共享。那么linux或unix系统怎么和windows系统之间共享文件呢?这就要用到SAMBA服务器了,SAMBA服务器能真正实现在不同主机、不同系统之间的文件共享。
Samba核心有两守护进程:
smbd:监听139端口,实现主机之间的文件和打印机的共享。
nmbd:监听137,138端口,实现主机之间可以利用NetBios名互相访问。
SAMBA安装
配置IP地址:
[root@rhel3 ~]# ifconfig eth0 192.168.100.30 netmask 255.255.255.0
安装软件:
[root@rhel3 ~]# rpm -ivh /misc/cd/Server/samba-common-3.0.33-3.7.el5.i386.rpm
提供samba的配置文件和语法检验工具,服务器和客户端都要安装。
[root@rhel3 ~]# rpm -ivh /misc/cd/Server/samba-client-3.0.33-3.7.el5.i386.rpm
客户端软件。
[root@rhel3 ~]# rpm -ivh /misc/cd/Server/perl-Convert-ASN1-0.20-1.1.noarch.rpm //在安装samba服务器软件时要先安装此软件。
[root@rhel3 ~]# rpm -ivh /misc/cd/Server/perl-Convert-ASN1-0.20-1.1.noarch.rpm //安装samba前要装上这个软件。
[root@rhel3 ~]# rpm -ivh /misc/cd/Server/samba-3.0.33-3.7.el5.i386.rpm
服务器端软件。
[root@rhel3 ~]# rpm -ivh /misc/cd/Server/xinetd-2.3.14-10.el5.i386.rpm
安装下面的网页配置软件时要先把xinetd软件先装上。
[root@rhel3 ~]# rpm -ivh /misc/cd/Server/samba-swat-3.0.33-3.7.el5.i386.rpm
samba的WEB配置。这个最后安装。
SAMBA服务配置文件详解。
[global]
# ----------------------- Network Related Options -------------------------
workgroup = MYGROUP
设置工作组名称。
server string = Samba Server Version %v
设置服务器描述。
; netbios name = MYSERVER
设置NetBios名称。
; interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
后面可以跟接口或IP地址,如果服务器不想用默认的IP地址时或想用多个IP地址时设置 此项。
; hosts allow = 127. 192.168.12. 192.168.13.
设置允许访问主机的IP地址。默认注释,表示允许所有主机访问。
# --------------------------- Logging Options -----------------------------
; log file = /var/log/samba/%m.log
设置日志文件的存放位置,服务器会每个用户保存一个日志文件,%m表示使用用户访问的NetBios名来命令日志文件。
; max log size = 50
指定日志文件的大小,单位(KB)
# ----------------------- Standalone Server Options ------------------------
security = share
设置Samba共享安全级别:
share: 共享级别,服务器不对客户机进行身份验证。
user: 用户级别,服务器对客户机进行身份验证。
server: 服务器级别,Samba服务器必须通过另一台服务器对客户机进行身份验证。如果设置为此值,需另加一行:password Server = IP才行。
domain: 域级别,Samba服务器要通过windows server的域控制器对客户机进行身份验证,同样,如果设置为此值,需另加一行:password Server = IP才行。
passdb backend = tdbsam
指定Samba服务器对用户帐户和密码的管理方式。一般默认即可。
# ----------------------- Browser Control Options ----------------------------
; local master = no
如果不想Samba服务器成为局域网内的主浏览服务器,此项选择no.
; os level = 33
设置刻服务器在局域网内访问的优先级。
; preferred master = yes
使Samba启动时选择一个本地浏览器,并给它获得选择较高的机会。
#----------------------------- Name Resolution -------------------------------
; wins support = yes
是否支持WINS服务器,Samba可以成为WINS服务器,也可以成为WINS客户端,但不能两者兼得。
; wins server = w.x.y.z
WINS服务器地址。
; wins proxy = yes
表示一个非WINS用户通知Samba响应名称解析,本身不为客户端提供查询。
; dns proxy = yes
同上。
# --------------------------- Printing Options -----------------------------
load printers = yes
设置是否允许打印机共享,并加裁打印机。
cups options = raw
指定打印机使用的方式。
; printcap name = /etc/printcap
设置打印机配置文件的位置。
; printcap name = lpstat
; printing = cups
设置打印系统类型,一般默认。只有在打印系统不是标准系统时才指定。
#============================ Share Definitions ================
[homes]
comment = Home Directories
描述信息。
browseable = no
设置其他用户是否可以浏览此共享文件。
writable = yes
设置此用户是否可写。
valid users = %S
设置可访问的用户和组。多个用户用逗号分开,指定组时要在组名前加@。
invalid users = 用户名/组名
设置不能访问的用户和组,用法同上。
Samba定义的变量:
%S 当前服务器名。
%P 当前服务器的根目录。
%u 当前服务器的用户名。
%g 当前用户所在的主工作组。
%U 当前对话的用户名。
%G 当前对话的用户我主工作组。
%H 当前服务器用户的home目录。
%v Samba服务器的版本号。
%h 运行Samba服务器的主机名。
%m 客户机的NetBios名。
%L 服务器的NetBios名。
%M 客户机的主机名。
%N NIS服务器名。
%p NIS服务器的Home目录。
%R 所采用的服务器等级。
%d 当前服务进程的ID。
%a 客户机和结构。
%I 客户机的IP。
%T 当前日期和时间。
SAMBA基于共享的简单配置。
编辑配置文件:
[root@rhel3 ~]# vi /etc/samba/smb.conf
# ----------------------- Standalone Server Options ------------------------
security = share //不需要用户名和密码的共享模式。
passdb backend = tdbsam
下面是共享目录和权限的设置:(在最后添加)
[share]
comment = linux share
path = /rhel3
public = yes
writable = yes
printable = no
write list = +staff
如果共享目录是复制例子的,别忘了把前面的;去掉哦!如果还不能访问那就是防火墙在捣乱了。
[root@rhel3 ~]# mkdir /rhel3
[root@rhel3 ~]# touch /rhel3/linux.txt
[root@rhel3 ~]# vi /rhel3/linux.txt
This is linux server!
查看一下文件夹的权限:
[root@rhel3 ~]# ll /
drwxr-xr-x 2 root root 4096 Jun 8 21:56 rhel3
因为在共享时设置的是可写的,而在这里除了root用户其他人是没有权限写入,所有还是不能写入,修改一下:
[root@rhel3 ~]# chmod 777 /rhel3
[root@rhel3 ~]# ll /
drwxrwxrwx 2 root root 4096 Jun 8 21:56 rhel3
权限已经修改完成。
[root@rhel3 ~]# service smb restart
现在来测试一下:
windows系统在运行里输入:
linux系统:
[root@rhel2 ~]# mount //192.168.100.30/share /mnt //mount 后面跟主机名或IP地址,后面是共享名。最后跟挂载点。
Password: //这里不需要输入密码。
[root@rhel2 ~]# ls /mnt
liunx.txt
使用smbclient:
[root@rhel2 ~]# smbclient //192.168.100.30/share //smbclient后面跟共享主机名或IP地址再加上共享名。
Password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.0.33-3.7.el5]
Server not using user level security and no password supplied.
从这里也可以看到服务器是没有使用身份验证的。
smb: \> help
? altname archive blocksize cancel
case_sensitive cd chmod chown close
del dir du exit get
getfacl hardlink help history lcd
link lock lowercase ls mask
md mget mkdir more mput
newer open posix posix_open posix_mkdir
posix_rmdir posix_unlink print prompt put
pwd q queue quit rd
recurse reget rename reput rm
rmdir showacls setmode stat symlink
tar tarmode translate unlock volume
vuid wdel logon listconnect showconnect
!
这里显示的是一些客户端使用的命令。如:
smb: \> dir
. D 0 Wed Jun 9 14:42:23 2010
.. D 0 Wed Jun 9 14:41:23 2010
liunx.txt 22 Wed Jun 9 14:42:23 2010
61880 blocks of size 65536. 25838 blocks available
因为有写的权限,所以写个文件试试:
smb: \> mkdir rhel2
smb: \> dir
. D 0 Wed Jun 9 15:43:18 2010
.. D 0 Wed Jun 9 14:41:23 2010
liunx.txt 22 Wed Jun 9 14:42:23 2010
rhel2 D 0 Wed Jun 9 15:43:18 2010
61880 blocks of size 65536. 25838 blocks available
没问题,可以写入。下载文件:
smb: \> get liunx.txt /share.txt //get后面第一个参数是远程服务器的文件名,第二个参数是保存到本地的文件名。
getting file \liunx.txt of size 22 as /share.txt (0.2 kb/s) (average 0.2 kb/s)
smb: \> q //退出
[root@rhel2 ~]# ls /
bin dev lib misc opt sbin srv usr
boot etc lost+found mnt proc selinux sys var
chenbin home media net root share.txt tmp
[root@rhel2 ~]# cat /share.txt
This is linux server!
没问题,关于每个命令的使用这里就不一一演示,详细说明可以使用帮助。命令如下:
[root@rhel2 ~]# man smbclient
SAMBA基于用户的简单配置。
接着上面的做:
修改配置文件:
# ----------------------- Standalone Server Options ------------------------
security = user
共享目录也就不改了。因为是基于用户的共享,所以这里需要建立用户。
[root@rhel3 ~]# useradd samba //首先要建立本地用户。
[root@rhel3 ~]# passwd samba //为本地用户创建密码。(如果只是添加Samba用户,这步可以省略。)
Changing password for user samba.
New UNIX password:
BAD PASSWORD: it is too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@rhel3 ~]# smbpasswd -a samba //创建Samba用户。创建的用户必须也存在于本地用户数据库中。
New SMB password:
Retype new SMB password:
Added user samba.
[root@rhel3 ~]# service smb restart
可以测试一下samba的配置文件。如下:
测试:
在windows系统下:
因为连接过了,现在连接的话系统不提示输入用户名和密码了,清除一下:在命令提示符下操作:
D:\Users\chenbin>net use //查看远程连接。
会记录新的网络连接。
状态 本地 远程 网络
-------------------------------------------------------------------------------
OK \\192.168.100.30\IPC$ Microsoft Windows Network
OK \\RHEL3\IPC$ Microsoft Windows Network
命令成功完成。
D:\Users\chenbin>net use \\192.168.100.30\IPC$ /delete
\\192.168.100.30\IPC$ 已经删除。
D:\Users\chenbin>net use \\RHEL3\IPC$ /delete
\\RHEL3\IPC$ 已经删除。
再连接:
打开后如下图:
出现输入用户名和密码对话框,输入后确定。
出现了共享文件夹。samba目录是一个用户目录,后面再说明。关于权限问题这里这不测试了。
在windows下为了方便,可以使用网络映射,在本地映射一个网络磁盘,这样只要访问这个磁盘就可以访问共享文件了,也省去了每次输入地址,用户名和密码。如下:
接下来选择一个共享目录:
完成后,在资源管理器里会多出一个Z盘,双击这个磁盘就能访问共享文件了,很方便,如果不想用了,只要在这个磁盘上右击-属性-断开。
接下来在linux系统下测试:
列出共享目录:
连接:
关于用法就不演示了。
本文出自 “放飞梦想” 博客,请务必保留此出处http://chenbin.blog.51cto.com/945033/346188