windows机器: 

IP:192.168.1.1601 

机器名:daimin-24dc73d3 

共享文件夹:c:/sbmshare 


linux机器: 

IP:192.168.160 


1、安装配置 

需安装所有samba相关的rpm包 

samba daemon samba服务器的主软件包 

samba-client samba客户端工具 

samba-common samba相关的工具和库文件包 

samba-swat samba本机基于web的图形化samba配置工具 


#rpm -ivh samba*.rpm然后回车即可完成安装 

安装好后检查软件包是否安装 

#rpm -qa samba 

如果安装了就会返回软件的包名,例如 

[root@localhost ~]# rpm -qa samba* 

samba-common-3.0.10-1.4E.2 

samba-3.0.10-1.4E.2 

samba-client-3.0.10-1.4E.2 

samba-swat-3.0.10-1.4E.2 


2、相关命令的学习 

smbtree 

作用:显示局域网种的所有主机的共享列表 

用法:smbtree [-b](广播)[-D](域或工作组名)[-U username%password] 

默认会使用当前用户搜索主机 

[root@localhost ~]# smbtree -b 

Password: 

WORKGROUP 

  //DAIMIN-24DC73D3 

MYGROUP 

  //LOCALHOST Samba Server 

  //LOCALHOST/ADMIN$ IPC Service (Samba Server) 

  //LOCALHOST/IPC$ IPC Service (Samba Server) 

  //LOCALHOST/sharename Share a directory 


nmblookup 

作用:显示一台主机的 netbios主机ip地址 

[root@localhost ~]# nmblookup daimin-24dc73d3 

querying daimin-24dc73d3 on 192.168.1.255 

192.168.1.101 daimin-24dc73d3<00> 


[root@localhost ~]# nmblookup /* 

querying * on 192.168.1.255 

192.168.1.160 *<00> 

192.168.1.101 *<00> 



smbclient 

作用:显示/登陆局域网中的共享主机 

用法:smbclient -L host -U username%passwd 

  smbclient //host/share 

下面试验:如果host是IP的话,就会报session request to 192 failed (Called name not present)错误,但是也显示了windowns下的sbmshare共享文件 

[root@localhost opt]# smbclient -L //192.168.1.101/ -U administrator --#以管理员身份显示192.168.1.101 xp主机共享内容 

Password: <--输入主机管理员密码回车 

Domain=[DAIMIN-24DC73D3] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager] 


  Sharename Type Comment 

  --------- ---- ------- 

  E$ Disk IPC$ IPC D$ Disk smbshare Disk 

  F$ Disk ADMIN$ Disk C$ Disk session request to 192.168.1.101 failed (Called name not present) 

session request to 192 failed (Called name not present) 

Domain=[DAIMIN-24DC73D3] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager] 


  Server Comment 

  --------- ------- 


  Workgroup Master 

  --------- ------- 

如果host是机器名的话,就不会报上面的错误,也显示了windowns下的sbmshare共享文件 

[root@localhost opt]# smbclient -L //daimin-24dc73d3/ -U administrator --#以管理员身份显示192.168.1.101 xp主机共享内容 

Password: <--输入主机管理员密码回车 

Domain=[DAIMIN-24DC73D3] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager] 


  Sharename Type Comment 

  --------- ---- ------- 

  E$ Disk IPC$ IPC D$ Disk smbshare Disk 

Domain=[DAIMIN-24DC73D3] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager] 

  F$ Disk ADMIN$ Disk C$ Disk 

  Server Comment 

  --------- ------- 


  Workgroup Master 

  --------- ------- 

    

看到daimin-24dc73d3主机存在一个smbshare共享目录,那我们现在进入这个目录,如下命令 

[root@localhost opt]# smbclient //192.168.1.101/smbshare -U administrator 

Password: 

Domain=[DAIMIN-24DC73D3] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager] 

smb: /> ls 

  . D 0 Sat Dec 13 09:20:47 2008 

  .. D 0 Sat Dec 13 09:20:47 2008 

  samba-3.0.10-1.4E.2.i386.rpm A 13939367 Tue Aug 30 10:24:11 2005 

  samba-client-3.0.10-1.4E.2.i386.rpm A 2673486 Tue Aug 30 10:24:12 2005 

  samba-common-3.0.10-1.4E.2.i386.rpm A 5287432 Tue Aug 30 10:24:12 2005 

  samba-swat-3.0.10-1.4E.2.i386.rpm A 6853830 Tue Aug 30 10:24:14 2005 


  40958 blocks of size 2097152. 16290 blocks available 

注意出现smb:/>说明登陆成功了(风格比较象ftp),可以输入help命令查看smb客户端工具的命令集:) 

smb: /> help 

? altname archive blocksize cancel 

case_sensitive cd chmod chown del 

dir du exit get hardlink 

help history lcd link lowercase 

ls mask md mget mkdir 

more mput newer open print 

printmode prompt put pwd q 

queue quit rd recurse reget 

rename reput rm rmdir setmode 

stat symlink tar tarmode translate 

vuid logon ! 

输入q推出smb客户端。 



smbmount 

作用:远程挂载共享目录 

用法:smbmount //host/share /mountpoint -o username=username%passwd 

例如:要将daimin-24dc73d3主机的smbshare共享目录挂载到本机的/mnt下,命令如下 

smbmount //daimin-24dc73d3/smbshare /mnt/ -o username=administrator%coffey 

