课程目标
- samba服务器的应用场景及特点
- samba服务器的搭建与配置
- 基于用户名/密码的企业综合案例
- SMB(Server Message Block)协议实现文件共享,也称CIFS(Common Internet File System)
- 是Windows和Unix系统之间共享文件的一种协议
- 客户端主要是Windows;支持多节点同时挂载以及并发写入
- 主要用于Windows和Linux下的文件共享、打印共享
- 实现匿名与本地用户文件共享
- smbd进程 控制发布共享目录与权限、负责文件传输 TCP 139 455
- nmbd进程 用于名称解析netbios UDP 137 138;基于NETBIOS协议获得计算机名称--->解析为相应IP地址,实现信息通讯。
NetBIOS是Network Basic Input/Output System的简称,一般指用于局域网通信的一套API
配置文件
[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
Windows server 2008 ---> *.dp (数据库文件)
Linux Oracle
Windows server : xshell---> Linux 导入导出