刚在虚拟机装完Linux操作系统,就有产生了这样的想法:“linux与windows之间如何互联呢?以及用户如何更方便地彼此之间共享数据和打印机设备?”今天,我们可以通过Samba服务器就可以地实现这一功能。它能够使Windows用户通过网络邻居等熟悉方式来访问Linux上的共享资源,而linux用户通过SMB客户端程序访问Windows下的资源。
Samba服务前准备查看RHEL(默认没有安装)是否安装Samba服务以及安装了何种版本,命令如下:
[root@localhost ~]# rpm -qa | grep samba
samba-common-3.0.10-1.4E
samba-3.0.10-1.4E #samba服务端组件
system-config-samba-1.2.21-1 #samba图形配置工具
samba-client-3.0.10-1.4E #samba客户端组件
如果没有,拿出RHEL安装盘,找到相应的组件(上面的rpm组件)进行安装
[root@localhost ~]# rpm -ivh samba服务RPM组件路径
安装完成后,还无法使Linux服务器与Windows客户端正常互联。要使Samba正常、安全地提供服务,还需要设置/etc/samba/smb.conf这个配置文挡。
在进行配置工作前,需要开启服务的相应端口(netbios,即windows 网上邻居的 通信协议)。
[root@localhost ~]# cat /etc/services | grep netbios
netbios-ns 137/tcp # NETBIOS Name Service
netbios-ns 137/udp
netbios-dgm 138/tcp # NETBIOS Datagram Service
netbios-dgm 138/udp
netbios-ssn 139/tcp # NETBIOS session service
Samba服务相关文件1)samba服务密码文件(/etc/samba/smb.conf)
samba服务安装完成后,这个文件默认下是不存在的。我们可以通过smbpasswd 来创建相应的用户名和密码
smbpasswd -a linux用户名(访问权限设定)
PS:samba服务与linux使用不同的密码文件。因此,无法用linux服务下的帐号来登录到samba服务。
通过以下命令可以查看到samba密码文件
[root@localhost ~]# cat /etc/samba/smbpasswd
redhat:500:570CE399DA1412ABAAD3B435B51404EE:B9D2D4955B330B
503CC792EB6A55BB1F:[U ]:LCT-4911A2AD:
user1:501:570CE399DA1412ABAAD3B435B51404EE:B9D2D4955B330B5
03CC792EB6A55BB1F:[U ]:LCT-4911B0D4:
2)/etc/samba/smbusers
该文件是记录用户映射关系的
3)samba服务日志文件
samba服务的日志文件默认安装在/var/log/samba/目录中。因此,可以根据日志文件来查看服务的运行状态以及用户的访问情况
Samba服务主要配置因为,samba配置选项很多,我选出一些常用配置来说明
[root@localhost ~]# cat /etc/samba/smb.conf
#== Global Settings(全局设置)======
[global]
workgroup = MSHOME #群组名称彧者工作组域名
server string = Samba Server #Samba服务的简要说明
hosts allow = 192.168.0. 192.168.2. 127.
#访问权限设定(允许192.168.0.0/24,192.168.2.0/24,127.0.0.0/8,中间需要用空格彧者逗号隔开)
printcap name = /etc/printcap #打印机的配置文挡
load printers = yes #是否加载打印机设备
; guest account = pcguest
#在这里可以设置guest帐号名,而设置的帐号名能够在/etc/passwd文件找得到(在此建用户名),如果未指定,使用“nobody”来处理。默认是不使用的
log file = /var/log/samba/%m.log #日志存挡文件
security = user
#安全级别有5种.1)share 这种安全级别是最低的,不需要用户名和密码来访问samba服务 2)user(默认) 在访问samba服务,需要帐号来验证 3) server 这个也需要帐号来登录,但密码是别外一台服务器 4)domain 5)ads
; password server = <NT-Server-Name>
interfaces = 192.168.0.253 #有多网卡时,需要设置监听的网卡
;interfaces = eth1(网卡参数彧者IP地址)
WINS Server
; wins support = yes
; wins server = w.x.y.z
; wins proxy = yes
#==== Share Definitions (共享目录)======
idmap uid = 16777216-33554431
idmap gid = 16777216-33554431
template shell = /bin/false
winbind use default domain = no
[homes] #用户的主目录
comment = Home Directories #注释说明
browseable = no #是否允许浏览别人主目录
writable = yes #是否执行写操作
[share] #测试目录
comment = Samba Share
browseable = yes
writable = no
path = /samba/share #共享路径
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
# Set public = yes to allow user 'guest account' to print
guest ok = no
writable = no
printable = yes
当配置完成后,需要重新启用samba服务
[root@localhost ~]# /etc/init.d/smb restart #重新启动Samba服务
[root@localhost ~]# service smb start #启动Samba服务
[root@localhost ~]# /etc/init.d/smb stop #停止Samba服务
我们在Windows客户端(192.168.0.100)下测试。linux:IP 192.168.0.1
因为,我配置的时候,开启了验证功能
哈哈,可以在windows下查看linux共享资源
如果,要在Linux下查看windows下共享资源。首先,要安装samba-client客户端组件。查看是否被安装
[root@localhost ~]# rpm -q samba-client
samba-client-3.0.10-1.4E #客户端组件
查看查看windows(192.168.0.100)下共享资源列表
[root@localhost ~]# smbclient -L //192.168.0.100 -U anonymous
WARNING: no network interfaces found
Password:
Domain=[ZHOUZHIWEI] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
Sharename Type Comment
--------- ---- -------
share Disk
session request to 192.168.0.100 failed (Called name not present)
session request to 192 failed (Called name not present)
Domain=[ZHOUZHIWEI] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
Server Comment
--------- -------
Workgroup Master
--------- -------
查看共享文挡,显示如下
今天写的文章,个人感觉上有点迟钝(刚考完试,很可能是太累的缘故吧)。也不知道有没有错误?如发现错误的地方,请指正。谢谢!