SAMBA服务器


如果你已经依序一步一步的将你的 Linux 当作主机安装好了,这时,你会不会觉得,Linux 跟你的日常工作的 Windows 计算机的互动不是很好呢?在这两部机器之间的资料互传必须经过 FTP 协议才能传送,真麻烦!不是吗?呵呵!这时,Samba服务器就是你的救星了!使用了Samba服务器可以让你的 Linux 与 Windows 透过『网络上的芳邻』来互传资料,安装了Samba服务器之后,从此,你的资料都可以使用『网络上的芳邻』来传送啰!真好!不是吗?

Samba服务器概念

Samba是用来实现SMB的一种软件,由澳大利亚的Andew Tridgell开发,是一种在Linux(Unix)环境下运行的免费软件。

通过使用Samba,Linux系统可以实现如下功能:

文件服务和打印服务(在Linux和Win95/NT之间系统之间提供打印机和磁盘的共享)

登陆服务器,使用Windows客户能注册到网络上

作为主要域控制器和域中成员的功能

WINS服务器以及浏览功能

支持SSL(Secure Socket Layer)

支持SWAT (Samba Web Administration Tool )

Samba除了支持Linux(Unix)和Win95/NT之外,还支持DOS、IBM OS/2、Macintosh 等操作系统。

SMB概念了解

前文说了,Samba是用来实现SMB的一种软件,咱们在这里在了解一下SMB(Server MessageBlock,服务信息块)。SMB协议可以看作是局域网上的共享文件/打印机的一种协议,它可以为网络内部的其它Windows和Linux机器提供文件系统、打印服务或是其他一些信息。

SMB的工作原理是让NetBIOS(Win95网络邻居通信协议)与SMB这两种协议运行在TCP/IP的通信协议上,且使用NetBIOS

nameserver让用户的Linux机器可以在Windows的网络邻居里被看到,所以就可以和Win95/NT主机在网络上相互沟通,共享文件与服务了。

目前Microsoft正在开发一种新的文件和打印共享协议--CIFS(Common Internet Files

System,通用网络文件协议),该协议支持TCP/IP和DNS等协议,能在www上支持文件和打印共享。在CIFS下服务器实际上是DNS名,由主机名和域名组成。这种变化是从NetBIOS命令结构中分离出来的。目前CIFS还没有得到广泛的应用。现在在Linux和Win95/NT之间的文件共享注意还是SMB和NFS。


在不同操作系统上的实现资源共享,可以借助于一个协议smb(服务信息块)协议,有时也把它称作

cifs(通用的Internet文件系统)协议,以一种客户机和服务器的工作模式运行

协议提供137,138,138,445端口,其中139和445属于tcp端口,主要目的是实现资源共享,137与138

端口做宣告使用


访问方式,

unc路径;

对于网络服务器上的目标文件,可使用“通用命名约定 (UNC)” (UNC:“统一命名约定”地址,用

于确定保存在网络服务器上的文件位置。这些地址以两个反斜线 (\\) 开头,并提供服务器名、共享

名和完整的文件路径。)地址。这些地址以“file:\\”开始并提供服务器名、共享名和文件的完整

路径。例如,“file:\\server\share\path\project file.mpp”是绝对 UNC 地址


在网上邻居里找到

计算机搜索

命令行 net use (将别的计算机共享映射成本地盘符)

      net share (查看网络上有哪些共享)




samba4-swat-4.0.0-55.el6.rc4.i686.rpm是samba服务器的web管理工具,可以进行网页的服务器

管理,端口默认701,有需要的可以安转

SAMBA服务器_cifs

[root@localhost Packages]# pwd

/media/cdrom/Packages


[root@localhost Packages]# yum --disablerepo=\* --enablerepo=c6-media install samba

samba-client



[root@localhost ~]# chkconfig --list |grep samba

[root@localhost ~]# chkconfig --list |grep smb

smb       0:off 1:off 2:off 3:off 4:off 5:off  6:off

[root@localhost ~]# chkconfig --list |grep nmb

nmb        0:off 1:off 2:off 3:off 4:off 5:off 6:off

[root@localhost ~]# service smb start

Starting SMB services:                                     [  OK  ]

[root@localhost ~]# netstat -tupln |grep smb

tcp        0      0 0.0.0.0:139                 0.0.0.0:*                   LISTEN  


  3340/smbd          

tcp        0      0 0.0.0.0:445                 0.0.0.0:*                   LISTEN  


  3340/smbd          

tcp        0      0 :::139                      :::*                        LISTEN  


  3340/smbd          

tcp        0      0 :::445                      :::*                        LISTEN  


  3340/smbd  


[root@localhost ~]# service nmb start

Starting NMB services:                                     [  OK  ]

[root@localhost ~]# netstat -tupln |grep nmb

udp        0      0 192.168.2.255:137           0.0.0.0:*                            


  3384/nmbd          

