Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通讯协议,它为局域网内的不一样计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机经过该协议能够访问服务器上的共享文件系统、打印机及其余资源。经过设置"NetBIOS over TCP/IP"使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。vim
简单来讲,Samba是实现Windows和Linux跨平台文件共享的;Samba有两个守护进程,分别是smbd和nmbd;安全
smb:监听tcp 139 445端口,实现档案共享、用户验证等;服务器
nmb:监听udp137和138端口,实现netBIOS解析,处理浏览共享等网络
Linux上要实现Samba须要如下套件dom
Samba 实现服务tcp
samba-client Linux客户端ide
cifs-utils 实现跨平台访问工具
环境中是否已安装Samba及相关套件spa
[root@SAMBA ~]# rpm -qa samba samba-client cifs-utilsunix
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安装,自动解决依赖关系;
主配置文件:
/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
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