(也可以写成:mount -t smbfs -o username=administrator%coffey //daimin-24dc73d3/smbshare /mnt/) 

稍等就挂载好,然后就能像访问本地目录一样访问了,ls /mnt 看看 

如果要卸载共享目录那就用smbumount /mountpoint(umount /mountpoint也可以)即可 

例如:卸载刚才挂载的目录smbumount /mnt(也可以umount /mnt)回车就okey了。 


smbtar 

作用:远程打包共享主机中的文件即远程备份网上邻居种的文件(需要稍作修改) 

用法:smbtar -s server -u user -p password -x sharename -t output_file 

这样照成如果一个共享目录匿名没有权限,那打包的时候打包文件大小为0kb。 

解决方法:只要用编辑器打开/usr/bin/smbtar然后移动到该文件的倒数第二行,将里面的-N参数去掉即可。即:改为 

eval $SMBCLIENT "'$server//$service'" "'$password'" -U "'$username'" / 

-E $log -D "'$cdcmd'" ${clientargs} /,然后保存退出即可。以后的版本貌似修复了这个bug :) 


smbtar -s 192.168.101 -u administrator -p coffey -x smbshare -t smbshare.tar 

上述命令执行之后,在linux系统下的命令执行当前路径下会产生smbshare.tar文件 


 参考网页: 

 http://www.centospub.com/bbs/archiver/?tid-1307.html 
 http://www.lslnet.com/linux/dosc1/28/linux-226351.htm 



3、在Windows中以及在linux中访问Linux Samba服务器共享文件的配置 

第一步: 更改smb.conf 

配置一个让所有用户可以读写一个Samba 服务器共享的一个文件夹 

[root@localhost ~]# cd /etc/samba 

[root@localhost samba]# mv smb.conf smb.confBAK 

然后我们来重新创建一个smb.conf文件 

[root@localhost samba]#touch smb.conf 

然后我们把下面这段写入smb.conf中; 

[global] 

workgroup = WORKGROUP 

netbios name = daimin-24dc73d3 

server string = Linux Samba Server TestServer 

security = share 


[linuxsir] 

  path = /home/share 

  writeable = yes 

  browseable = yes 

  guest ok = yes 


注解: 

[global]这段是全局配置,是必段写的。其中有如下的几行; 

workgroup 就是Windows中显示的工作组;在这里我设置的是LINUXSIR (用大写); 

netbios name 就是在Windows中显示出来的计算机名; 

server string 就是Samba服务器说明,可以自己来定义;这个不是什么重要的; 

security 这是验证和登录方式,这里我们用了share ;验证方式有好多种,这是其中一种;另外一种常用的是user的验证方式;如果用share呢,就是不用设置用户和密码了; 


[linuxsir] 这个在Windows中显示出来是共享的目录; 

path = 可以设置要共享的目录放在哪里; 

writeable 是否可写,这里我设置为可写; 

browseable 是否可以浏览,可以;可以浏览意味着,我们在工作组下能看到共享文件夹。如果您不想显示出来,那就设置为 browseable=no 

guest ok 匿名用户以guest身份是登录; 


第二步:建立相应目录并授权; 

[root@localhost ~]# mkdir -p /home/share 

[root@localhost ~]# id nobody 

uid=99(nobody) gid=99(nobody) groups=99(nobody) 

注释:关于授权nobody,我们先用id命令查看了nobody用户的信息,发现他的用户组也是nobody,我们要以这个为准。有些系统nobody用户组并非是nobody ; 


[root@localhost ~]# chown -R nobody:nobody /home/share 


第三步:重新启动smbd和nmbd服务器; 

[root@localhost home]# /etc/init.d/smb restart 

Shutting down SMB services: [ OK ] 

Shutting down NMB services: [ OK ] 

Starting SMB services: [ OK ] 

Starting NMB services: [ OK ] 


--查看smbd所占用的端口是139和445 

[root@localhost home]# netstat -tlnp |grep smb 

tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 10441/smbd 

tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 10441/smbd 

[root@localhost home]# 


第四步:查看smbd进程,确认Samba 服务器是否运行起来了; 

[root@localhost home]# pgrep smbd 

10441 

10442 

[root@localhost home]# pgrep nmbd 

10446 


第五步:访问Samba 服务器的共享; 

在Linux 中您可以用下面的命令来访问; 

smbclient -L //192.168.1.160 

Password: 注:直接按回车 

Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.10-1.4E.2] 


  Sharename Type Comment 

  --------- ---- ------- 

  linuxsir Disk 

  IPC$ IPC IPC Service (Linux Samba Server TestServer) 

  ADMIN$ IPC IPC Service (Linux Samba Server TestServer) 

Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.10-1.4E.2] 


  Server Comment 

  --------- ------- 

  DAIMIN-24DC73D3 Linux Samba Server TestServer 


  Workgroup Master 

  --------- ------- 

  WORKGROUP 

显示该共享文件夹下的文件: 

[root@localhost init.d]# smbclient //192.168.1.160/linuxsir -U root 

Password: 

Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.10-1.4E.2] 

smb: /> ls 

  . D 0 Sat Dec 13 15:30:53 2008 

  .. D 0 Sat Dec 13 08:20:28 2008 

  daimin.txt 31 Sat Dec 13 15:30:53 2008 


  40304 blocks of size 262144. 28866 blocks available 

    

在Windows中,您可以用下面的办法来访问; 

//192.168.1.160/linuxsir 

结果显示:有一个daimin.txt文件 


参考网页: 

http://www.linuxsir.org/main/?q=node/158#3.1