udp        0      0 192.168.2.199:137           0.0.0.0:*                            


  3384/nmbd          

udp        0      0 0.0.0.0:137                 0.0.0.0:*                            


  3384/nmbd          

udp        0      0 192.168.2.255:138           0.0.0.0:*                            


  3384/nmbd          

udp        0      0 192.168.2.199:138           0.0.0.0:*                            


  3384/nmbd          

udp        0      0 0.0.0.0:138                 0.0.0.0:*                            


  3384/nmbd          


配置文件/etc/samba.smb.cnf文件中的一些内容,(了解)

SAMBA服务器_SAMBA服务器_02


[root@localhost ~]# setenforce 0

[root@localhost ~]# service iptables stop

iptables: Flushing firewall rules:                         [  OK  ]

iptables: Setting chains to policy ACCEPT: filter          [  OK  ]

iptables: Unloading modules:                               [  OK  ]

[root@localhost ~]# vim /etc/samba/smb.conf

[root@localhost ~]# service smb restart

Shutting down SMB services:                                [  OK  ]

Starting SMB services:                                     [  OK  ]

然后我们就可以在测试机上搜索计算机,如果搜索不到还可以尝试unc路径

SAMBA服务器_cifs_03

unc路径结果

SAMBA服务器_SAMBA服务器_04


执行samba服务端的ip地址绑定:

(在服务机上操作,增加一个临时ip)

[root@localhost ~]# ifconfig eth0:0 192.168.2.188


SAMBA服务器_samba_05


其他地址应该访问不到

SAMBA服务器_cifs_06



其中下一行allow hosts是限制来源主机的,而不是目标主机地址

SAMBA服务器_cifs_07


samba作为单独的服务器运行时在安全上的5个级别


share 匿名

user  身份验证   本机samba的账号库

server  身份验证   别的samba  server

domain   身份验证    dc  

ads     此时samba服务器本身就是一个域控制器

在samba服务器中本地和网络权限冲突时,取两者的最小权限


案例简介

【共享名称】

path=物理路径

权限 {网络权限}

例子

共享名 public

物理路径  /abc  

匿名访问  ro

张三

共享名   smbzs

物理路径  /tmp/zhangsan

张三  rw

他人不允许访问

李四

共享名   smbls

物理路径  /tmp/lisi

李四    rw

他人不允许访问

linux  smb  client

smaba-client

smbclient   -L //服务器地址或者名称

smbclient   //服务器地址或者名称/共享名称   -U   samba账号名称


当我们以user级别建立samba服务器时,samba账号库和本地用户是同一个库,必须先由本地账号产

生samba账号


[root@localhost samba]# mkdir -pv /abc

mkdir: created directory `/abc'

[root@localhost samba]# mkdir -pv /tmp/zhangsan

mkdir: created directory `/tmp/zhangsan'

[root@localhost samba]# mkdir -pv /tmp/lisi

