samba简介

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置NetBIOS over TCP/IP使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。


Samba配置

Samba启动脚本:

/etc/rc.d/init.d/nmb    #实现netbios协议

/etc/rc.d/init.d/smb    #实现cifs协议

主配置文件:

    /etc/smb/samba.conf

认证用户:

    帐号:都是系统用户,/etc/passwd

    密码:samba服务自有密码文件,

将系统用户添加为samba的命令:smbpsswd

Smbpasswd:

   -asys_name:添加系统用户为samba用户

   -d:禁用

   -e:启用

   -x:删除

 

添加samba用户

[root@Server ~]# useradd smbuser1
[root@Server ~]# smbpasswd -a smbuser1
New SMB password:
Retype new SMB password:
Added user smbuser1.

这个时候samba的共享用户就添加好了,可以使用Windows或Linux客户端进行测试了,访问的位置是用户的家目录。

 

自定义共享:

[share_name]
Commont=Comment String        #共享描述
Path=/path/to/share_directory    #共享路径
Guest ok={yes|on}            #是否允许来宾帐号访问
Browseable={yes|no}           #如果用户没有权限访问,是否可以浏览
Public={yes|no}              #是否公开
Read only ={yes|no}            #只读,不可写入和删除
Writable ={yes|no}             #可写  同时也可以删除
Write list =+GROUP_NAME          #定义那个用户可以写入 @组名  可以定义那个组可以写入
Valid  users =                #可以设置运行那个用户访问   白名单
Invalid  users =               #置那个用户不可以访问     黑名单
                                  #如果同时黑白名单则使用白名单生效

 

Smb创建共享:

[root@Server ~]# vim /etc/samba/smb.conf
  [shared]
     comment = My shared Testing.
     path = /shared/samba
     read only = No
     guest ok = Yes

创建目录,并对共享用户赋予读写执行权限

[root@Server ~]# mkdir -p  /shared/samba
[root@Server ~]# setfacl -m u:smbuser1:rwx/shared/samba/

重启服务

[root@Server ~]# service nmb restart;service smbrestart

Client端访问共享

[root@client ~]# smbclient //172.16.4.100/shared -Usmbuser1
Enter smbuser1's password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba3.6.23-12.el6]
smb: \> ls
  .                                   D        0 Thu Apr 23 22:11:22 2015
  ..                                  D        0 Thu Apr 23 22:11:22 2015
 
       40061blocks of size 524288. 37390 blocks available
smb: \> lcd /etc/
smb: \> put fstab
putting file fstab as \fstab (99.9 kb/s) (average99.9 kb/s)
smb: \> ls
  .                                   D        0 Thu Apr 23 22:16:01 2015
  ..                                  D        0 Thu Apr 23 22:11:22 2015
  fstab                               A      921 Thu Apr 23 22:16:01 2015
 
       40061blocks of size 524288. 37390 blocks available

 

samba配置示例:

建立samba共享,共享目录为/data,要求:

    1)共享名为shared,工作组为magedu;

    2)添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名;

    3)添加samba用户gentoo,centos和ubuntu,密码均为“mageedu”;

    4)此samba共享shared仅允许develop组具有写权限,其他用户只能以只读方式访问;

    5)此samba共享服务仅允许来自于172.16.0.0/16网络的主机访问;

 

创建共享目录

[root@samba ~]# mkdir /data
[root@samba ~]# chmod 777 /data/

创建相关用户

[root@samba ~]# groupadd develop
[root@samba ~]# useradd -G develop gentoo
[root@samba ~]# useradd -G develop centos
[root@samba ~]# useradd ubuntu
[root@samba ~]# passwd gentoo
[root@samba ~]# passwd centos
[root@samba ~]# passwd ubuntu

创建samba用户

[root@samba ~]# smbpasswd -a gentoo
[root@samba ~]# smbpasswd -a centos
[root@samba ~]# smbpasswd -a ubuntu

设置共享

workgroup = magedu
hosts allow = 172.16.
[shared]
 comment =test
 browseable =yes
 path = /data
 guest ok =yes
 read only =yes
 write list =+develop

重启服务

[root@samba ~]# service nmb restart;service smbrestart

验证:使用ubuntu用户访问测试,无法上传文件

