Samba是一种自由软件包,用来让Unix系统的操作系统与微软Windows操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网络协定做连结。和windows上的网上邻居原理是一样的。通过SMB协议可以实现资源共享及打印机共享。Samba是Windows与Unix系统OS(Operating System的缩写,操作系统:windows、linux、Unix、Mac等)之间搭建起的一座桥梁,可以实现资源共享,可以像FTP这样使用。
SAMBA的工作原理:
步骤1:协议协商
步骤2:建立连接
步骤3:资源共享
步骤4:断开连接
Samba服务主要安装包为前三个安装包:
samba-
2.2.7a
-7.9.0.i386.rpm //Samba的服务端软件(第一张镜像盘)
samba-client-
2.2.7a
-7.9.0.i386.rpm //Samba客户端软件(第一张镜像盘)
samba-common-
2.2.7a
-7.9.0.i386.rpm //包括Samba服务器和客户端都需要的文件(第一张镜像盘)
samba-swat-
2.2.7a
-7.9.0 //Samba的WEB配置工具(第一张镜像盘)
redhat-config-samba-
1.0.4
-1.noarch.rpm //Samba的GUI配置工具(第一张镜像盘)
samba-swat-
2.2.7a
-7.9.0.i386.rpm //Samba的Web配置工具(在第三张镜像盘)
samba的主配置文件是/etc/samba/smb.conf
[root@localhost root]# rpm -qa|grep samba
//显示是否安装的samba服务
如果没有安装,“主菜单”--“系统设置”--“添加/删除应用程序”--“打开软件包”--“windows 文件服务器”--“更新”,或安装linux第三块镜像盘中的rpmdb辅助安装包,然后切换到第一张linux镜像盘,用mount /dev/cdrom /mnt/cdrom命令将第一张镜像盘挂载,安装samba主程序包,samba-client客户端软件包,还有samba的工具包samba-common.用,#rpm –ivh –aid samba*.rpm。如果安装samba所需的依赖软件包都辅助安装了,就不用一个一个找依赖包数据包安装上去,才安装软件包了。一次性安装。
[root@localhost root]# smb
//安装好后,samba服务端及客户端工具也安装上去了,输入smb按两次Tab键就会弹出以smb开头的工具出来。这些工具都存放在/usr/bin目录中。
smbadduser smbcontrol smbmount smbspool smbumount
smbcacls smbd smbpasswd smbstatus
smbclient smbmnt smbprint smbtar
[root@localhost root]# service smb start
//启动samba服务可以上面的命令启动,也可以在主菜单--系统设置--服务器设置--服务--在smb前打勾--开始--启动samba服务,重新启动服务时service smb restart命令
[root@localhost root]# ls -l /usr/sbin |grep mbd
//显示两个超级用户服务器,是Samba的核心两个守护进程,一个是nmbd,一个是smbd,在服务器启动到停止期间持续的运行。Smbd负责监听139TCP端口,nmdb负责监听137TCP和137UDP端口。可以在/etc/samba/smb.conf主配置文件中了解smbd和nmbd全部配置信息,smbd进程的主要作用是处理来到的SMB数据包,为使用该数据包的资源与Linux协商,而nmbd进程使得其他主机(或工作站)能浏览Linux服务器。
-rwxr-xr-x 1 root root 632276 2003-03-14 nmbd
-rwxr-xr-x 1 root root 1794708 2003-03-14 smbd
[root@localhost root]# pstree |grep mbd
//查看服务器是否启动
|-nmbd
|-smbd
[root@localhost root]# pgrep smbd
//查看smbd是否运行
[root@localhost root]# pgrep nmbd
//查看nmbd是否运行
[root@localhost root]# netstat -tlnp|grep smb
//查看smb的139端口和445端口是否被防火墙封掉,只有一139个也行了
tcp 0 0
0.0.0
.0:139
0.0.0
.0:* LISTEN
9193/smbd
[root@localhost root]# iptables –F
//如果不懂开放端口,就用上面的命令清楚防火墙规则,我也是新手。呵呵。或用#/sbin/iptables –F命令清除是一样效果的。
查看
windows xp
的
IP
配置
,
开始
--
运行
(WIN+R)--cmd --ipconfig/all
[root@localhost root]# netconfig
//用netconfig网络配置工具进行配置,如果你不想这样配置也可以用vi 打开编辑/etc/sysconfig/network-scripts/ifcfg-eth0配置文件,
DEVICE=eth0 //网卡设备别名
ONBOOT=yes //重启系统时启动该服务
BOOTPROTO=static //使用静态IP类型
IPADDR=172.19.22.85 //IP地址是172.19.22.85
NETMASK=255.255.255.0 //子网掩码是255.255.255.0
GATEWAY=172.19.22.254 //网关IP是172.19.22.254
BROADCAST=172.19.22.255 //网络的广播地址.
NETWORK=172.19.22.85 //网络的初始地址
USERCTL=no//非root用户没有控制设备的权限
PEERDNS=no //dhcp类型一般都默认为yes,让服务器修改/etc/resolv.conf文件.静态默认为no
TYPE=Ethernet //以太网类型
按Esc,然后按:wq保存退出.
//提示是否进行网络设置,点击yes
不要选择Use dynamic IP configuration这是自动获取IP,要设置我们想要的IP 地址,及子网掩码。IP address:172.19.22.85,netmask:255.255.255.0网关和主DNS服务不用到先不设置用tab建切换到OK,回车。
[root@localhost root]# service network restart
//重新启动网络服务器
[root@localhost root]# ifconfig
//用inconfing命令查看是否配置成功。
[root@localhost root]# ping -c 4 172.19.22.84
//网络是可以ping通的,ping 加一个选项c,跟参数4,意思是发送4次数据包。到指定的主机中。返回的信息显示是通的
//在windows xp创建一个文件夹,如:在F盘创建一个windows,在windows文件夹,并设为共享,设置共享名为share,共享的文件夹其实为windows,然后再windows文件夹中创建一个linux.txt文件,如果不能设置共享,就要安装网络向导了,然后关掉防火墙。
现在我们开始在linux下借助于smbmount命令来实现网络驱动器映射,具体命令是:
smbmount //windowsHostName/ShareName /mnt/smbdir -U administrator
说明:此处的sharename指代windows共享目录名称,smbdir指代挂载点名称,U指代登陆windows系统的用户名,administrator指代登陆windows主机下的共享文件夹sharename映射为/mnt/smbdir.目录具体步骤是:
在实现网络驱动映射前,首先在linux下建个文件夹:
smbmount //windowsHostName/ShareName /mnt/smbdir -U administrator
说明:此处的sharename指代windows共享目录名称,smbdir指代挂载点名称,U指代登陆windows系统的用户名,administrator指代登陆windows主机下的共享文件夹sharename映射为/mnt/smbdir.目录具体步骤是:
在实现网络驱动映射前,首先在linux下建个文件夹:
[root@localhost root]# mkdir -p /mnt/linux
//在/mnt/目录下建一个名为linux的目录挂载点,如果/mnt不存在,就先创建一个/mnt目录在建一个linux目录,如果/mnt存在,就直接建linux目录。这就是mkdir 带一个参数-p的作用。
[root@localhost root]# smbmount //172.19.22.84/share /mnt/linux -U administrator
//用smbmount挂载工具挂载windows的共享目录到,/mnt/linux目录中,如果windows用户没有设置密码,直接回车。如果设置密码,输入windows登陆用户密码,回车会行了。
[root@localhost root]# ls -l /mnt/linux/
//显示/mnt/linux目录下是否有linux.txt文件
[root@localhost root]# smbclient -L //172.19.22.84
//smbmount是samba的Linux的客户端,查看windows的共享资源
本文转自 chen138 51CTO博客,原文链接:http://blog.51cto.com/chenboqiang/297083,如需转载请自行联系原作者