1. Samba

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

简单来说,Samba是实现Windows和Linux跨平台文件共享的;Samba有两个守护进程,分别是smbd和nmbd;

smb:监听tcp 139 445端口,实现档案共享、用户验证等;

nmb:监听udp137和138端口,实现netBIOS解析,处理浏览共享


Linux上要实现Samba需要以下套件

Samba         实现服务

samba-client    Linux客户端

cifs-utils        实现跨平台访问



环境检查


  1. 环境中是否已安装Samba及相关套件

[root@SAMBA ~]# rpm -qa samba samba-client cifs-utils

samba-client-3.6.23-12.el6.x86_64

cifs-utils-4.8.1-19.el6.x86_64


2)  安装samba

经过检查,samba-client和cifs-utils已经默认安装(如果没有安装,安装即可),所以安装samba主服务即可;

[root@SAMBA ~]# yum -y install samba

采用yum安装,自动解决依赖关系;


samba主配置文件介绍


主配置文件:

/etc/samb/smb.conf

默认配置:

[root@SAMBA ~]# grep -vE "^#|^$|^;" /etc/samba/smb.conf


[global]


workgroup = MYGROUP                          //samba全局设置

server string = Samba Server Version %v





# logs split per machine

log file = /var/log/samba/log.%m

# max 50KB per log file, then rotate

max log size = 50


security = user

passdb backend = tdbsam





# the login script name depends on the machine name

# the login script name depends on the unix user used

# disables profiles support by specifing an empty path









load printers = yes

cups options = raw

#obtain list of printers automatically on SystemV


[homes]                                                    //用户共享目录设置

comment = Home Directories

browseable = no

writable = yes


[printers]                                                  //打印设置

comment = All Printers

path = /var/spool/samba

browseable = no

guest ok = no

writable = no

printable = yes


另外该配置文件还提供了共享设置案例,只不过用;注释掉了

[root@SAMBA ~]# grep -n  "^;" /etc/samba/smb.conf |tail -n 20

243:;   store dos attributes = yes

252:;   valid users = %S//指定授权访问用户或用户组

253:;   valid users = MYDOMAIN\%S

264:;   [netlogon]//指定共享的自定义标识

265:;   comment = Network Logon Service//指定共享目录的说明文字

266:;   path = /var/lib/samba/netlogon//指定共享的实际路径

267:;   guest ok = yes//相当于public = yes ,所有人可用

268:;   writable = no//与read only相反,是否可写

269:;   share modes = no

274:;   [Profiles]

275:;   path = /var/lib/samba/profiles

276:;   browseable = no//设置为隐藏

277:;   guest ok = yes

282:;   [public]

283:;   comment = Public Stuff

284:;   path = /home/samba

285:;   public = yes

286:;   writable = yes

287:;   printable = no

288:;   write list = +staff


常见配置语句解析

workgroup: 工作组名称

server string:服务器描述

security:    安全级别,user为要求用户验证

comment:   对此共享目录的说明文字

path:       共享目录的实际位置

browseable: 是否可见,no为隐藏

public:      是否所有人可见

writable:  是否可写,与read only相反


除了以上说明之外,还可以采用 man 5 smb.conf来帮助



账号说明


SAMBA使用可以采用匿名使用,可认证使用,具体采用方式由主配置文件中security决定;

samba一共有5种,分别是share、user、server、domain、ads。
1.share:所有人都可以访问这台samba服务器(不需要输入用户名和密码)。
2.user:需要输入有效的用户名和密码才能访问samba服务器(身份验证由samba服务器负责)。
3.server:与user相同,只是将身份验证交由指定的另一台samba服务器负责。
4.domain:将身份验证交由域控制器负责。
5.ads:将身份验证交由域控制器负责(比domain更为安全一点)。



共享访问


Windows访问


Linux访问

smbclient访问

smbclient L 服务器地址

smbclient //服务器地址/共享名

smbclient U 用户名 //服务器地址/共享名



账号管理


账号设置

账号名称必须存在于系统中,但采用独立的密码,账号文件存在于/var/lib/samba/private/passwd.tdb;访问共享时,采用用户和密码登陆,权限取决于对应的系统账号的权限;


账号管理工具

pdbedit 工具

-a 指定系统账户为samba账户,并设置密码;

-L 查看共享账号信息

-x 删除共享账号


案例解析

根目录下/samba为共享目录,目录内有music、carton、MV目录,其中分别对应各类档案,供上传和下载;其中vip账户woon可以写;

1)设置环境

[root@SAMBA samba]# ls

carton  music  MV

2)配置共享

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

[music]

path = /samba

public = yes

read only = yes

write list = woon


3) 添加共享账户

[root@SAMBA samba]# pdbedit -a woon

[root@SAMBA samba]# useradd samba

[root@SAMBA samba]# pdbedit -a samba

[root@woon samba]# setfacl -d -m u:woon:rwx /samba/

4)重启samba服务;

service smb restart

service nmb estart



实验验证


  1. woon用户验证

[root@woon ~]# ls -al /etc/ >> /samba/ls.log

[root@woon ~]# rm -rf /samba/install.log

[root@woon ~]# smbclient -U woon //192.168.239.128/music

Enter woon's password:

Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-12.el6]

smb: \> ls

.                                   D        0  Tue Mar  3 17:48:13 2015

..                                 DR        0  Tue Mar  3 17:32:03 2015

MV                                  D        0  Tue Mar  3 17:38:00 2015

music                               D        0  Tue Mar  3 17:38:59 2015

ls.log                                   15220  Tue Mar  3 17:48:03 2015

acl                                 D        0  Tue Mar  3 17:34:37 2015

carton                              D        0  Tue Mar  3 17:33:47 2015


33788 blocks of size 262144. 14918 blocks available

smb: \> put install.log

putting file install.log as \install.log (8637.9 kb/s) (average 8638.1 kb/s)

smb: \> ls

.                                   D        0  Tue Mar  3 17:48:39 2015

..                                 DR        0  Tue Mar  3 17:32:03 2015

MV                                  D        0  Tue Mar  3 17:38:00 2015

music                               D        0  Tue Mar  3 17:38:59 2015

ls.log                                   15220  Tue Mar  3 17:48:03 2015



Linux访问Windows共享文件夹

mount -t smbfs -o username=user,iocharset=GB2312 -l //192.168.1.100/test /mnt/test