[root@client ~]# smbclient //172.16.4.100/shared -Uubuntu
Enter ubuntu's password:
Domain=[MAGEDU] OS=[Unix] Server=[Samba3.6.23-12.el6]
smb: \> lcd /etc/
smb: \> put fstab
NT_STATUS_ACCESS_DENIED opening remote file \fstab
smb: \> ls
  .                                   D        0  FriApr 24 20:18:59 2015
  ..                                 DR        0 Fri Apr 24 20:18:59 2015
 
       40061blocks of size 524288. 37415 blocks available
使用gentoo用户访问,可以上传文件
[root@client ~]# smbclient //172.16.4.100/shared -Ugentoo
Enter gentoo's password:
Domain=[MAGEDU] OS=[Unix] Server=[Samba3.6.23-12.el6]
smb: \> lcd /etc/
smb: \> put fstab
putting file fstab as \fstab (243.9 kb/s) (average243.9 kb/s)
smb: \> ls
  .                                   D        0 Fri Apr 24 20:46:18 2015
  ..                                 DR        0 Fri Apr 24 20:18:59 2015
  fstab                               A      999 Fri Apr 24 20:46:18 2015
 
       40061blocks of size 524288. 37415 blocks available

 

Samba挂载Windows共享的文件夹

查看Windows客户端的远程共享

语法:smbclient L HOST U  USERNAME

示例:查看172.16.4.230的共享文件夹

[root@Server ~]# smbclient -L 172.16.4.230 -Uximenfeibing
Enter ximenfeibing's password:
Domain=[ximenfeibing-PC] OS=[Windows 7 Ultimate7600] Server=[Windows 7 Ultimate 6.1]
 
    Sharename       Type     Comment
    ---------       ----     -------
    ADMIN$          Disk      远程管理
    IPC$            IPC       远程 IPC
    sambatest       Disk                #这个是自己创建的共享
session request to 172.16.4.230 failed (Called namenot present)
session request to 172 failed (Called name notpresent)
session request to *SMBSERVER failed (Called namenot present)
NetBIOS over TCP disabled -- no workgroup available

 

交互式访问Windows共享

语法:smbclient //SERVER/share_name U USERNAME

示例:访问172.16.4.230共享的sambtest文件夹

[root@Server ~]# smbclient //172.16.4.230/sambatest-U ximenfeibing
Enter ximenfeibing's password:
Domain=[ximenfeibing-PC] OS=[Windows 7 Ultimate7600] Server=[Windows 7 Ultimate 6.1]
smb: \> ls
  .                                   D        0 Mon May  4 19:39:43 2015
  ..                                  D        0 Mon May  4 19:39:43 2015
 test.txt                           A        0  Mon May 4 19:39:41 2015
 
       34017blocks of size 8388608. 29721 blocks available
smb: \> lcd /etc/     #切换目录
smb: \> put fstab     #上传数据
putting file fstab as \fstab (179.9 kb/s) (average179.9 kb/s)
smb: \> ls
  .                                   D        0 Mon May  4 19:50:25 2015
  ..                                  D        0 Mon May  4 19:50:25 2015
  fstab                               A      921 Mon May  4 19:50:25 2015
 test.txt                           A        0  Mon May 4 19:39:41 2015
 
       34017blocks of size 8388608. 29721 blocks available

 

挂载Windows共享

语法:mount -t cifs //SERVER/shared_name  /mount_point-ousername=USERNAME,password=PASSWORD

示例:挂载Windows的sambatest到本地的/mnt目录下

[root@Server ~]# mount -t cifs//172.16.4.230/sambatest /mnt/ -o username=ximenfeibing
Password:
[root@Server ~]# ll /mnt/
total 4
-rwxr-xr-x 0 root root 921 May  4  2015fstab
-rwxr-xr-x 0 root root   0 May 4  2015 test.txt
[root@Server ~]# df -H
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg0-root   22G 327M   20G   2% /
tmpfs                 515M     0 515M   0% /dev/shm
/dev/sda1            199M   29M 160M  16% /boot
/dev/mapper/vg0-usr    11G 2.1G  7.9G  22% /usr
/dev/mapper/vg0-var    22G 262M   20G   2% /var
//172.16.4.230/sambatest
                      286G   37G 250G  13% /mnt