mkdir: created directory `/tmp/lisi'

[root@localhost samba]# useradd zhangsan

[root@localhost samba]# useradd lisi

[root@localhost samba]# chown zhangsan.zhangsan /tmp/zhangsan

[root@localhost samba]# chown lisi.lisi /tmp/lisi


[root@localhost samba]# touch /abc/f1.pub

[root@localhost samba]# vim /etc/samba/smb.conf


SAMBA服务器_cifs_08


[root@localhost samba]# testparm      #测试参数是否正确

Load smb config files from /etc/samba/smb.conf

rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)

Processing section "[homes]"

Processing section "[printers]"

Processing section "[public]"

Processing section "[smbzs]"

Processing section "[smbls]"

Loaded services file OK.

Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions  #回车还可以查看具体配置


以sambapasswd产生samba账号库

[root@localhost samba]# service smb restart

Shutting down SMB services:                                [  OK  ]

Starting SMB services:                                     [  OK  ]

[root@localhost samba]# smbpasswd -a zhangsan

New SMB password:

Retype new SMB password:

Added user zhangsan.

[root@localhost samba]# smbpasswd -a lisi

New SMB password:

Retype new SMB password:

Added user lisi.


测试,并且public目录是只读的,张三,登录

SAMBA服务器_samba_09


所在目录,正常

SAMBA服务器_SAMBA服务器_10


public,只读权限

SAMBA服务器_SAMBA服务器_11


家目录权限,可读可写正常


SAMBA服务器_cifs_12

lisi测试

SAMBA服务器_cifs_13

SAMBA服务器_samba_14



所在的组,和配置文件描述一致

SAMBA服务器_SAMBA服务器_15


将服务器共享文件映射到本地盘符中


SAMBA服务器_samba_16

先net share再net use


SAMBA服务器_SAMBA服务器_17

本地直接管理界面

SAMBA服务器_SAMBA服务器_18

以Linux作为客户端


[root@localhost ~]# smbclient -L \\192.168.2.199

Enter root's password:

Anonymous login successful

Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-151.el6]


Sharename       Type      Comment

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

public          Disk      this is a public directory

smbzs           Disk      this is zhangsan's share

smbls           Disk      this is lisi's share

IPC$            IPC       IPC Service (Samba Server Version 3.6.9-151.el6)

Microsoft_XPS_Document_Writer:1 Printer   Microsoft XPS Document Writer

Anonymous login successful

Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-151.el6]


Server               Comment

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

LOCALHOST            Samba Server Version 3.6.9-151.el6


Workgroup            Master

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

MSHOME               AAA

MYGROUP              LOCALHOST

WORKGROUP            NUO-5CA344EAA2E



[root@localhost ~]# smbclient //192.168.2.199/smbzs -U zhangsan

Enter zhangsan's password:

Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-151.el6]

smb: \> help                 #tcp 的ftp命令

?              allinfo        altname        archive        blocksize      

cancel         case_sensitive cd             chmod          chown          

close          del            dir            du             echo          

exit           get            getfacl        geteas         hardlink      

help           history        iosize         lcd            link          

lock           lowercase      ls             l              mask          

md             mget           mkdir          more           mput          

newer          open           posix          posix_encrypt  posix_open    

posix_mkdir    posix_rmdir    posix_unlink   print          prompt        

put            pwd            q              queue          quit          

readlink       rd             recurse        reget          rename        

reput          rm             rmdir          showacls       setea          

setmode        stat           symlink        tar            tarmode        

translate      unlock         volume         vuid           wdel          

logon          listconnect    showconnect    ..             !            

smb: \>  quit


将samba服务器上的共享文件挂载到本地盘符:

[root@localhost ~]# setenforce 0

[root@localhost ~]# service iptables stop

iptables: Flushing firewall rules:                         [  OK  ]

iptables: Setting chains to policy ACCEPT: filter          [  OK  ]

iptables: Unloading modules:                               [  OK  ]

[root@localhost ~]# mount //192.168.2.199/smbzs /mnt/zhangsan/ -o username=zhangsan,password='123'

[root@localhost ~]# mount

/dev/sda2 on / type ext4 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")

/dev/sda1 on /boot type ext4 (rw)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

vmware-vmblock on /var/run/vmblock-fuse type fuse.vmware-vmblock (rw,nosuid,nodev,default_permissions,allow_other)

sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

nfsd on /proc/fs/nfsd type nfsd (rw)

//192.168.2.199/smbzs on /mnt/zhangsan type cifs (rw,username=zhangsan,password=123)


[root@localhost ~]# umount /mnt/zhangsan

[root@localhost ~]# mount

/dev/sda2 on / type ext4 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")

/dev/sda1 on /boot type ext4 (rw)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

vmware-vmblock on /var/run/vmblock-fuse type fuse.vmware-vmblock (rw,nosuid,nodev,default_permissions,allow_other)

sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

nfsd on /proc/fs/nfsd type nfsd (rw)

[root@localhost ~]# vim /etc/fstab

SAMBA服务器_SAMBA服务器_19



SAMBA服务器_SAMBA服务器_20

注意语法的格式,以上为常犯错误。。。


SAMBA服务器_samba_21









[root@localhost ~]# mount -a

mount: block device //192.168.2.199/smbzs/ is write-protected, mounting read-only

mount: cannot mount block device //192.168.2.199/smbzs/ read-only

[root@localhost ~]# chkconfig smb on

[root@localhost ~]# chkconfig nmb on


[root@localhost ~]# vim /etc/fstab

SAMBA服务器_cifs_22


[root@localhost ~]# mount -a

[root@localhost ~]# mount

/dev/sda2 on / type ext4 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")

/dev/sda1 on /boot type ext4 (rw)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

vmware-vmblock on /var/run/vmblock-fuse type fuse.vmware-vmblock (rw,nosuid,nodev,default_permissions,allow_other)

sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

nfsd on /proc/fs/nfsd type nfsd (rw)

//192.168.2.199/smbzs on /mnt/zhangsan type cifs (rw,username=zhangsan,password=123)


[root@localhost ~]# vim /etc/file

SAMBA服务器_samba_23


[root@localhost ~]# chmod 600 /etc/file

[root@localhost ~]# mount

/dev/sda2 on / type ext4 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")

/dev/sda1 on /boot type ext4 (rw)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

vmware-vmblock on /var/run/vmblock-fuse type fuse.vmware-vmblock (rw,nosuid,nodev,default_permissions,allow_other)

sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

nfsd on /proc/fs/nfsd type nfsd (rw)

//192.168.2.199/smbzs on /mnt/zhangsan type cifs (rw,username=zhangsan,password=123)

正常挂载

SAMBA服务器_cifs_24

开机正常挂载

SAMBA服务器_samba_25