为了在LINUX 与WINDOWS共享文件,我在虚拟机下架设了samba服务器,以便于实现ARM linux程序调试与开发时把WINDOWS中的文件传输到linux环境中使用。本来想用vmware-tool实现两种环境下文件的共享的,但是由于用vmware-tool
一直无法实现,就配置了samba服务器。由于我的LINUX系统没有安装samba服务器,所以先要安装。以下是我的各个步骤:
(1 ) 安装samba服务器:
#yum install samba
实现在线安装samba服务器,因为是在线安装,所以在安装前要让我的虚拟机可以上网。
(2) sambad 配置文件:
我这里只是简单的配置下实现功能就可以了;配置如下:
#vi etc/samba/smb.conf
然后在配置文件中加入以下内容:
[global]
workgroup = MYGROUP
security = share
[home]
guest ok = share
path = /tmp
read only = yes
其中定义了global和home两部分。workgroup = MYGROUP来设定工作组的名称,security = share设为共享;[home]来设定共享目录的属性:guest ok = share设定允许客人身份的用户登录,path = /tmp则说明共享目录的位置,read only = yes设定共享目录的权限是只读。
(3) 测试配置文件是否有错误:
#testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
这样就说明配置应该没有问题。
(4) 启动samba服务器:
# /etc/rc.d/init.d/smb start
# /etc/rc.d/init.d/nmb start
启动 SMB 服务: [确定]
启动 NMB 服务: [确定]
我用的是 samba-3.2.15版本的服务器,我也不知道smb和nmb 为什么要分别启动。刚开始的时候我一直都不知道,就按网上的资料所说的一样# /etc/rc.d/init.d/smb start启动,但是一直都只见:
启动 SMB 服务: [确定]
而没有:
启动 NMB 服务: [确定]
这一一项出现,找了很多资料都没有办法。然后我就试着查看他们的进程,如下所示:
# ps -eaf|grep nmbd
root 7096 2315 0 09:08 pts/0 00:00:00 grep nmbd
#ps -eaf|grep smbd
root 4057 1 0 07:45 ? 00:00:00 smbd -D
root 4060 4057 0 07:45 ? 00:00:00 smbd -D
root 7115 2315 0 09:09 pts/0 00:00:00 grep smbd
说明此时NMB服务没有启动,我就是试着:
# /etc/rc.d/init.d/nmb start
启动 NMB 服务: [确定]
再查看他们的进程:
# ps -eaf|grep smbd
root 8793 1 0 09:48 ? 00:00:00 smbd -D
root 8795 8793 0 09:48 ? 00:00:00 smbd -D
root 8899 410 0 09:51 pts/1 00:00:00 grep smbd
[root@honghost ~]# ps -eaf|grep nmbd
root 8758 1 0 09:48 ? 00:00:00 nmbd -D
root 8901 410 0 09:51 pts/1 00:00:00 grep nmbd
# ps -eaf|grep smbd
root 8793 1 0 09:48 ? 00:00:00 smbd -D
root 8795 8793 0 09:48 ? 00:00:00 smbd -D
root 8899 410 0 09:51 pts/1 00:00:00 grep smbd
# ps -eaf|grep nmbd
root 8758 1 0 09:48 ? 00:00:00 nmbd -D
root 8901 410 0 09:51 pts/1 00:00:00 grep nmbd
发现两个都启动了。
(5) 监听网络情况:
# netstat -anp|grep smbd
tcp 0 0 :::139 :::* LISTEN 8793/smbd
tcp 0 0 :::445 :::* LISTEN 8793/smbd
# netstat -anp|grep nmbd
udp 0 0 192.168.226.133:137 0.0.0.0:* 8758/nmbd
udp 0 0 0.0.0.0:137 0.0.0.0:* 8758/nmbd
udp 0 0 192.168.226.133:138 0.0.0.0:* 8758/nmbd
udp 0 0 0.0.0.0:138 0.0.0.0:* 8758/nmbd
则他们的监听端口为:139--445--137--138 这四个端口。服务器的IP为192.168.226.133。
(6)建立samba服务器用户:
# useradd smb_user1
# passwd smb_user1
更改用户 smb_user1 的口令 。
新的 UNIX 密码:
无效的密码: 过于简单
重新输入新的 UNIX 密码:
passwd: 所有的身份验证令牌已经成功更新。
# smbpasswd -a smb_user1
New SMB password:
Retype new SMB password:
Added user smb_user1.
以上就是建立samba服务器用户的步骤,这里建立了smb_user1这个用户,注意密码最好多于6位数。
(7)在WINDOWS中访问LINUX的samba服务器:
在开始-》运行-》输入服务器IP地址,即是//192.168.226.133 ;这样就可以看到smb_user1用户的文件了。
(8)在LINUX中访问WINDOWS的共享文件:
在WINDOWS中用网络邻居向导建立一个工作组,工作组名称与LINUX中的相同,也就是smb.conf配置文件中的MYGROUP
;然后就设置你要共享的文件。这样就可用LINUX中终端用命令行访问WINDOWS中共享的文件了。如下:
# smbclient //125.217.32.122/FL2440 -U Usr1
Enter Usr1's password:
Domain=[USR1] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
smb: /> ls
. D 0 Sun Sep 26 01:35:15 2010
.. D 0 Sun Sep 26 01:35:15 2010
Bootloader D 0 Sun Sep 26 01:35:16 2010
Bootloader.zip A 1292346 Sat Dec 19 13:46:52 2009
FL2440-README.txt A 1693 Mon Dec 21 09:50:34 2009
Hardware D 0 Sun Sep 26 01:35:15 2010
Linux D 0 Sun Sep 26 01:34:52 2010
PC机需要安装的驱动程序 D 0 Sun Sep 26 01:34:21 2010
Test D 0 Sun Sep 26 01:34:20 2010
Ucos2 D 0 Sun Sep 26 01:34:20 2010
Wince D 0 Sun Sep 26 01:34:15 2010
实用工具 D 0 Sun Sep 26 01:33:03 2010
实用资料 D 0 Sun Sep 26 01:32:56 2010
实验指导&demo D 0 Sun Sep 26 01:32:36 2010
开发板使用手册.pdf A 3664514 Tue Nov 30 14:29:00 2010
视频教程 D 0 Sun Sep 26 01:31:56 2010
40005 blocks of size 524288. 4343 blocks available
其中,//125.217.32.122为WINDOWS的IP地址,FL2440为要访问的文件名,USR1是我在WINDOWS中建立的用户名,OS=[Windows 5.1]指明访问的操作系统是Windows;用smb: /> ls 列出FL2440中的文件。其他命令和终端中的命令一样。
我接下来就是下载WINDOWS中的文件cross-3.4.1.tar.bz2,如下:
smb: /Linux/linux交叉编译工具链/> get cross-3.4.1.tar.bz2 /home/cross-3.4.1.tar.bz2
getting file /Linux/linux交叉编译工具链/cross-3.4.1.tar.bz2 of size 42745480 as /home/cross-3.4.1.tar.bz2 (13405.1 kb/s) (average 12949.6 kb/s)
其中,get为下载命令,cross-3.4.1.tar.bz2就是远程文件名(这里是WINDOWS中的),/home/cross-3.4.1.tar.bz2则为在Linux中home目录下,并以cross-3.4.1.tar.bz2命名要下载的文件(当然可以用其他名字作为下载的文件名)。
这样就是实现了samba服务器的架设,通过这个服务器的架设,我觉得在Linux环境中,就是要多动手,多思考,这样才会把相关的命令熟练运用。