samba服务
课程目标
- samba服务器的应用场景及特点
- samba服务器的搭建与配置
- 基于用户名/密码的企业综合案例
一、samba介绍配置
- SMB(Server Message Block)协议实现文件共享,也称CIFS(Common Internet File System)
- 是Windows和Unix系统之间共享文件的一种协议
- 客户端主要是Windows;支持多节点同时挂载以及并发写入
- 主要用于Windows和Linux下的文件共享、打印共享
- 实现匿名与本地用户文件共享
samba服务的主要进程
- smbd进程 控制发布共享目录与权限、负责文件传输 TCP 139 455
- nmbd进程 用于名称解析netbios UDP 137 138;基于NETBIOS协议获得计算机名称--->解析为相应IP地址,实现信息通讯。
NetBIOS是Network Basic Input/Output System的简称,一般指用于局域网通信的一套API
二、samba服务器搭建
配置文件
[root@server ~]# yum -y install samba
[root@server ~]# rpm -qa |grep ^samba
samba-winbind-3.6.9-164.el6.x86_64
samba4-libs-4.0.0-58.el6.rc4.x86_64
samba-winbind-clients-3.6.9-164.el6.x86_64
samba-3.6.9-164.el6.x86_64
samba-client-3.6.9-164.el6.x86_64
samba-common-3.6.9-164.el6.x86_64
[root@server ~]# service smb start
Starting SMB services: [ OK ]
[root@server ~]# service nmb start
Starting NMB services: [ OK ]
测试验证
[root@client ~]# which smbclient
/usr/bin/smbclient
[root@client ~]# rpm -qf /usr/bin/smbclient
samba-client-3.6.9-164.el6.x86_64
查看配置文件
/etc/samba/smb.conf
[global] 全局选项
workgroup = MYGROUP 定义samba服务器所在的工作组
server string = Samba Server Version %v smb服务的描述
log file = /var/log/samba/log.%m 日志文件
max log size = 50 日志的最大大小kb
security = user 认证模式:share匿名|user用户密码|server外部服务器用户密码
passdb backend = tdbsam 密码格式
load printers = yes 加载打印机
cups options = raw 打印机选项
[homes] 局部选项(共享名称) (默认共享本地用户家目录)
comment = Home Directories 描述
browseable = no 隐藏共享名称
writable = yes 可读可写
[printers] 共享名称
comment = All Printers 描述
path = /var/spool/samba 本地的共享目录
browseable = no 隐藏
guest ok = no ---> public = no 需要账号密码访问(匿名用户不允许访问)
writable = no ---> read only = yes 不可写
printable = yes ---> 打印选项
客户端工具如何使用?
[root@client ~]# smbclient -L //10.1.1.2 //查看samba服务器的共享名
Enter root's password: 回车 //(匿名用户查看)
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-164.el6]
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba Server Version 3.6.9-164.el6)
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-164.el6]
Server Comment
--------- -------
SERVER Samba Server Version 3.6.9-164.el6
Workgroup Master
--------- -------
MYGROUP SERVER
在server端添加本地用户zhangsan
将zhangsan本地用户加入到smb数据库
[root@server ~]# smbpasswd -a zhangsan
New SMB password:
Retype new SMB password:
Added user zhangsan.
在客户端测试
[root@client ~]# smbclient //10.1.1.2/zhangsan -U zhangsan
Enter zhangsan's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-164.el6]
smb: \> ls
需求:让匿名用户访问/samba/share共享资源,本地用户不能访问
[anon_share]
path=/samba/share
public = yes
writable = yes
[root@server ~]# service smb restart
测试:
[root@client ~]# smbclient -L 10.1.1.2
Enter root's password:
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-164.el6]
Sharename Type Comment
--------- ---- -------
anon_share (列出该共享标签名)
[root@client ~]# smbclient //10.1.1.2/anon_share //进入该共享标签
Enter root's password:
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-164.el6]
smb: \> ls
匿名用户写文件被拒绝,在server端修改/samba/share的权限
[root@server share]# ll -d
drwxr-xr-x 2 root root 4096 Apr 23 21:06 .
[root@server share]# chmod o+w /samba/share/
另外匿名用户不需要加入samba数据库
让zhangsan访问/anon_share,本地用户可以访问,匿名用户访问的开关可控制
[root@client ~]# smbclient //10.1.1.2/anon_share -U zhangsan
Enter zhangsan's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-164.el6]
smb: \> ls
总结:
1. samba服务默认是基于用户名和密码认证的服务
2. samba服务的用户必须是samba服务器上存在的用户,密码必须是samba数据库里的密码
3. 对于发布的共享资源,默认情况下本地用户是可以访问的,匿名用户是否能访问看是否打开public=yes
samba也可以用挂载的方式在客户端对共享目录进行操作
[root@client ~]# mount
mount mount.fuse mount.nfs4 mountstats
mount.cifs mount.nfs mountpoint mount.tmpfs
[root@client ~]# mount.cifs -o user=zhangsan,pass=123 //10.1.1.2/anon_share /u01
[root@client ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 16G 3.7G 12G 25% /
tmpfs 491M 72K 491M 1% /dev/shm
/dev/sda1 194M 30M 155M 16% /boot
/dev/sda3 2.0G 37M 1.8G 2% /home
/dev/sr0 4.2G 4.2G 0 100% /media
//10.1.1.2/anon_share 16G 3.8G 12G 26% /u01
已经挂载好了
[root@client ~]# cd /u01
[root@client u01]# ls
aaa
[root@client u01]# touch 1.txt
[root@client u01]# ls
1.txt aaa
在客户端操作,结果都会在server端出现
[root@server share]# ls
1.txt aaa
Windows访问,比较简单,在文件资源管理器我的电脑那一栏输入\\10.1.1.2,回车后输入zhangsan和密码123,即可在该目录里进行创建文件夹等操作。
访问控制:
控制读写权限
writable = yes/no
readonly = yes/no
如果资源可写,但只允许某些用户可写,其他都只读
write_list = admin,root,@staff(用户组)
read_list = mary,@students
控制访问对象
valid_users = tom mary
invalid_users = tom
注意:这两个选项只能存在其中一个
网络访问控制
host_deny = 192.168.0 拒绝某个网段
host_allow = 192.168.0.254 允许某个IP
hosts_deny = all 拒绝所有
hosts_allow = 192.168.0. EXCEPT 192.168.0.254 允许某个网段,但拒绝某个IP
注意:deny和allow同时存在,优先allow
综合案例:
公司:itcast,有3个部门,cw,rs,sc和一个公共区pub,每个部门的资料根据如下需求进行共享;
1、财务部门/samba/itcast_cw,cw01财务总监有可读可写权限,财务员工可读,boss01对其有管理权限
2、市场部门/samba/itcast_sc,市场部门员工可读可写,公司员工可以查询资料,boss02对其有管理权限
3、HR部门/samba/itcast_rs,rs01HR总监可读写,HR部门员工可对财务部查询,vip用户可以查询
4、休息区/samba/itcast_pub 自己管理自己的文件
步骤:
1.在服务器上创建相应目录,来保存不同部门资料
mkdir /smb/{cw,rs,sc,pub} -p
2.创建相应的用户组(方便管理)
groupadd itcast
groupadd cw
groupadd rs
groupadd sc
useradd cw01 -g cw -G itcast
useradd cw02 -g cw -G itcast
useradd rs01 -g rs -G itcast
useradd rs02 -g rs -G itcast
useradd sc01 -g sc -G itcast
useradd sc02 -g sc -G itcast
useradd boss01 -g itcast
useradd boss02 -g itcast
useradd vip
3.修改相应目录的权限
4.搭建samba服务,来共享不同部门的资料
vim /etc/samba/smb.conf
...
[cw]
path=/smb/cw
valid_users = boss01,@cw,@rs
write_list = cw01,boss01
[rs]
path=/smb/rs
valid_users = vip,@rs
write_list = rs01
[sc]
path=/smb/sc
valid_users = boss02,@itcast
write_list = @sc,boss02
[pub]
path=/smb/pub
valid_users = @itcast
writable = yes
5.将用户加入到smb数据库里
smbpasswd -a cw01
......
6.测试验证
Linux:
Windows:
总结:
- ftp 局域网 安全
- nfs 局域网 挂载访问 mount.nfs
- samba 局域网 直接服务(smbclient) | 挂载访问(mount.cifs)大部分客户端是Windows